カスタムレイアウトの更新を通じて、スタティックブロックまたはバナーウィジェットを削除する
-
12-12-2019 - |
質問
当社のストア内のすべての製品カテゴリページは、2列(NAV左)形式です。私達のカテゴリーの1つは、左側の列に要素を削除する必要があります。この左側の列を持つ他のすべてのページにはこの要素があり、続行し続ける必要がありますが、これらの少数のマイナーカテゴリには必要です。
前回の開発者は、要素がバナー内にあるように設定し、CMSを介してウィジェットで配置されました。それは異なるページのトンを表示するように設定されています(例:カテゴリがすべてに設定されています)、新しいカテゴリを特定のリストに追加する必要がないように新しいカテゴリを追加する必要がないようにすることをお勧めします。製品マネージャとwhatnotで。
特定のカテゴリからバナーやウィジェットを削除する方法は見つかりませんでしたので、カスタムレイアウトのアップデートを使用して名前で削除するのは静的ブロックとしてバナーを再作成しました。
<reference name="left">
<remove name="my_static_block_id"></remove>
</reference>
.
これはうまくいきません!
私はいたし切りを試みました:
<action method="unsetChildren"/>
.
これは左列からすべてを取り除きました(望ましくない)
これを行う方法はありますか?おそらくどこかに見えなかったの?ありがとうございました。
解決
だから、ウィジェットがページに追加された方法のせいで、ウィジェットが保存されると、ウィジェットが保存されると自動的に生成された名前は以下のファイルで生成された単なるランダムハッシュです。 。
MAGE_WIDGET_MODEL_WIDGET_INSTANCE :: generatelayoutupdatexml
$hash = Mage::helper('core')->uniqHash();
$xml .= '<block type="' . $this->getType() . '" name="' . $hash . '"' . $template . '>';
.
これは後でデータベースに保存されます。たとえば、ランダム名は9D10A0D6931D18586A907B201633D878で、以下の画像にあります。
だから、理論的にはそれほど実用的ではないかもしれませんが、データベーステーブルの更新レコードのウィジェット検索を作成することなくこれを行うことができるような方法があります。ただし、core_layout_update
ただし、ウィジェットに変更を加えると、XMLと名前が更新され、もう一度名前参照を更新する必要があります。私は未チェックルを試してみました、そしてそれは仕事をしていないようです私はそれがウィジェットのためにXMLが処理される順序が原因であると思われる疑いがある。
私はあなたが2つの実際のオプションがあると思います:
1)左の列、右列、または他の場所に新しいtext_listを追加し、ウィジェットを追加してからMabeyをページに削除します。このようなあなたのテーマlocal.xmlでこれを行うことができます。
.
<reference name="left">
<block type="core/text_list" name="widgets_left" as="widgets_left" translate="label">
<label>Widgets Left</label>
</block>
</reference>
これは、画像のようにバックエンドに新しいオプションを追加し、それからウィジェットのインスタンスを追加することも、widgets_left名を参照しているときに名前で必要な場合は削除するだけです。
その後、それらを削除した特定のカテゴリの下に次のようにします。
.
<reference name="left">
<action method="unsetChild"><name>widgets_left</name></action>
</reference>
<remove name="widgets_left"/>
.
<reference name="left">
<block type="cms/block" name="cms_left_block_name">
<action method="setBlockId"><block_id>my_block_identifier_from_magento_backend</block_id></action>
</block>
</reference>
その後、RemoveまたはExchildを実行するために使用できる「CMS_LEFT_BLOCK_NAME」として修正されます。
他のヒント
あなたは閉じて、あなたは追加されたブロックの名前を知る必要があります、そしてそれの親の名前。
たとえば、親ブロックに追加されたブロックは、次のように「左」に追加されます。
<reference name="left">
<block type="cms/block" name="my_block_name">
<action method="setBlockId"><block_id>some_static_block_identifier</block_id></action>
</block>
</reference>
.
は次のように除去されます。
<reference name="left">
<action method="unsetChild"><child>my_block_name</child></action>
</reference>
.