個々の製品ページに 2 つの追加タブを設定しました。これらのタブは、製品ごとに異なる CMS ブロックから情報を取得する必要があります。しかし、製品ページを表示すると、特定の製品の CMS ブロックからではなく、作成した CMS ブロックの 1 つからまったく同じ情報を取得しています。
トラブルシューティングを試みているときに気づいたことがいくつかあります。
1) Magento キャッシュを更新して製品ページに移動すると、そのページの正しい情報が表示されます。次に、他の製品ページに移動すると、Magento キャッシュを更新した後に最初に表示した製品の情報が常に表示されます。
2) これは商品カテゴリにも関係しているようです。2 つの製品カテゴリがあります。カテゴリ 1 のすべての製品には、同じ CMS ブロックの情報が表示されます。カテゴリ 2 のすべての製品には同じ CMS ブロックの情報が表示されますが、これらの製品の CMS ブロックの情報は実際にはカテゴリ 1 の製品とは異なりますが、すべて同じです。
すべてを設定した方法は次のとおりです。
1) 製品ごとに異なる情報を持つ個別の CMS ブロックを作成しました。
2) textarea 属性を作成し、正しい属性セットに追加しました。各製品について、その製品の CMS ブロックに ID を入力しました。再確認したところ、すべての製品に異なる ID が入力されています。
3) app/design/frontend/rwd/default/layout/catalog.xml に、2 つの新しいタブを表示するために以下を追加しました。
<!-- Features -->
<block type="catalog/product_view_attributes" name="product.features" as="features" template="catalog/product/view/features.phtml">
<action method="addToParentGroup"><group>detailed_info</group></action>
<action method="setTitle" translate="value"><value>Features</value></action>
</block>
<!-- END Features -->
<!-- TECH SPECS -->
<block type="catalog/product_view_attributes" name="product.tech_specs" as="techspecs" template="catalog/product/view/tech_specs.phtml">
<action method="addToParentGroup"><group>detailed_info</group></action>
<action method="setTitle" translate="value"><value>Tech Specs</value></action>
</block>
<!-- END TECH SPECS -->
4) 最後に、2 つのファイルを作成しました
app/design/frontend/rwd/default/template/catalog/product/view/features.phtml アプリ/design/frontend/rwd/default/template/catalog/product/view/tech_specs.phtml
コードは次のとおりです。
features.phtml
<?php
$_product = $this->getProduct();
$attribute = $_product->getResource()->getAttribute('features');
if ( is_object($attribute) ) {
$identifier = $_product->getData("features");
}
?>
<?php if ($_sizeBlock = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($identifier)): ?>
<div class="std">
<?php echo $_sizeBlock->toHtml() ?>
</div>
<?php endif; ?>
tech_specs.phtml
<?php
$_product = $this->getProduct();
$attribute = $_product->getResource()->getAttribute('tech_specs');
if ( is_object($attribute) ) {
$identifier = $_product->getData("tech_specs");
}
?>
<?php if ($_sizeBlock = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($identifier)): ?>
<div class="std">
<?php echo $_sizeBlock->toHtml() ?>
</div>
<?php endif; ?>
ここで何が起こっているのか誰にも分かりますか?