Magento: Как вызвать динамический идентификатор блока виджета в файле .phtml - PullRequest
4 голосов
/ 25 октября 2011

Хорошо, вот что я пытаюсь сделать, я прочитал тонну ссылок и сообщений, но, похоже, я стремлюсь сделать это немного по-другому.

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

Моя задача состоит в том, чтобырандомизировав эту последнюю категорию, я смог добиться этого, написав собственный файл .phtml и проведя его циклически, используя mt_ и несколько уже созданных статических блоков.

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

{{block type="catalog/product_list" category_id="392" template="catalog/product/home-list.phtml"}}

Теперь, используя эту концепцию, я пытался создать еще один файл .phtml.и пусть статический блок вызовет мой пользовательский .html, который является чем-то вроде этого:

<?php
$input = array(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150);
$rand_keys = array_rand($input, 2);
echo "{{block type=\"catalog/product_list\" category_id=\"{$input[$rand_keys[0]]}\" template=\"catalog/product/home-list.phtml\"}}";
?>

Теперь этот пример актуален, я могуn загрузить массив того, что я хочу, по категориям, и просто сделать так, чтобы он перебирался случайным образом или по большей части.

Где моя настоящая проблема заключается в том, что вывод этой информации на экран не дает того эффекта, который у меня быля надеялся, что он просто печатает текст, и хотя каждое обновление экрана дает мне новый случайный элемент массива с идентификатором, это просто текст на экране.

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

Заранее спасибо,

Ура!

1 Ответ

5 голосов
/ 26 октября 2011

Вам нужно немного другой синтаксис для использования в представлениях. Некоторые псевдо примеры

echo $this->getLayout()->createBlock('catalog/product_list')->setTemplate('catalog/product/home-list.phtml')->setCategoryId('392')->toHtml();

или, если блок уже существует в макете, вы можете получить его по имени:

echo $this->getLayout()->getBlock('blockname')->setTemplate('catalog/product/home-list.phtml')->setCategoryId('392')->toHtml();
...