Блок Magento Приходит с пустым выходом

Я создал простой модуль новостей. который обслуживает функциональность от внешнего интерфейса, а также от бэкэнд. Функциональность администратора работает нормально.

Но в интерфейсе,

  1. У меня две страницы. i) Страница списка новостей ii) Страница новостей

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

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

Файл конфигурации

<?xml version="1.0"?> <!-- /** * Module configuration * * @author Magento */ --> <config> <modules> <Magentostudy_News> <version>1.0.0.0.1</version> </Magentostudy_News> </modules> <global> <models> <magentostudy_news> <class>Magentostudy_News_Model</class> <resourceModel>news_resource</resourceModel> </magentostudy_news> <news_resource> <class>Magentostudy_News_Model_Resource</class> <entities> <news> <table>magentostudy_news</table> </news> </entities> </news_resource> </models> <helpers> <magentostudy_news> <class>Magentostudy_News_Helper</class> </magentostudy_news> </helpers> <blocks> <magentostudy_news> <class>Magentostudy_News_Block</class> </magentostudy_news> </blocks> <resources> <magentostudy_news_setup> <setup> <module>Magentostudy_News</module> <class>Mage_Core_Model_Resource_Setup</class> </setup> </magentostudy_news_setup> </resources> <!-- <events> <before_news_item_display> <observers> <magentostudy_news> <class>magentostudy_news/observer</class> <method>beforeNewsDisplayed</method> </magentostudy_news> </observers> </before_news_item_display> </events>--> </global> <frontend> <routers> <magentostudy_news> <use>standard</use> <args> <module>Magentostudy_News</module> <frontName>news</frontName> </args> </magentostudy_news> </routers> <layout> <updates> <magentostudy_news> <file>magentostudy_news.xml</file> </magentostudy_news> </updates> </layout> </frontend> <admin> <routers> <adminhtml> <args> <modules> <Magentostudy_News before="Mage_Adminhtml">Magentostudy_News_Adminhtml</Magentostudy_News> </modules> </args> </adminhtml> </routers> </admin> <adminhtml> <layout> <updates> <magentostudy_news> <file>magentostudy_news.xml</file> </magentostudy_news> </updates> </layout> </adminhtml> <default> <news> <view> <enabled>1</enabled> <items_per_page>20</items_per_page> <days_difference>3</days_difference> </view> </news> </default> </config> 

Контроллер индексов

 <?php /** * News frontend controller * * @author Magento */ class Magentostudy_News_IndexController extends Mage_Core_Controller_Front_Action { /** * Pre dispatch action that allows to redirect to no route page in case of disabled extension through admin panel */ public function preDispatch() { parent::preDispatch(); if (!Mage::helper('magentostudy_news')->isEnabled()) { $this->setFlag('', 'no-dispatch', true); $this->_redirect('noRoute'); } } /** * Index action */ public function indexAction() { $this->loadLayout(); $listBlock = $this->getLayout()->getBlock('news.list'); if ($listBlock) { $currentPage = abs(intval($this->getRequest()->getParam('p'))); if ($currentPage < 1) { $currentPage = 1; } $listBlock->setCurrentPage($currentPage); } $this->renderLayout(); } /** * News view action */ public function viewAction() { $newsId = $this->getRequest()->getParam('id'); if (!$newsId) { return $this->_forward('noRoute'); } /** @var $model Magentostudy_News_Model_News */ $model = Mage::getModel('magentostudy_news/news'); $model->load($newsId); if (!$model->getId()) { return $this->_forward('noRoute'); } Mage::register('news_item', $model); Mage::dispatchEvent('before_news_item_display', array('news_item' => $model)); $this->loadLayout(); $itemBlock = $this->getLayout()->getBlock('news.item'); if ($itemBlock) { $listBlock = $this->getLayout()->getBlock('news.list'); if ($listBlock) { $page = (int)$listBlock->getCurrentPage() ? (int)$listBlock->getCurrentPage() : 1; } else { $page = 1; } $itemBlock->setPage($page); } $this->renderLayout(); } } 

Файл блокировки: Item.php

 <?php /** * News Item block * * @author Magento */ class Magentostudy_News_Block_Item extends Mage_Core_Block_Template { /** * Current news item instance * * @var Magentostudy_News_Model_News */ protected $_item; /** * Return parameters for back url * * @param array $additionalParams * @return array */ protected function _getBackUrlQueryParams($additionalParams = array()) { return array_merge(array('p' => $this->getPage()), $additionalParams); } /** * Return URL to the news list page * * @return string */ public function getBackUrl() { return $this->getUrl('*/', array('_query' => $this->_getBackUrlQueryParams())); } /** * Return URL for resized News Item image * * @param Magentostudy_News_Model_News $item * @param integer $width * @return string|false */ public function getImageUrl($item, $width) { return Mage::helper('magentostudy_news/image')->resize($item, $width); } } 

