Intereting Posts
скрыть путь к папке, когда пользователь загружает файл Прокрутка вверх после загрузки содержимого Ajax Doctrine2 не устанавливает последовательность по умолчанию для столбца id (postgres) MySQL – вычисление полей «на лету» и хранение вычисленных данных Некоторые значения с плавающей запятой должны суммироваться до нуля в PHP, но не Чтение xml-данных с url с использованием curl и php Получить весь лист из сложного XML с атрибутами Shell запустить / выполнить php скрипт с параметрами MVC – учебник класса контроллера PHP: как повторно использовать код (oop)? phpmyadmin работает нормально, но я не могу найти файл config.inc.php? PHP $ _SERVER неверен при загрузке PHP через mod_fcgid SQL-инъекция и защита XSS в PHP, объединяющая Ignators кода xss_clean () и Zend PDO Как исправить «Уведомление: неопределенный индекс:» в действии формы PHP? Как получить доступ к таблице внутри схемы без использования префикса схемы (Postgres + PHP)?

Magento – Как вы возвращаете результаты неограниченного статического блока CMS (с определенным «Идентификатором») на страницу CMS

Краткий обзор. Я пытаюсь вернуть результаты из определенного набора статических блоков в файл phtml (который затем вызывается на странице cms ) в Magento .

Примечание. Я искал по всему Google и некоторые ответы стали ближе, чем другие, но ничего, что я пробовал, похоже, работает на 100%?

Детали:

У меня уже есть набор конкретных статических блоков, которые начинаются с идентификатора testimonial- . Например, каждый статический блок выглядит так: testimonial-1 , testimonial-2 , testimonial-3 и так далее. У меня в общей сложности 5 на моем сайте dev (больше на сайте, но это не имеет значения здесь).

У меня есть страница CMS с кодом, потянув в файл name.phtml (расположение моего файла phtml здесь: app / design / frontend / [package] / [template] / template / page / ):

 {{block type="core/template" template="page/name.phtml" title="Others Say:" identifier="testimonial-"}} 

Вот мой код для файла .phtml:

 <?php // add the collection with filters $collection = Mage::getModel('cms/block')->getCollection() ->addFieldToFilter('identifier', array('like'=>'testimonial'.'%')) ->addFieldToFilter('is_active', 1); // get the count $blockCount = $collection->count(); echo 'Block Count: ' . $blockCount . '<br />'; // just for testing $blockNum = 1; foreach($collection as $key => $value){ $_blockId = $this->getIdentifier(); $block_ID = $_blockId . $blockNum; echo "Key: " . $key . " - " . "Block ID: " . $block_ID . "<br />"; $blockNum++; } $_block = $this->getLayout()->createBlock('cms/block')->setBlockId($block_ID); if ($_block) : ?> <div class="block block-testimonial"> <div class="block-title"> <strong><?php echo $this->getTitle(); ?></strong> </div> <div class="block-content"> <?php echo $_block->toHtml(); ?> </div> 

Цикл foreach($collection as $key => $value) печатает это:

 Key: 27 - Block ID: testimonial-1 Key: 28 - Block ID: testimonial-2 Key: 29 - Block ID: testimonial-3 Key: 30 - Block ID: testimonial-4 Key: 31 - Block ID: testimonial-5 

И это хорошо.

Тем не менее, единственным блоком, который является эхом, является последний блок ( testimonial-5 ). Поскольку я пытаюсь перечислить все тестовые блоки, как я могу отбросить каждый идентификатор блока на страницу?

Полегче на меня, я новичок на php.

Вы не печатаете блок внутри цикла foreach. Решение: переместите скобку в конец вставленного кода

 $blockNum = 1; foreach($collection as $key => $value){ $_blockId = $this->getIdentifier(); $block_ID = $_blockId . $blockNum; echo "Key: " . $key . " - " . "Block ID: " . $block_ID . "<br />"; $blockNum++; $_block = $this->getLayout()->createBlock('cms/block')->setBlockId($block_ID); if ($_block) : ?> <div class="block block-testimonial"> <div class="block-title"> <strong><?php echo $this->getTitle(); ?></strong> </div> <div class="block-content"> <?php echo $_block->toHtml(); ?> </div> <?php endif; } 

Я думаю, что на Magento Connect есть несколько модулей отзывов, которые делают работу, которую вы хотите. С другой стороны, если вы ищете «простое» решение, или если вы пытаетесь играть с Magento, это подход.