পৃষ্ঠার ধরণ এবং পৃষ্ঠা নির্ধারণ করুন


11

আমার একটি নতুন কাজ আছে যেখানে আমি এখন কঠোরভাবে ম্যাজেন্টোতে কাজ করি। ম্যাগেন্তোর সাথে আমার কোনও পূর্ব অভিজ্ঞতা নেই তাই এ পর্যন্ত কমপক্ষে বলতে পারা চ্যালেঞ্জ!

আমি যে সংযোজনটি তৈরি করছি তার সংক্ষেপে আমাকে ব্যাখ্যা করতে দিন।

এটি আমাদের একটি পপআপ / মোডাল উইন্ডো প্রদর্শন করার অনুমতি দেবে। মোডাল এর HTML সামগ্রী সংরক্ষণ করা হবে
একটিStatic Block


অ্যাডমিন পৃষ্ঠা

তাই এডমিন প্যানেল অধীনে একটি নতুন ট্যাব গঠিত System/Confuration/নতুন ট্যাব

প্রশাসক প্যানেল আপনাকে এই বিভাগগুলির জন্য ডিফল্ট নতুন ট্যাব পৃষ্ঠায় একটি ড্রপ ডাউন তালিকায় নির্বাচন করতে দেয় Static Block...

HOME PAGEবা HOME PAGE w/Items in Shopping Cart
ALL CATEGORY PAGESবা ALL CATEGORY PAGES w/Items in Shopping Cart
ALL PRODUCTS PAGESবা ALL PRODUCTS PAGES w/Items in Shopping Cart
ALL CMS PAGESবা ALL CMS PAGES w/Items in Shopping Cart
SHOPPING CART PAGEবা SHOPPING CART PAGE w/Items in Shopping Cart


ওভার-রাইডস ডিফল্ট

পরবর্তী প্রকৃত সিএমএস , ক্যাটাগরি এবং প্রোডাক্ট পৃষ্ঠাগুলি অ্যাডমিন প্যানেল পৃষ্ঠাতে একই সেটিংসের অনুমতি দেয়, এগুলি বাদ দিয়ে তারা আপনাকে STATIC BLOCKপ্রতি আইটেম ভিত্তিতে একটি সেট সেট করার অনুমতি দেয় এবং আমাদের উপরের প্রশাসকের সেটিংসে যে ডিফল্ট সেটিংস থাকে over ।


এখনও পর্যন্ত আমরা এক্সটেনশনের কাজটি প্রশাসকের পক্ষে করেছি। আমাদের কাছে প্রতিটি বিভাগ ... পণ্য, বিভাগ, সিএমএস এবং কনফিগারেশন পৃষ্ঠাটির জন্য সমস্ত অ্যাডমিন ট্যাব রয়েছে।

