質問

最近、という名前のカスタム変数を作成しました storecount - 店舗検索プラグインに追加される店舗ごとにプログラムで増加させます。

これを商品やカテゴリの説明などさまざまな場所に表示したいので、新しい店舗を追加するときに、出現する店舗数をすべて検索して手動で 1 つ増やす必要がなくなります。

使用する {{customVar code=storecount}} カテゴリの説明では機能しません。Magento コアをばらばらにハッキングせずにこの変数を取得する方法はありますか?

役に立ちましたか?

解決

最も簡単な方法は、CMS ブロックやページのコンテンツに使用されているものと同じテンプレート プロセッサをカテゴリの説明に使用することです。ウィジェットモジュールからのもの。
このためには拡張機能が必要です。それを呼びましょう StackExchange_Catalog.
以下のファイルが必要になります。

app/etc/modules/StackExchange_Catalog.xml - 宣言ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
                <Mage_Cms />
                <Mage_Widget />
            </depends>
        </StackExchange_Catalog>
    </modules>
</config>

app/code/local/StackExchange/Catalog/etc/config.xml - 設定ファイル

<?xml version="1.0"?>
<config>
    <global>
        <catalog>
             <content>
                <tempate_filter>widget/template_filter</tempate_filter>
            </content>
        </catalog>
    </global>
</config>

キャッシュをクリアして再試行してください。

他のヒント

Magento Coreをハッキングせずに、はい;コードなしで、いいえ。

Catalog_Category_Load_Afterイベントを聴取し、そこにあるカテゴリの説明を操作するオブザーバを書くことができます。

/編集:変更された説明を持つカテゴリが保存されると、カスタム変数も保存されますので、これは素晴らしい解決策ではありません。

別の方法は、storecount変数をテンプレートファイルに追加することです。

// To get the TEXT value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// To get the HTML value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');
.

どのテンプレートを疑問に思うかテンプレートパスのヒント、それをテンプレートファイルに追加する場所を見つけることができるはずです。コアテンプレートをオーバーライドしないで、テーマのディレクトリにコピーするので、app/design/frontend/[Your Design Package]/[Your Theme]/template/catalog/category/view.phtmlのようなどこかのコピーを作成します。この練習に従わない場合は、Magentoをアップグレードするときに作業を失います。

おそらく CMSブロックを作成し、それをテンプレートファイルに追加して編集してオフにするのが簡単です。

{{customVar code=storecount}}andを含むコンテンツを含むCMSブロックを作成します。

のテンプレートファイルで必要な場所に追加します。
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_cms_block_identifier')->toHtml() ?>
.

アップデート Mariusの答えを適切に見ただけでした。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top