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

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

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

<?php

class 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

<?php

class 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条,将显示分页栏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值