পরবর্তী পদক্ষেপটি একই এক্সটেনশনে Static Blockযোগ করা এবং পৃষ্ঠাটিতে একটি সন্নিবেশ করা হবে make এটি এর Static Blockজন্য দায়ী ... Static Blockউপরোক্ত অঞ্চলগুলিতে সেট করা সেটিংসের উপর ভিত্তি করে প্রতিটি পৃষ্ঠায় সঠিক দেখাচ্ছে .....

  • আমরা যে পৃষ্ঠাটিতে রয়েছি এবং পৃষ্ঠার ধরণ (সেমি, পণ্য, বাড়ি, বিভাগ) নির্ধারণ করা হচ্ছে
  • এরপরে এটি উল্লিখিত অঞ্চলে সেট করা সমস্ত কাস্টম সেটিংস পড়তে হবে।
  • যদি এটি নির্ধারিত হয় যে আমরা কোনও Categoryপৃষ্ঠায় আছি, তবে আমাদের আসল নির্দিষ্ট বিভাগটি পেতে হবে। উদাহরণস্বরূপ Category 3। তারপরে আমরা দেখব যে সেই নির্দিষ্ট বিভাগের জন্য একটি নির্দিষ্ট সেটিংস রয়েছে কিনা। যদি এটি বলে যে Enabledআমরা তখন Static Blockসেই বিভাগের জন্য কোনটি সংরক্ষিত আছে তা সন্ধান করব এবং এটি আমাদের Static Blockপৃষ্ঠায় মূলটিতে দেখাব !
  • উপরের নির্দিষ্ট বিভাগটি যদি Disabledআমাদের হিসাবে সেট করা থাকে Modal Windowতবে আমরা মডেলের আরও বিশ্বব্যাপী সেটিংসে আরও উঁচুতে দেখব এবং দেখব যে কোনও মডেল সমস্ত বিভাগের জন্য সক্ষম করা আছে। যদি হ্যাঁ হয়, তবে আমরা দেখতে পাবো যেটি Static Blockসমস্ত বিভাগে দেখানো হবে।
  • এগুলি ছাড়াও, এটি প্রতিটি প্রধান পৃষ্ঠার প্রকারের (পণ্য, বিভাগ, সেমি, বাড়ি, কার্ট) এর জন্য এই প্রক্রিয়াটি করবে
  • শপিং কার্ট খালি আছে কিনা তাও আমাদের দেখতে হবে। যদি খালি না থাকে ... তাহলে আমাদের উপরের বিষয়টি বিবেচনা করতে হবে যখন ডাব্লিউইউই এই Static Blockপৃষ্ঠার জন্য কোনটি প্রদর্শন করবে তা যাচাই করে যা প্রতিটি সেটিংস Static Blockখালি কার্টের জন্য এবং খালি কার্টের জন্য 1 টি সেট করার অনুমতি দেয় ! (আমি জানি এটি একটি বিশাল কঠোর এবং বৃহত্তর উদ্যোগ গ্রহণযোগ্য তবে আমাদের বেশিরভাগ অ্যাডমিন পক্ষই কাজটি করেছে Static Blockwhich কোন বিশেষ পৃষ্ঠায় কোনটি প্রদর্শন করা উচিত তা নির্ধারণের ক্ষেত্রে সমস্ত অংশকেই বিবেচনা করে এমন অংশটি করা দরকার ।

আমাকে সঠিক দিকে নিয়ে যেতে আমার কাছে আরও কয়েকটি ছোট প্রশ্ন রয়েছে ...

  • আমি কীভাবে আমার Static Blockকোডের মধ্যে (পিএইচপি অংশ) নির্ধারণ করতে পারি যে আমি কোন পৃষ্ঠার টাইপ করছি। যেমন আমি উল্লেখ করেছি যে আমি থাকি কি না তা আমার জানা দরকার .... হোম পেজ , একটি সিএমএস পৃষ্ঠা , একটি ক্যাটাগরি পৃষ্ঠা , একটি পণ্য পৃষ্ঠা , বা শপিং কার্ট পৃষ্ঠা ?
  • পেজ টাইপ ছাড়াও আমার আসল পৃষ্ঠাটি পাওয়া দরকার। সুতরাং আমি যদি প্রোডাক্ট আইডি 1234 এ থাকি তবে সেই নির্দিষ্ট পৃষ্ঠার জন্য আমার সেটিংটি (সেই পৃষ্ঠার জন্য স্ট্যাটিক ব্লক সেট) পেতে সক্ষম হওয়া দরকার।

আমি জানি এটি একটি দীর্ঘ এবং সম্ভবত বিভ্রান্তিকর পোস্ট হয়েছে। আপনি যদি এটিকে এ পর্যন্ত তৈরি করেন তবে এটি পড়তে আপনার সময় দেওয়ার জন্য ধন্যবাদ =)

আপনি যদি আমার প্রশ্নে সহায়তা করতে পারেন তবে প্রতিটি সামান্য অংশ আমাকে শেষ লক্ষ্যের আরও কাছে নিয়ে যাবে


নীচে একটি ফ্লো চার্ট দেওয়া হয়েছে যা পৃষ্ঠাতে কোন স্ট্যাটিক ব্লক প্রবেশ করানো হবে তা নির্ধারণ করতে আমার মডিউলটির কীভাবে কাজ করা দরকার of

এখানে চিত্র বর্ণনা লিখুন


2
আপনি বুঝতে পেরেছেন যে আপনি কার্যকরভাবে কার্যকারিতা পুনরায় তৈরি করেছেন যা Mage_Widgetমডিউলটিতে বিদ্যমান , তাই না?
বেনমার্ক