Файл макета: Magentostudy_news.xml

 <?xml version="1.0"?> <!-- /** * Magento frontend layout * * @author Magento */ --> <layout version="0.1.0"> <default> <reference name="footer_links"> <action method="addLink" translate="label title" module="magentostudy_news" ifconfig="news/view/enabled"> <label>News</label> <url>news</url> <title>News</title> <prepare>true</prepare> </action> </reference> </default> <magentostudy_news_index_index translate="label"> <label>News Page</label> <reference name="root"> <action method="setTemplate"> <template>page/2columns-right.phtml</template> </action> <action method="setHeaderTitle" translate="title" module="magentostudy_news"> <title>Site News</title> </action> </reference> <reference name="content"> <block type="magentostudy_news/list" name="news.list" template="magentostudy/news/list.phtml"> <block type="page/html_pager" name="news.list.pager" as="news_list_pager" /> </block> </reference> </magentostudy_news_index_index> <magentostudy_news_index_view translate="label"> <label>News Item Page</label> <reference name="root"> <action method="setTemplate"> <template>page/2columns-right.phtml</template> </action> </reference> <reference name="content"> <block type="magentostudy_news/news" name="news.item" template="magentostudy/news/item.phtml" /> </reference> </magentostudy_news_index_view> </layout> по <?xml version="1.0"?> <!-- /** * Magento frontend layout * * @author Magento */ --> <layout version="0.1.0"> <default> <reference name="footer_links"> <action method="addLink" translate="label title" module="magentostudy_news" ifconfig="news/view/enabled"> <label>News</label> <url>news</url> <title>News</title> <prepare>true</prepare> </action> </reference> </default> <magentostudy_news_index_index translate="label"> <label>News Page</label> <reference name="root"> <action method="setTemplate"> <template>page/2columns-right.phtml</template> </action> <action method="setHeaderTitle" translate="title" module="magentostudy_news"> <title>Site News</title> </action> </reference> <reference name="content"> <block type="magentostudy_news/list" name="news.list" template="magentostudy/news/list.phtml"> <block type="page/html_pager" name="news.list.pager" as="news_list_pager" /> </block> </reference> </magentostudy_news_index_index> <magentostudy_news_index_view translate="label"> <label>News Item Page</label> <reference name="root"> <action method="setTemplate"> <template>page/2columns-right.phtml</template> </action> </reference> <reference name="content"> <block type="magentostudy_news/news" name="news.item" template="magentostudy/news/item.phtml" /> </reference> </magentostudy_news_index_view> </layout> по <?xml version="1.0"?> <!-- /** * Magento frontend layout * * @author Magento */ --> <layout version="0.1.0"> <default> <reference name="footer_links"> <action method="addLink" translate="label title" module="magentostudy_news" ifconfig="news/view/enabled"> <label>News</label> <url>news</url> <title>News</title> <prepare>true</prepare> </action> </reference> </default> <magentostudy_news_index_index translate="label"> <label>News Page</label> <reference name="root"> <action method="setTemplate"> <template>page/2columns-right.phtml</template> </action> <action method="setHeaderTitle" translate="title" module="magentostudy_news"> <title>Site News</title> </action> </reference> <reference name="content"> <block type="magentostudy_news/list" name="news.list" template="magentostudy/news/list.phtml"> <block type="page/html_pager" name="news.list.pager" as="news_list_pager" /> </block> </reference> </magentostudy_news_index_index> <magentostudy_news_index_view translate="label"> <label>News Item Page</label> <reference name="root"> <action method="setTemplate"> <template>page/2columns-right.phtml</template> </action> </reference> <reference name="content"> <block type="magentostudy_news/news" name="news.item" template="magentostudy/news/item.phtml" /> </reference> </magentostudy_news_index_view> </layout> 

Новости / item.phtml

 <?php /** * News template for separate item * * @author Magento */ /** * @var $this Magentostudy_News_Block_Item * @see Magentostudy_News_Block_Item */ ?> <?php $_newsItem = $this->helper('magentostudy_news')->getNewsItemInstance(); ?> <div id="news_item_messages"><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div> <div> <h1><?php echo $this->escapeHtml($_newsItem->getTitle()) ?></h1> <div> <?php echo $this->formatDate($_newsItem->getTimePublished(), Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM) ?> | <?php echo $this->escapeHtml($_newsItem->getAuthor()) ?> </div> </div> <div> <?php if ($imageUrl = $this->getImageUrl($_newsItem, 400)): ?> <p><img src="<?php echo $imageUrl ?>" alt="<?php echo $this->escapeHtml($_newsItem->getTitle()) ?>" /></p> <?php endif; ?> <div><?php echo $_newsItem->getContent() ?></div> <div> <a href="<?php echo $this->getBackUrl() ?>"> <?php echo Mage::helper('magentostudy_news')->__('Return to list') ?> </a> </div> </div> 

Related of "Блок Magento Приходит с пустым выходом"

Почему у вас есть SetPage на ваш взгляд?

  $this->loadLayout(); $itemBlock = $this->getLayout()->getBlock('news.item'); if ($itemBlock) { $listBlock = $this->getLayout()->getBlock('news.list'); if ($listBlock) { $page = (int)$listBlock->getCurrentPage() ? (int)$listBlock->getCurrentPage() : 1; } else { $page = 1; } $itemBlock->setPage($page); 

Вы пытались его удалить?

  $this->loadLayout(); $itemBlock = $this->getLayout()->getBlock('news.item'); /* if ($itemBlock) { $listBlock = $this->getLayout()->getBlock('news.list'); if ($listBlock) { $page = (int)$listBlock->getCurrentPage() ? (int)$listBlock->getCurrentPage() : 1; } else { $page = 1; } $itemBlock->setPage($page); */