У меня есть новая работа, где я сейчас строго работаю над Magento. У меня нет опыта работы с Magento, так что, по крайней мере, пока сложно!
Позвольте мне кратко объяснить расширение, которое мы строим.
Это позволит нам показать всплывающее / модальное окно. Содержание 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
СБРОС ПО УМОЛЧАНИЮ
Затем на всех страницах CMS , CATEGORY и PRODUCT разрешены те же настройки, что и на странице панели администратора, за исключением того, что они позволяют вам устанавливать значение STATIC BLOCK
для каждого элемента и отменять настройки по умолчанию, которые были у нас в настройках администратора выше ,
Пока что у нас есть админская сторона расширения. У нас есть все вкладки администратора для каждого раздела ... продукт, категория, CMS и страница конфигурации.
Следующим шагом будет добавление к тому же расширению и Static Block
вставка на страницу. Это Static Block
будет нести ответственность за ... Отображение правильных Static Block
на каждой странице на основе настроек, которые были установлены в вышеупомянутых областях .....
- Определение страницы, на которой мы находимся, и тип страницы (cms, продукт, дом, категория)
- Затем он должен будет прочитать все пользовательские настройки, которые были установлены в вышеупомянутых областях.
- Если будет определено, что мы находимся на
Category
странице, нам нужно будет получить фактическую конкретную категорию, в которой мы находимся. НапримерCategory 3
. Затем мы увидим, есть ли конкретные настройки для этой конкретной категории. Если он говорит, чтоEnabled
мы будем искать, которыйStatic Block
сохранен для этой категории и показать его в нашей главнойStatic Block
на странице! - Если указанная выше конкретная категория установлена как
Disabled
наша,Modal Window
мы посмотрим выше в более глобальных настройках для модального режима и посмотрим, включен ли модальный режим для всех категорий. Если да, то мы увидим, какие изStatic Block
них будут показаны для всех категорий. - В дополнение ко всему этому, он будет выполнять этот процесс для каждого из основных типов страниц (продукт, категории, cms, дом, корзина)
- Мы также должны проверить, пуста ли корзина для покупок. Если не пусто ... тогда мы должны принять это во внимание выше, когда wqe проверяет, что
Static Block
показывать для этой страницы, так как каждый параметр позволяет установить aStatic Block
для пустой корзины и 1 для не пустой корзины! (Я знаю, что это очень сложное и трудоемкое мероприятие, но мы в основном занимаемся вопросами администрирования. Просто нужно выполнить ту часть, которая учитывает все это при определении того, чтоStatic Block
показывать на какой конкретной странице.
Поэтому, чтобы направить меня в правильном направлении, у меня есть пара небольших вопросов ...
- Как я могу внутри своего
Static Block
кода (часть PHP) определить, какой ТИП СТРАНИЦЫ я нахожусь. Как я уже упоминал , что я должен знать , если я на .... HOME PAGE , CMS PAGE , КАТЕГОРИЯ PAGE , страница продукта или КОРЗИНА PAGE ? - Помимо ТИПА СТРАНИЦЫ мне нужно получить реальную страницу. Поэтому, если я нахожусь на Product id 1234, то мне нужно иметь возможность получить настройку (статический блок, установленный для этой страницы) для этой конкретной страницы.
Я знаю, что это был длинный и, возможно, запутанный пост. Если вы сделали это далеко, спасибо, что нашли время, чтобы прочитать это =)
Если вы можете помочь с моим вопросом, каждый маленький кусочек приблизит меня к конечной цели
Ниже приведена блок-схема того, как мой модуль должен работать, чтобы определить, какой статический блок нужно вставить на страницу.
источник
Mage_Widget
модуле, верно?Mage_Widget
? Мне нужно разобраться и с этимОтветы:
В дополнение к тому, что @benmarks ответил :
Вот небольшой код для проверки некоторых из упомянутых вами условий:
Проверить, если корзина пуста или не используется
Также вы спросили, можете ли вы проверить текущую страницу внутри блока CMS.
Это, вероятно, не очень хороший подход (вы должны будете включить пользовательские блоки, которые потеряли бы цель использования блоков CMS на первой странице).
Вместо этого лучше сначала проверить текущую страницу, а затем выбрать блок CMS для отображения на основе этого.
РЕДАКТИРОВАТЬ : исправлено,
Mage::app()->getRequest()->getFullActionName()
чтобы быть,Mage::app()->getFrontController()->getAction()->getFullActionName()
как указано @Joseph в комментариях. Спасибо!источник
Mage::app()->getRequest()->getFullActionName()
в шаблоне корзины приводит к фатальной ошибке или, по крайней мере, для меня на 1.7.0.2.$this->getAction()->getFullActionName()
работал отлично!Много подходов, которые вы могли бы предпринять. Я бы порекомендовал добавить свой блок через
<default>
дескриптор обновления макета, который сделает его доступным на всех страницах. В_prepareLayout()
методе вашего блока вы можете определить область, получив текущее полное имя действия из объекта запроса ($this->getRequest()->getFullActionName()
) и используя его для определения контекста.Товары и категории будут зарегистрированы в реестре. Ваш блок может также посмотреть на маркеры обновления макета, которые будут включать идентификаторы идентификатора продукта или категории.
источник
Чтобы обнаружить домашнюю страницу, вам нужно использовать строку идентификатора (например, «home») для сопоставления со значением конфигурации, а не числовой идентификатор:
Вот некоторые другие:
Спасибо всем за полезную информацию!
источник