2015-10-11 3 views
0

У меня есть эта строка кода внутри view.phtml, которая работает и показывает содержимое статического блока около цены продукта, только для продуктов категорий id, указанных в массиве.Показать цену рядом с продуктом, в зависимости от категории товаров

Возникла проблема. Это не работает, если я нажимаю «Каталог» или получаю страницу продукта из результатов поиска. Я не могу добавить идентификатор категории «Каталог» в свой массив, потому что я хочу показать статический блок только для определенных категорий. Вы можете мне помочь?

<?php $category = Mage::getModel('catalog/layer')->getCurrentCategory();?> 
    <?php $arr = array(116, 118, 119, 120, 121, 122, 123, 126, 128, 129, 130, 132, 133, 136);?> 

     <?php if(in_array($category->getId(),$arr)): ?> 
     <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('prezzo-metro')->toHtml(); ?> 
     <?php endif; ?> 

ответ

0

Да Это не сработает, если вы пришли из поиска в каталоге или открываете продукт URl непосредственно в браузере. Потому что в этом случае вы не получите текущий идентификатор категории.

Вам необходимо использовать код, как показано ниже.

<?php 
if (Mage::registry('current_category')) { 
    $category = Mage::registry('current_category'); 
} else { 
    $categoryIds = $_product->getCategoryIds(); 
    if (count($categoryIds)) { 
     $firstCategoryId = $categoryIds[0]; 
     $category = Mage::getModel('catalog/category')->load($firstCategoryId); 
    } 
} 
?> 

<?php $arr = array(116, 118, 119, 120, 121, 122, 123, 126, 128, 129, 130, 132, 133, 136); ?> 

<?php if (in_array($category->getId(), $arr)): ?> 
    <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('prezzo-metro')->toHtml(); ?> 
<?php endif; ?> 
Смежные вопросы