ঠিক কীভাবে @ বেনমার্কস বলেছে। আইএমও আপনি উইজেটগুলির সুবিধা নেওয়ার চেষ্টা করে এবং সেখান থেকে চলে যাওয়ার চেয়ে আরও ভাল।
ডেভিডালগার

@ বেনমার্কগুলি আমার প্রশ্নে যুক্ত হওয়া ফ্লো চার্টের দিকে তাকিয়ে আপনি কি বলবেন যে এটি এখনও 100% এর সাথে অর্জনযোগ্য Mage_Widget? আমারও
সেদিকে তাকাতে হবে

নং কোর উইজেট ব্লকগুলি আপনার চার্টে নির্দেশিত সংস্থাগুলি বুঝতে পারে না। আপনি এর জন্য কিছু ব্লক যুক্তি চাইছেন।
বেনমার্কস

উত্তর:


12

@ বেনমার্কস কী উত্তর দিয়েছে তা ছাড়াও :

আপনার উল্লেখ করা শর্তগুলির কয়েকটি যাচাই করার জন্য এখানে একটি ছোট কোড দেওয়া হয়েছে:

// Check if it's a CMS page:
$page = Mage::getSingleton('cms/page');
if ($page->getId()) {
    // The current page is a CMS page

    if ($page->getIdentifier() == Mage::getStoreConfig('web/default/cms_home_page')) {
        // The current page is the CMS home page
    }
}

$product = Mage::registry('current_product');
$category = Mage::registry('current_category');
if ($product && $product->getId()) {
    // The current page is a product page.
    // If you only want the main product detail page, also check for 
    // Mage::app()->getFrontController()->getAction()->getFullActionName() == 'catalog_product_view'
    // Be aware that a current_product and a current_category can be set at the same time.
    // In that case the visitor is viewing a product in a category.
} elseif ($category && $category->getId()) {
    // The current page is a category page
    // If you only want the category list page, also check for 
    // Mage::app()->getFrontController()->getAction()->getFullActionName() == 'catalog_category_view'
}

// Check for cart page
if (Mage::app()->getFrontController()->getAction()->getFullActionName() == 'checkout_cart_index') {
    // The current page is the cart
}

কার্টটি খালি রয়েছে কিনা তা পরীক্ষা করতে

$isEmpty = Mage::getSingleton('checkout/session')->getQuote()->getItemsCount() > 0

এছাড়াও আপনি জিজ্ঞাসা করেছিলেন যে আপনি কোনও সিএমএস ব্লকের ভিতরে বর্তমান পৃষ্ঠাটি পরীক্ষা করতে পারেন কিনা ।
এটি সম্ভবত একটি ভাল পদ্ধতির নয় (আপনার প্রথমে সিএমএস ব্লক ব্যবহারের উদ্দেশ্যকে কাস্টম ব্লক অন্তর্ভুক্ত করতে হবে)।
পরিবর্তে প্রথমে বর্তমান পৃষ্ঠাটি পরীক্ষা করা আরও ভাল এবং তারপরে প্রদর্শন করতে সিএমএস ব্লকটি চয়ন করুন choose

সম্পাদনা : মন্তব্যে @ জোসেফের দ্বারা উল্লিখিত হিসাবে ঠিক Mage::app()->getRequest()->getFullActionName()করা Mage::app()->getFrontController()->getAction()->getFullActionName()হয়েছে। ধন্যবাদ!


আপনাকে এত ধন্যবাদ যে এটি আমাকে শুরু করতে সত্যই সহায়তা করতে চলেছে!
জেসনডাভিস

1
কেবলমাত্র লক্ষণীয়: Mage::app()->getRequest()->getFullActionName()একটি কার্ট টেমপ্লেট ব্যবহার করে মারাত্মক ত্রুটি বা কমপক্ষে এটি আমার জন্য ১. 1..০.২. $this->getAction()->getFullActionName()পুরোপুরি কাজ!
জোসেফ লেডি

আহ, হ্যাঁ, আপনি ঠিক পথে আছেন আমার খারাপ! ধন্যবাদ!
বিনাই

