25. Magento 创建新闻模块(5)

来源:互联网 发布:现在淘宝什么最赚钱 编辑:程序博客网 时间:2024/04/25 09:00

在以上几节的Magento开发实例中,我们已经为新闻模块创建了后台应用,使我们可以在后台管理新闻数据,当我们向后台添加一些测试数据后,这一节中我们将在前台显示新闻列表。

1 前台控制器
修改/app/code/local/Www/News/controllers/IndexController.php的indexAction()方法:

<?phpclass Www_News_IndexController extends Mage_Core_Controller_Front_Action{    public function indexAction()    {        $this->loadLayout();        $this->renderLayout();    }}

2 添加Layout文件
添加/app/design/frontend/default/default/layout/news.xml

<?xml version="1.0"?><layout version="0.1.0">    <news_index_index>        <reference name="root">            <action method="setTemplate"><template>page/1column.phtml</template></action>        </reference>        <reference name="content">            <block type="page/template_container" name="news.container" template="news/container.phtml">                <block type="page/html_pager" name="news.pager.top" as="pager_top" template="page/html/pager.phtml"/>                <block type="page/html_pager" name="news.pager.bottom" as="pager_bottom" template="page/html/pager.phtml"/>                <block type="news/list" name="news.list" as="news_list" template="news/list.phtml">                    <action method="bindPager"><pager>news.pager.top</pager></action>                    <action method="bindPager"><pager>news.pager.bottom</pager></action>                </block>            </block>        </reference>    </news_index_index></layout>

并在config.xml文件中添加layout:

<config>    <frontend>        <layout>            <updates>                <news>                    <file>news.xml</file>                </news>            </updates>        </layout>    </frontend></config>

3 添加Container模板
在Layout中我们设置container的模板为”news/container.phtml”
添加/app/design/frontend/default/default/template/news/container.phtml

<div class="page-news">    <div class="page-title"><h1>News</h1></div>    <?php echo $this->getChildHtml('pager_top') ?>    <?php echo $this->getChildHtml('news_list') ?>    <?php echo $this->getChildHtml('pager_bottom') ?></div>

4 添加List新闻列表Block
添加/app/code/local/Www/News/Block/List.php

<?phpclass Www_News_Block_List extends Mage_Core_Block_Template{    protected function _prepareLayout()    {        $collection = Mage::getModel('news/news')->getCollection();        $collection->addFieldToFilter('is_active', MagentoBoy_News_Model_News::STATUS_ENABLED);        $collection->setOrder('created_at', 'DESC');        $this->setCollection($collection);        return $this;    }    public function bindPager($pagerName)    {        $pager = $this->getLayout()->getBlock($pagerName);        if ($pager) {            $pager->setLimit(5); // 设置每页显示新闻的数量            $pager->setCollection($this->getCollection());            $pager->setShowPerPage(false);        }    }}

5 添加List新闻列表Template
添加/app/design/frontend/default/default/template/news/list.phtml

<?php $_items = $this->getCollection();?><?php if ($_items->getSize()):?>    <ul class="news">        <?php foreach ($_items as $_item):?>            <li style="margin:20px;">                <h3><?php echo $_item->getTitle();?></h3>                <div>Posted on <?php echo $this->helper('core')->formatDate($_item->getCreatedAt());?></div>                <div><?php echo nl2br($this->htmlEscape($_item->getContent()));?></div>            </li>        <?php endforeach;?>    </ul><?php else:?>    <p class="note-msg">        <?php echo $this->__('There are no news.'); ?>    </p><?php endif;?>

打开http://www.example.com/news页面,我们将看到新闻页面,每页显示5条新闻,如果新闻数量超过5条,将显示分页栏。

0 0
原创粉丝点击