2010-11-04 3 views
0

в моем 2Col-inside.phtml файл я могу успешно вызвать блок с помощью: <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('blue-banner')->toHtml() ?>Magento - вызвать статический блок, когда PHP BodyClass == «независимо от»

однако я хотел бы обслуживать уникальный баннер, основанный на URI или класс тела. так что-то вроде:

<?php if($bodyClass['category-blue']): ?> 
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('blue-banner')->toHtml() ?> 
<?php elseif($bodyClass['category-red']): ?> 
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('red-banner')->toHtml() ?> 
<?php else($bodyClass['category-yellow']): ?> 
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('yellow-banner')->toHtml() ?> 
<?php endif;?> 

Установка BlockId на страницу URL будет работать тоже (я бы просто вернуться и переименовать все блоки, чтобы точно соответствовать URL страницы), но я не знаю, как чтобы извлечь JUST URL страницы.

Любые предложения?

+0

этих только для страниц категорий? Если да, относится ли «категория-синий» к определенной категории под названием «Синий»? – clockworkgeek

+0

да это страницы категорий. Я закончил с использованием кода ниже ... есть ли конкретные решения этой проблемы? – robert

ответ

0

не очень, но это работает, если вы называете Статичные блоки так же, как ваше имя страницы:

<?php $_base_url = $this->helper('core/url')->getHomeUrl(); 
     $class = str_replace($_base_url, '', $this->helper('core/url')->getCurrentUrl()); 
     $pagetitle = str_replace('.html', '', $class); 
     $page = str_replace('industries/', '', $pagetitle); 
?> 
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId($page)->toHtml() ?> 
0

попробовать это в вашем app/design/frontend/default/<theme>/catalog/catalog/category/view.phtml:

$cat_name = $this->getCurrentCategory()->getName(); 
$block_name = $cat_name.'-banner'; 
echo $this->getLayout()->createBlock('cms/block')->setBlockId($block_name)->toHtml(); 

Бросьте некоторые if заявления в там проверьте нули, и вы должны быть в отъезде.

Приветствия, JD

0

В вашей 2col-inside.phtml добавить это где вы хотите баннер.

<?php echo $this->getChildHtml('banner_block') ?> 

Это безопасно, потому что ничего не будет, если вторит banner_id не существует.

Для каждой категории, где вы хотите изменить баннер это «Пользовательские Layout Update» окно, чтобы включать в себя следующее ...

<reference name="content"> 
    <block type="cms/block" name="banner_block"> 
     <action method="setBlockId"><block_id>blue_banner</block_id></action> 
    </block> 
</reference> 

... изменяя block_id в зависимости от обстоятельств. То же самое можно сделать и на страницах продуктов и CMS. Если страница не использует шаблон 2cols-inside.phtml, ничего не происходит.

+0

Мой путь старомодный (на несколько месяцев!), А метод виджета Ивана намного приятнее. Используйте это, если местоположение баннера не является чем-то неудобным. – clockworkgeek

1

Вам даже не нужно выполнять какие-либо разработки для отображения статического блока на определенной странице категории или на любой странице cms или layout. Используйте функции Widgets Magento.

  1. Перейти к "CMS -> Виджеты"

  2. Нажмите "Добавить виджет Instance" кнопку

  3. Выберите тип виджета (в вашем случае это "CMS Статический блок") и тема где это должно быть показано. Нажмите кнопку «Продолжить».

  4. Введите «Название экземпляра виджета» и выберите магазины, где он должен отображаться.

  5. Нажмите кнопку «Добавить обновление макета» и выберите настройки виджета «Включить отображение» (Категории, Продукты, Страницы CMS, Страницы проверки и т. Д.) И выберите в той части страницы, которую вы хотите показать.

  6. Перейдите на вкладку «Параметры виджета» и выберите статический блок, который вы хотите отобразить.

Надеется, что это поможет вам с вашей проблемой без развития :)

Смежные вопросы