এফওয়াইআই, ম্যাগ :: getSingleton ('সেমি / পৃষ্ঠা') -> getId () কন্ট্রোলার_অ্যাকশন_প্রেডিসপ্যাচ ইভেন্টে নাল মান দেয়।
ম্যাজপাইকো

7

আপনি নিতে পারেন প্রচুর পন্থা। আমি <default>লেআউট আপডেট হ্যান্ডেলটির মাধ্যমে আপনার ব্লকটি যুক্ত করার পরামর্শ দেব , যা এটি সমস্ত পৃষ্ঠায় উপলব্ধ হবে। আপনার ব্লকের _prepareLayout()পদ্ধতিতে, আপনি অনুরোধ অবজেক্ট ( $this->getRequest()->getFullActionName()) থেকে বর্তমান সম্পূর্ণ ক্রিয়াকলাপের নামটি পেয়ে এবং প্রসঙ্গটি নির্ধারণের জন্য এটি ব্যবহার করে সুযোগটি নির্ধারণ করতে পারেন ।

পণ্য এবং বিভাগগুলি রেজিস্ট্রিতে নিবন্ধিত হবে। আপনার ব্লকটি লেআউট আপডেট হ্যান্ডলগুলিও দেখতে পারে, যার মধ্যে পণ্যের আইডি বা বিভাগ আইডি হ্যান্ডলগুলি অন্তর্ভুক্ত থাকবে।


3

হোম পৃষ্ঠাটি সনাক্ত করতে, আপনাকে সংখ্যার আইডির পরিবর্তে কনফিগার মানটির সাথে মেলে সনাক্তকারী স্ট্রিং (যেমন "হোম") ব্যবহার করতে হবে:

যদি ($ পৃষ্ঠা-> getIdentifier () == ম্যাজ :: getStoreConfig ('ওয়েব / ডিফল্ট / cms_home_page') {
    // হোম পেজ
}

এখানে আরও কয়েকজন রয়েছেন:

$ fullActionName = Mage :: app () -> getFrontController () -> getAction () -> getFullActionName ();
যদি ('চেকআউট_আম পৃষ্ঠিকা_ইনডেক্স' == $ পূর্ণঅ্যাকশননাম)
    // চেকআউট
}

যদি ('চেকআউট_নেজ_সেসেস' == $ সম্পূর্ণঅ্যাকশননাম)
    // চেকআউট সাফল্য
}

যদি ('গ্রাহক_ অ্যাকাউন্ট_লগিন' == $ পূর্ণঅ্যাকশননাম)
    // প্রবেশ করুন
}

যদি ('গ্রাহক_অ্যাকউন্ট_লগআউটসুসস' == $ পূর্ণঅ্যাকশননাম) {
    // লগআউট সাফল্য
}

যদি ('গ্রাহক_ অ্যাকাউন্ট_ক্রেট' == $ পূর্ণঅ্যাকশননাম) {
    // গ্রাহক অ্যাকাউন্ট তৈরি করুন
}
যদি (0 === স্ট্রপোস ($ সম্পূর্ণঅ্যাকশননাম, 'ক্যাটালগ অনুসন্ধান_')) {
    // সন্ধান করুন
}

যদি (0 === স্ট্রপোস ($ সম্পূর্ণঅ্যাকশননাম, 'গ্রাহক_আবন্ধকেন্দ্র_')
 || 0 === স্ট্রপোস ($ ফুলঅ্যাকশননাম, 'গ্রাহক_ ঠিকানা_')
 || 0 === স্ট্রপোস ($ ফুলঅ্যাকশননাম, 'ইচ্ছা তালিকা_')
 || 0 === স্ট্রপোস ($ ফুলঅ্যাকশননাম, 'নিউজলেটার_ম্যানেজ_')
 || 0 === স্ট্রপোস ($ সম্পূর্ণঅ্যাকশননাম, 'পর্যালোচনা_ কাস্টমার_')
 || 0 === স্ট্রপোস ($ ফুলঅ্যাকশননাম, 'বিক্রয়_অর্ডার_')
) {
    // গ্রাহক অ্যাকাউন্ট পৃষ্ঠা (সম্ভবত অন্যরা আছে)
}

সবাইকে সাহায্যকারী তথ্যের জন্য ধন্যবাদ!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.