Шаблон magento xml: добавить статический блок в описание товара для всех товаров определенной категории - PullRequest
1 голос
/ 17 января 2011

Используя Magento 1.4.1.1 или 1.5.0.0 и данные продукты, связанные с определенной категорией, мне нужно добавить статический блок к описанию продукта в едином представлении.

Я могу создать статические блоки (изображения измерений) и добавить простой код добавления в local.xml. Однако я не могу понять, как ограничить применение приложения к продуктам только определенных категорий .

EG. На всех страницах просмотра обувной продукции (конечно, в категории обуви) должно отображаться изображение измерения размера обуви, юбки с изображением измерения размера юбки и т. Д.

Я не очень хочу переопределять шаблон ... просто хочу добавить блок!

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Создайте пользовательский тип блока (вы можете назвать его Somemodule_Categorical_Cms_Block или выбрать нехитрое имя), который начинается с cms/block.В этом классе блоков реализуйте что-то вроде этого:

protected function _toHtml()
{
    if(!$this->isEnabledForCategory()) {
        return "";
    }
    return parent::_toHtml();
}

Реализуйте свой собственный isEnabledForCategory, чтобы проверить категорию.Измените объявление local.xml так, чтобы оно вызывало новый класс блоков, и вы должны начать.

Надеюсь, это поможет!

Спасибо, Джо

2 голосов
/ 18 января 2011

Если вы можете предположить, что товар относится только к одной категории, то вы можете проверить файл шаблона следующим образом:

$product = Mage::registry('current_product');
$category = $product->getCategory(); // get first category only
if ($category->getUrlKey() == 'shoes'):
    // Output show size measurements
elseif ($category->getUrlKey() == 'skirts'):
    // Output skirt measurements
endif;

Здесь я использовал getUrlKey, поскольку он предоставляет текст, который вы набрали в админке, такявляется управляемым.

Более сложным способом было бы использовать поле «Обновление пользовательского макета» на вкладке «Дизайн» каждого продукта для непосредственного размещения XML, но это больше работы.

0 голосов
/ 12 июня 2015

Мне нужно было сделать такую ​​вещь, и я придумал это:
1 - создать статический блок с именем "category1_size_guide"
2 - пока моя тема использует:
"\ Приложение \ дизайн \ оболочка \ theme_designer \ THEME_NAME \ шаблон \ страница \ 2columns-right.phtml"
для отображения продукта, я добавляю этот код:

$product = Mage::registry('current_product');
$catIds = ($product)?$product->getCategoryIds():array(); //print_r($catIds);
if(in_array(60, $catIds)){ //60 is category id you want to check
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('category1_size_guide')->toHTML();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...