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

コア機能のオーバーライドに関する質問(クラスの書き換え、ローカルコードプール、テーマのオーバーライド)。URLの書き換えには、代わりに「url-rewrite」タグを使用します。

2
リソースモデルを書き換えるときに非推奨の「Mysql4」クラスを処理する方法
書き直さなければならないMage_Catalog_Model_Resource_Category_Flat。 古いリソースクラスMage_Catalog_Model_Resource_Eav_Mysql4_Category_Flatは、下位互換性のためにMagento 1.7に引き続き存在し、新しいリソースクラスを拡張します。 完全なモデルエイリアスをコードベースで検索してresource_eav_mysql4_category_flatも、結果は得られませんでした。しかし、config.xmlMage_Catalogの次の行が含まれています。 <deprecatedNode>catalog_resource_eav_mysql4</deprecatedNode> また、どこでどのようdeprecatedNodeに使用されているのかわかりません。 このようなリソースモデルを書き換えるときに予想される困難は何ですか?両方のクラスを書き直す必要がありますか?または、mysql4クラスを安全に無視できますか?

5
ブレッドクラム区切り記号の変更
デフォルトでは、パンくずリストは次のようになります。ホームページ>カテゴリ>製品。 大なり記号(>)を変更したいと思います。それを生成するコードは vendor/magento/magento2-base/lib/web/css/source/lib/_breadcrumbs.less 次のようになります: .lib-breadcrumbs( ... // Breadcrumbs separating symbol @_breadcrumbs-separator-symbol: @breadcrumbs-separator__symbol, ... & when not (@_breadcrumbs-separator-symbol = '') and not (@_breadcrumbs-separator-symbol = false) { // Insert separating symbol to "content" .item:not(:last-child) { &:after { .lib-css(color, @_breadcrumbs-separator-color); .lib-css(content, @_breadcrumbs-separator-symbol); } } } 私が定義を見つけた唯一の場所@breadcrumbs-separator__symbolは vendor/magento/magento2-base/lib/web/css/source/lib/variables/_breadcrumbs.less falseと定義されている場合 @breadcrumbs-separator__symbol: false; @breadcrumbs-separator__symbol結果をオーバーライドすると、奇妙なシンボルが表示されます。 私が選んだシンボルの代わりに。 さらに混乱を招くように、生成されたhtmlでは、シンボルの内容が …

2
Magento 1:コアコントローラークラスをオーバーライド/書き換える方法
注:これは、コントローラーの書き換えがどのように機能するかを完全に説明する正規の質問であり、より具体的な「コントローラーXをオーバーライドする方法」または「書き換えが機能しない理由」の質問の重複ターゲットとして使用できます。 参照:Magento 1のオーバーライドに関する正規の質問を探す たとえば、カスタムモジュールのコアコントローラークラスを変更する必要があるとします(メソッドの変更またはメソッドの追加)。これをどのようにして、段階的に行いますか?

3
Magento 2はバックエンドにボタンを追加します
cmsページ編集ビューのバックエンドに別のボタンを追加したいのですが。だから私はモジュールを作成しました(https://community.magento.com/t5/Programming-Questions/Overriding-a-block-in-Magento-2/mp/6831の助けを借りて): app / code / Company / Modulename / etc / module.xml <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> <module name="Company_Modulename" schema_version="0.0.1" setup_version="0.0.1"> <sequence> <module name="Magento_Cms" /> </sequence> </module> </config> app / code / Company / Modulename / etc / di.xml <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd"> <preference for="Magento\Cms\Block\Adminhtml\Page\Edit" type="Company\Modulename\Block\Adminhtml\Page\Edit" /> </config> app …

2
AccountControllerオーバーライドが新しいアクションで機能せず、302リダイレクトを行う
アドオンnew actionしてみますAccountController 今:AccountControllerは適切にオーバーライドされます しかしいつでも hit new Action (ajaxLoginPostAction) is redirect to 302. preDispatch()関数のオープンアクションとしてajaxLoginPost()を追加しますが、till is not works. ここに config.xml: <?xml version="1.0" encoding="UTF-8"?> <!-- @author Amit Bera --> <config> <modules> <Bluehorse_Ajaxlogin> <version>1.0.0</version> </Bluehorse_Ajaxlogin> </modules> <!-- rewrite Accont Controller --> <frontend> <routers> <customer> <args> <modules> <ajaxlogin before="Mage_Customer">Bluehorse_Ajaxlogin</ajaxlogin> </modules> </args> </customer> </routers> <layout> <updates> …

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ます。 …

3
カスタムオプションコンテナーを上書き/置き換える正しい方法は何ですか?
バックグラウンド 特定の製品で利用可能なオプションに関連/影響を与えるいくつかのカスタムエンティティを作成するモジュールを開発しています。仕組みは次のとおりです。 製品が読み込まれると、製品の2つの属性を使用してカスタムエンティティに対してクエリが実行されます。 クエリの結果を使用して、次のように2段階で表示します(顧客の最初の選択は、2番目の選択肢に影響します)。 チャレンジ これが私がフロントエンドで達成する必要があると知っていることです: 1. Product view.phtmlの2つのロジックをオーバーライドします。 - - 最初: <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>> ...がである場合にenctype="multipart/form-data"のみ追加され、私の製品には実際に$_product->getOptions()は追加されないことに気づくでしょうtrue(これによりが返されますfalse) --- 2番目: <?php if ($_product->isSaleable() && $this->hasOptions()):?> <?php echo $this->getChildChildHtml('container1', '', true, true) ?> <?php endif;?> ...また、私の製品には実際にはカスタムオプションがないため、$this->hasOptions()戻りfalse、container1のレンダリングが妨げられます。 2.以下に示す ように、 'container1'-カスタムオプションのhtmlを「含む」子ブロック(ブロックですか?)を置換/上書き/上書きします。 view.phtml直接コピーして編集することはこれを行う正しい方法ではないと主張するいくつかの投稿を読みましたが、代替手段は何ですか? 第二に、私が読んだIすることができますいずれかremoveまたは作品-私が使用する必要があり、その後、どのように私は正しく自分に置き換えてください方法?unSetcontainer1container1 どうもありがとうございました!

2
コアコントローラーのpreDispatchメソッドのオーバーライド
コアコントローラーのpreDispatchメソッドをオーバーライドする必要があります。コアコントローラーはから継承しますMage_Checkout_Controller_Action。これには、呼び出す必要のあるpreDispatchメソッドがあります。オーバーライドしたいコアコントローラーから拡張しているため、を呼び出すだけではできませんparent::preDispatch()。これは、回避しようとしている機能を取り込むためです。 私の質問は-継承チェーンで2レベル高いオーバーライドされたメソッドを呼び出すにはどうすればよいですか、またはこれを間違った方法で行っているのですか? 更新 どうやらこれは動作します: Mage_Checkout_Controller_Action::preDispatch(); (その方法は静的ではありませんが、毎日新しいことを学んでいると思います。) 今私の質問は:私がオーバーライドしているクラスからすべての機能をコピーする必要なしにこれを行うより良い方法はありますか? 私がこれを試みた理由は、顧客がマルチシッピングチェックアウトを行った後にMagentoにアドレス割り当てを記憶させ、その後に去ろうとしたため、この道を進んでいたためです。(FWIW、私は正しい方向に進むためにリンクされた記事が素晴らしいことを発見しましたが、これを機能させるために実行する必要がある手順に関しては多くの欠けているようです)。 私がオーバーライドしているコントローラーは、回避する必要があるMultishipping IndexActionへのリダイレクトを持つコアMultiShippingControllerです。少し補足すると、私はこの機能をほぼ完全に取得しましたが、いくつかの問題を除いて(カートへの最初のアイテムの追加とMage_Sales_Model_Quote_Item-> getQuoteItem()がaddresses.phtmlテンプレートでnullを返すことに関して)、それは完全に異なる議論です)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.