現在、サイトマップには、すべての製品とカテゴリが表示されています。これらの結果をフィルタリングして、「カタログ/検索」の可視性を持つ製品と、「カタログ/検索」の可視性を持つ製品を含むカテゴリのみを表示できるようにしたいと考えています。
2 に答える
大まかな質問のようなものです — プロジェクトを開始してから、具体的な質問が出てきたときに質問する方がよいかもしれません。
書き換えの対象とするメソッドは、sitemap/sitemap
モデル内にあります。
public function generateXml()
{
//...
}
サイト マップ データを読み込み、XML を生成するメソッドです。生成されたものをフィルタリングするためのエレガントなエントリ ポイントはないため、私がとる 2 つのアプローチは次のとおりです。
を呼び出し
parent::generateXml()
て、通常どおりにマップを生成します。次に、ファイルをリロードし ($this->getPath()
)、不要なアイテムが含まれないようにドキュメントを変換し、新しいファイルを古いファイルに上書きします。の既存のコードをコピーしますが
generateXML
、Magento CE 1.7 の 155 行目あたりのカテゴリ ループに条件を追加します。
前者はよりクリーンで、後者はより高速です。幸運を
$ collection = Mage :: getResourceModel('sitemap / catalog_product')-> getCollection($ storeId);
クラスMage_Sitemap_Model_Sitemapの関数publicfunctiongenerateXml()でこの行を変更し、フィルターを適用します。次のように変更された行:
$ collection = Mage :: getModel('catalog / product')-> getCollection($ storeId)-> addAttributeToFilter('visibility'、4);
これは提案ですが、Magento標準ではコアファイルの変更は推奨されていないため、上記の提案を使用すると、上記のクラスをオーバーライドでき、新しく作成したクラスで変更関数generateXml()を使用できます。