0

私は、magento Web サイトでブログを希望するクライアントと協力してきました。AW ブログ拡張機能をインストールした後、アーカイブ機能がなく、Web で解決策が見つからないことに気付きました。

数日間の作業の後、私はついにこのタスクの解決策を見つけました. どこに投稿すればいいのかわからなかったので、ここが共有するのに最適な場所だと思いました。

人々は通常、ここに回答を投稿しないことを知っていますが、私は共有する必要があります。

4

2 に答える 2

1

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.jsskin\jsディレクトリにコピーします

b) jquery-ui.cssimagesフォルダーを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;
}

これはみんなです。助けが必要な場合は、お知らせください。御時間ありがとうございます。

于 2013-07-21T11:12:54.413 に答える