タグ付けされた質問 「blocks」

`Block`クラスに関する質問を示します。

3
子ブロックをproduct_listに追加できません
商品リストにブロックを追加しようとしています: <?xml version="1.0"?> <layout version="0.1.0"> <catalog_category_view translate="label"> <reference name="product_list"> <remove name="product_list_toolbar"/> <block type="core/template" name="helloworld" as="helloworld" template="helloworld.phtml"/> </reference> <reference name="footer"> <block type="core/template" name="helloworld" as="helloworld" template="helloworld.phtml"/> </reference> </catalog_category_view> </layout> ではカタログ/製品/ list.phtml私はこれを持っています: <?php Zend_Debug::dump($this->getSortedChildren()); ?> <?php echo $this->getChildHtml('helloworld'); ?> ではページ/ HTML / footer.phtml:私はこれを持っています <?php Zend_Debug::dump($this->getSortedChildren()); ?> <?php echo $this->getChildHtml('helloworld'); ?> 並べ替えた子のリストからが削除されているかどうかを確認することで<remove name="product_list_toolbar"/>、参照がproduct_list正しく機能するかどうかをテストできるように追加しただけであることに注意してくださいproduct_list_toolbar。そうです。 だから私が今持っているのは製品リストとフッターの同じコードであり、それはフッターでのみ機能します。いくつかの掘削を行った後、私は見つけることができません任意のブロックのインスタンスが追加されているproduct_list他のよりproduct_list_toolbar。それで、このブロックについて、子供を追加することが機能しない何かがありますか?


