我一直在与一个想要在 magento 网站上写博客的客户合作。安装 AW 博客扩展后,我意识到它没有存档功能,并且我在网络上没有找到任何解决方案。
经过几天的工作,我终于找到了这个任务的解决方案。我不知道在哪里发布它,我认为这是分享它的最佳位置。
我知道人们通常不会在这里发布答案,但我必须分享,因为在那里,有人遇到困难,或者可能遇到困难。
我一直在与一个想要在 magento 网站上写博客的客户合作。安装 AW 博客扩展后,我意识到它没有存档功能,并且我在网络上没有找到任何解决方案。
经过几天的工作,我终于找到了这个任务的解决方案。我不知道在哪里发布它,我认为这是分享它的最佳位置。
我知道人们通常不会在这里发布答案,但我必须分享,因为在那里,有人遇到困难,或者可能遇到困难。
我假设您已经将 AW Blog 扩展安装到您的 magento 项目中。博客扩展页面
1)首先,我们需要一个占位符用于未来的日期选择器。我选择 AW_blog 扩展的侧边栏:app\design\frontend\YOUR_THEME\default\template\aw_blog\menu.phtml
我几乎在最后添加了以下 html 标记:
<div class="block-content">
<div class="menu-recent">
<h5 class="uppercase"><?php echo Mage::helper('blog')->__('Archives'); ?></h5>
<div id="datepicker"></div>
</div>
</div>
2)在此之后,我将 jquery ui datepicker 添加到项目中。我们将需要它来选择日期。jquery ui 页面。在这里我需要做一些笔记。我只复制了带有主题图标的 jquery-ui.js、jquery-ui.css、images 文件夹。我这样做是因为我不需要其他任何东西。您可以根据需要下载所有内容,但关键文件是 jquery-ui.js、jquery-ui.css、images 文件夹。
a) 将jquery-ui.js复制到skin\js目录中
b) 将jquery-ui.css和images文件夹复制到skin\frontend\YOUR_THEME\default\css目录
3) 将以下代码添加到app\design\frontend\default\default\layout\page.xml
<default translate="label" module="page">
<label>All Pages</label>
<block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
<block type="page/html_head" name="head" as="head">
....
<action method="addJs"><script>jquery-ui.js</script></action>
...
<action method="addCss"><stylesheet>css/jquery-ui.css</stylesheet></action>
4)将以下代码添加到app\design\frontend\YOUR_THEME\default\template\page\head.phtml 这只是使用 datepicker 插件的简单工作
jQuery(function(){
jQuery( "#datepicker" ).datepicker({
dateFormat:"yy-mm-dd",
onSelect: function(dateText) {
window.location = '<?php echo Mage::getBaseUrl();?>news/?date='+dateText;//refreshes screen
}
});
});
所有这四个 4 步骤都是针对前端的东西。现在我们将进入后端编程
1) 打开app\code\community\AW\Blog\Block\blog.php并用以下代码替换 getPosts() 函数
public function getPosts()
{
$collection = parent::_prepareCollection();
$tag = $this->getRequest()->getParam('tag');
$date = $this->getRequest()->getParam('date');//gets $_GET[date] parameter
if ($tag) {
$collection->addTagFilter(urldecode($tag));
}
else if ($date) { // checks if $date parameter exists
$collection->addDateFilter(urldecode($date));
}
parent::_processCollection($collection);
return $collection;
}
2) 打开app\code\community\AW\Blog\Model\Mysql4\Blog\Collection.php并添加以下函数
public function addDateFilter($date) {
if ($date = trim($date)) {
$whereString = sprintf("main_table.created_time >= %s", $this->getConnection()->quote($date));
$this->getSelect()->where($whereString);
}
return $this;
}
这就是伙计们。如果您需要任何帮助,请告诉我。谢谢你的时间。
对于月份和年份列表存档
public function addDateFilter($date) {
if ($date = trim($date)) {
$whereString = sprintf(
"main_table.created_time = %s OR main_table.created_time LIKE %s OR main_table.created_time LIKE %s ",
$this->getConnection()->quote($date), $this->getConnection()->quote($date . '-%'),
$this->getConnection()->quote('%-' . $date),$this->getConnection()->quote('%-' . $date . '-%')
);
$this->getSelect()->where($whereString);
}
return $this;
}
示例:
foo.com/index.php/news/?date=2014
或bar.com/index.php/news/?date=2014-02