私は、magento Web サイトでブログを希望するクライアントと協力してきました。AW ブログ拡張機能をインストールした後、アーカイブ機能がなく、Web で解決策が見つからないことに気付きました。
数日間の作業の後、私はついにこのタスクの解決策を見つけました. どこに投稿すればいいのかわからなかったので、ここが共有するのに最適な場所だと思いました。
人々は通常、ここに回答を投稿しないことを知っていますが、私は共有する必要があります。
私は、magento Web サイトでブログを希望するクライアントと協力してきました。AW ブログ拡張機能をインストールした後、アーカイブ機能がなく、Web で解決策が見つからないことに気付きました。
数日間の作業の後、私はついにこのタスクの解決策を見つけました. どこに投稿すればいいのかわからなかったので、ここが共有するのに最適な場所だと思いました。
人々は通常、ここに回答を投稿しないことを知っていますが、私は共有する必要があります。
AW ブログ拡張機能が 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 つの 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;
}
これはみんなです。助けが必要な場合は、お知らせください。御時間ありがとうございます。