2
クラスを書き換えるための戦略
[TL:DR] 私はとを持っCore_Class_AていCore_Class_B extends Core_Class_Aます。 両方を書き直して、共通の機能を追加する必要があります。 だから私はこれを作りました: Custom_Class_A extends Core_Class_A。 問題は、下からどれを使用するかです(それぞれに賛成と反対)。 Custom_Class_B extends Custom_Class_A Custom_Class_B extends Core_Class_B [フルバージョン] レイヤードナビゲーションに新しいフィルターを追加する拡張機能に取り組んでいます:在庫あり/在庫なし(数日で公開されます)。 コード、今のところ大きな問題はない、戦略...私は私の疑問を持っています。 レイヤードナビゲーションセクションで新しいフィルターを追加するために使用できるイベントがないため、2つのブロックを書き換える必要がMage_Catalog_Block_Layer_ViewありましたMage_CatalogSearch_Block_Layer。(誰かがより良いアイデアを持っている場合は、共有してくださいが、これは質問の範囲ではありません)。 Mage_Catalog_Block_Layer_ViewVinaiが間接的に私を思ったように私はそれをしなかった(Vinaiの拡張子のいずれかについて、このレビューを参照)。 書き換えたいメソッドを追加し、parent::methodName()誰もが監視できるイベントを呼び出してディスパッチしました。 メソッドの例を次に示し_initBlocksます。私の新しいメソッドは次のようになります: protected function _initBlocks() { parent::_initBlocks(); //call the parent method //dispatch an event that I can observe and add my logic. Mage::dispatchEvent('catalog_layer_view_init_blocks', array('block' => $this)); } しかし、問題は生じますMage_CatalogSearch_Block_Layer。このブロックは最初のものを拡張しMage_Catalog_Block_Layer_Viewます。 たとえば、_initBlocks上記のようにメソッドを書き直す必要があります。しかし問題はMage_CatalogSearch_Block_Layer、独自の_initBlocks方法がないことです。親クラスからのものを使用しMage_Catalog_Block_Layer_Viewます。 …

2
削除された左側のブロックを再度追加します
Magento 1.9 CEを実行しています。 ベースから削除された後、左のブロックを再度追加しようとしています。 base / default / layout / storelocator.xml: <dealers_index_index translate="label"> <update handle="storelocator_index_index"/> <label>Store Locator</label> <remove name="right"/> <remove name="left"/> ... jason / default / layout / local.xml: <dealers_index_index translate="label"> <reference name="root"> <action method="setTemplate"><template>page/2columns-left.phtml</template></action> </reference> <reference name="left"/> </dealers_index_index> 顧客のロギングなどに応じて変更されるため、左の要素を明示的に設定する必要なく、単に左を再追加することを望んでいました。 addまたはresetコマンドはありますか?

2
コントローラーにすべての子ブロックをロードする方法
カートに追加するためにAjaxを使用しているため、カートのサイドバーを更新する必要があります。 このコードをコントローラーで試して、ブロックをレンダリングしました。 Mage::app()->getLayout()->getBlockSingleton('page/html')->setTemplate("page/html/upper.phtml")->toHtml(); ただし、親ブロックはレンダリングされ、子ブロックはレンダリングされません。 そしてレイアウトファイルは <block type="core/text_list" name="upper" as="upper" template="page/html/upper.phtml"> <block type="checkout/cart" name="top.cart" as="cart_overview"> <action method="setCartTemplate"><value>checkout/topcart.phtml</value></action> <action method="setEmptyTemplate"><value>checkout/cart/cartEmpty.phtml</value></action> <action method="chooseTemplate"/> <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action> </block> </block> コントローラーで子ブロックをレンダリングする方法 手伝ってください。
7 blocks  layout  ajax  render 

1
Magento + JQuery + Ajax-ブロック全体ではなく、カスタムモジュールの一部のみをリロードするにはどうすればよいですか?
私は最近、5日間でMagentoテンプレートのシンプルな製品コンフィギュレーターを作成するタスクを与えられました。ここで、いくつかの属性を選択し、価格を計算し、新しい画像をフェードインし、[カートに追加]ボタンを新しいものに変更します製品。 これまでは、PHPやJQueryの経験はなく、Magentoのいくつかの基本的な知識しかありませんでした(これまでにカスタムモジュールを行ったことはありません)。私の唯一のプログラミングの背景は、アクションスクリプト3のOOPゲームです。 これまでのところ、私のコードは何とか機能しています。いくつかのラジオボタンをクリックして変更できる変数がいくつかあり、それらの変数はajaxメソッドを介して更新されます。URLとして、レイアウトをロードしてレンダリングするだけのブロックインデックスメソッドが呼び出されます。返されたHTML(私のブロック全体)を、ブロック内の最も外側のdivの親に追加した後。それは機能しますが、変更をアニメーション化する方法を見つけることができないようで、ユーザーが1つのオプションを変更するたびにajaxがブロック全体を再構築する場合は少し遅いようです。 変更された部分をリロードしてスムーズに変更をアニメーション化し、ブロックに入力の変更を記憶させるよりエレガントな方法はありますか? ダウンロード用のすべてのファイルは次のとおりです。http://www.roflxd.de/doorconfig.zip 現在の外観を確認するためにサイト自体にアクセスする必要がある場合は、メッセージを送ってください:) 前もって感謝します! 私のブロックphtml: <?php $type = 'Simple'; $color = 'FFFFFF'; $size = '2500x1800'; if (isset($_POST['color'])) { $color = "#" . $_POST['color']; } if (isset($_POST['type'])) { $type = $_POST['type']; } if (isset($_POST['size'])) { $size = $_POST['size']; } $currentStoreUrl = Mage::getBaseUrl(); $currentProduct = $this->getProduct($type,$color,$size); $currentId = $currentProduct->getId(); …

2
Magento Core:1つのハンドルで同一のブロック名
「persistent.remember.me」というブロック名のテンプレートを変更したいのですが、同じハンドルの下に同じ名前の2つのブロックがあります。 app / design / frontend / base / default / layout / persistent.xml <checkout_onepage_index> <reference name="checkout.onepage.login"> <action method="setTemplate"><template>persistent/checkout/onepage/login.phtml</template></action> <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" /> </reference> <reference name="checkout.onepage.billing"> <action method="setTemplate"><template>persistent/checkout/onepage/billing.phtml</template></action> <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" /> <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" /> </reference> </checkout_onepage_index> 次の内容でlocal.xmlを作成しました。 app / design / frontend / mytheme / …
7 layout  blocks 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.