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

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

8
Magento2でコアブロック、モデル、コントローラーをオーバーライドする方法
Magento2でコアモデルのブロックとコントローラーをオーバーライドすることにこだわっています。誰でもこれを助けることができますか? リストツールバーを例として、sort by most popularという新しいソートオプションを追加する必要があります。どうすれば追加できますか?このために、ブロックレベルでオプションを追加し、List.phpコレクションレベルで条件を追加する必要があると思います。

5
拡張機能がクラスをグローバルに上書きし、元のクラスを使用したい場合はどうすればよいですか?
Mage_Catalog_Block_Product_List_Toolbarブロックをグローバルに上書きする拡張機能を使用しています。 <global> <blocks> <catalog> <rewrite> <product_list_toolbar>Amasty_Shopby_Block_Catalog_Product_List_Toolbar</product_list_toolbar> </rewrite> </catalog> </blocks> </global> 拡張機能は階層化されたナビゲーションカテゴリのコンテキストで機能しますが、独自の社内モジュールの別の(カスタム)ビューに任意の製品リストを挿入すると、書き換えられたクラスは適切に機能しません。テストのためだけに拡張機能を上書きする場合は、すべて正常に動作します。 拡張機能の開発者のコ​​ミュニティコードを編集せずに、独自のコントローラーだけで拡張機能の書き換えを元に戻すにはどうすればよいですか?

2
Magento 2でJSを拡張/オーバーライドする
Magento2はスクリプトの読み込みにRequireJSを使用しており、スキンフォルダーがなくなったため、問題が発生しました。 変更したバージョンでMagentoのモジュールJSファイルを置き換えるにはどうすればよいですか? たとえば、Magento_Checkout拡張機能に属するopc-checkout-method.jsです。私が見る限り、それはrequirejs-config.jsファイルで定義されていません。 私の拡張機能はMagento_Checkoutの後にロードされるため、requirejs-config.jsデータは、結果のrequirejs-configファイルの最後に追加されます。 または、スクリプト全体を置き換えることなく、他の方法でそれを行う必要がありますか?

5
すべてのクラス書き換えのリストを取得するにはどうすればよいですか?
すべての構成ファイルを確認する以外に、すべてのリライトおよびその他の潜在的な競合をリストする方法はありますか?私は多くの拡張機能とカスタム変更を含むいくつかのプロジェクトを分析する必要があり、これを可能な限り自動化したいと考えています。 最も重要なことは、同じクラスを書き換える拡張機能を検出することですが、概要を維持するために、すべての書き換えのリストも用意したいと思います。現時点では、このリストをスプレッドシートで手動で管理しています。 Magento Connectでこの拡張機能( "Extension Conflict")を見つけましたが、レビューとリリースノートから判断すると、古いようです。

4
libファイルを書き換える最新の方法
この問題はよく知られています。libクラスはオートローダーを介して排他的にロードされ、次のもの以外は変更できません。 libより前にチェックされるcodePoolにそれらを完全にコピーします。 PSR-0オートローダーをインストールし、オートロードクラスマップを指定し、代わりにファイルをそのフォルダー構造に完全にコピーします。[私の現在の解決策] これらのファイルの多くに潜在的に触れたいので、私は困難な状況にあります-しかし、ストアの健全性と安定性/アップグレード性のために、ライブラリクラス全体をコピーしたくありません。 現在、明らかにこの問題には潜在的な解決策がありますが、それらにはすべて独自の問題があります: 行くAOPのルートをとのようなPHPベースのライブラリを使用してゴー!AOP:最後に確認したのは、Magentoクラスが1つだけではなく、コンポーザーオートローダーによってロードされる必要があることです。Flyingmanaはこの分野でいくつかの作業を行いましたが、本番環境で使用する準備ができていないことは間違いなく、私のニーズはより迅速です。また、拡張機能として出荷したいのですが、これにはより多くの作曲家の設定が必要になります。 AOPルートに進み、ネイティブPHP拡張機能を使用します。おそらく現時点で最も有利ですが、HHVMで動作しないことは言うまでもなく、別の拡張機能をインストールする必要があります。 PHPのクラスキットおよび/またはrunkitを使用します。これは別のネイティブPHP拡張であるため、上記と同じ問題があります。 コールサイトにパッチを適用して、独自の名前空間(\Danslo\Varien_X)バージョンを使用し、元の()バージョンから拡張し\Varien_Xます。パッチを当てるコールサイトが多すぎます。オプションではありません。 自分で転がす:できること: 独自のオートローダーを作成します。 元のクラスを別のフォルダー({root_dir}/var/tmp)にコピーし、ラップしnamespace \Magento { < original contents > }ます。 そのファイルを含めます。 変更したクラスを含める OriginalClass extends Magento\OriginalClass {} これの欠点は明らかです。動的コード生成、正規表現、書き換えられたクラスをロードするための少しのオーバーヘッド。しかし、この時点で、〜100行をタッチ/追加したいだけで、〜5000行のコードをコピーするのに勝ると確信しています。 私は多くを求めていることを知っていますが、この問題を解決するのに役立つ現代的で比較的きれいなものがありますか?
21 overrides  core 

4
カスタムモジュールを使用してHTMLファイルをオーバーライドする方法
Magento 2で支払い方法のカスタムモジュールを開発しています。現在、ベンダーディレクトリからcc-form.htmlを使用しており、モジュールは正常に動作しています。以下のパスを参照してください。 vendor / magento / module-payment / view / frontend / web / template / payment / cc-form.html HTMLファイルをオーバーライドする方法はありますか? 注:カスタム拡張を使用してオーバーライドしたいと思います。以下のパスを参照してください。 app / code / Namespace / Module / view / frontend / web / template / payment / cc-form.html 任意の助けをいただければ幸いです。ありがとうございました!

2
Magento 2クラスとプラグインの書き換え
Magento 2には、Magento 1とは反対のプラグイン/インターセプト/インターセプターの概念があります。 これらは、すべてのパブリックメソッドのイベントの前後のように機能します。いいね メソッドの機能を置き換えるためにプラグインを 使用することもできaroundます。 ただし、Magento 2では、M1方式とほぼ同様にクラスを書き換えることができます。 プラグインを使用する代わりにクラスを書き換えることが方法であるいくつかの例を見てみたいと思います。 これは、コア保護されたメソッドの動作を変更したいときに便利ですが、書き換えが推奨または必要な場合は他にありますか?

3
Magento 2:書き換えコントローラー
Magento 2でコントローラー(実際はアクション)を書き換えるにはどうすればよいですか?このようにここで指示されたように 、私は試しました: 同じシステムがモデルとブロックで機能するため、ファイルで呼び出される独自のモジュールNamespace_Moduleがあり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"> <!-- this one doesn't work for a controller action --> <preference for="Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics" type="Namespace\Module\Controller\Adminhtml\Dashboard\RefreshStatistics" /> <!-- this one works for a model --> <preference for="Magento\Customer\Model\Resource\GroupRepository" type="Namespace\Module\Model\Resource\Customer\GroupRepository" /> <!-- this one works also for a block --> <preference for="Magento\Backend\Block\Dashboard" type="Namespace\Module\Block\Backend\Dashboard" /> </config> …

3
Magento 2の抽象クラスに新しいメソッドを追加する
このスレッドが言ったように:Magento 1のMagento 2で抽象クラスをオーバーライド、 完全に新しいクラスを作成できます。Magento 2では、プラグインを使用する必要がありますが、プラグインでは既存のメソッドを変更することしかできません。新しいメソッドを追加する場合はどうすればよいですか? 例: このクラスvendor/magento/module-ui/Component/AbstractComponent.phpには、コンポーネントの配列があります:$components、その配列の要素を設定/削除する機能はありません。それでは、どうすればその関数を作成できますか?

5
Magento 2:コアブロックのカスタムテンプレートを設定する方法
私のモジュールでregister.phtmlをオーバーライドしようとしていますが、Magentoがカスタムモジュールを使用してコアモジュールのテンプレートをオーバーライドできないようにする構成上の問題があるようです。コードを確認しましたが、問題が見つかりません。誰でも助けることができますか?前もって感謝します。module.xml: <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Namespace_ModuleName" setup_version="0.0.2"> <sequence> <module name="Magento_Customer"/> </sequence> </module> </config> Namespace \ ModuleName \ view \ frontend \ layoutの下のcustomer_account_create.xml: <?xml version="1.0"?> <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd"> <referenceBlock name="customer_form_register"> <arguments> <argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument> </arguments> </referenceBlock> </layout> composer.json: { "name": "namespace/module-modulename", "description": "modulename", "type": "magento2-module", "version": "0.0.2", "license": [ "OSL-3.0", "AFL-3.0" …

1
config.xmlをオーバーライドする方法
お問い合わせページのメールテンプレートタイプを「テキスト」から「HTML」に変更する必要があります。config.xmlにあることがわかりました <email> <contacts_email_email_template translate="label" module="contacts"> <label>Contact Form</label> <file>contact_form.html</file> <type>text</type> </contacts_email_email_template> </email> config.xmlを適切にオーバーライドする方法 [編集]これはapp / code / core / mage / contact / etc / config.xmlファイル用であり、以下の回答は... / mage / ANYTHING / etc / config.xmlに対して機能します。

3
すでに書き換えられたクラスを書き換える方法は?
更新:実際に書き換える必要があるクラスはSMDesign_SMDZoom_Block_Product_View_Media、SMDesign_ColorswatchProductView_Block_Product_View_Media当初考えていたものではないことがわかりました。ただし、まったく同じ問題が引き続き適用されます。 SMDesign SMDZoom拡張機能は、ブロッククラス「catalog / product_view_media」を書き換えます。そのためのxmlは次のようになります。 <global> ... <blocks> <smdzoom> <class>SMDesign_SMDZoom_Block</class> </smdzoom> </blocks> <blocks> <catalog> <rewrite> <product_view_media>SMDesign_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> </blocks> .... </global> このクラスをもう一度書き直したいと思います。このsmdzoomモジュールが書き換えているcatalog / product_view_mediaクラスを書き換えたいです。これはできますか?これを行うために私のモジュールではconfig xmlはどのように見えますか? 現在、これは私のモジュールinit xmlファイルです。 <config> <modules> <Goorin_SMDZoom> <active>true</active> <codePool>local</codePool> </Goorin_SMDZoom> <depends> <Mage_Catalog /> <SMDesign_SMDZoom /> </depends> </modules> </config> およびモジュールのconfig.xmlファイル: <global> <blocks> <gbismdzoom> <class>Goorin_SMDZoom_Block</class> </gbismdzoom> <catalog> <rewrite> <product_view_media>Goorin_SMDZoom_Block_Product_View_Media</product_view_media> …

7
Magento 2で.phtmlファイルをオーバーライドする方法
製品の詳細ページをカスタマイズしたいので、次の場所にあるいくつかの.phtmlファイルをオーバーライドする必要がありました。 だから、私は知りたい、または.phtmlファイルをオーバーライドする方法vendor\magento\module-catalog\view\frontend\templates\productvendor\magento\module-theme\view


2
Magento2でコアプラグインをオーバーライドまたは無効にする方法
Magento2を使用してマーケットプレイスを構築しています。そのため、ベンダーの顧客資格情報を使用して顧客の注文を読み込むことができる必要があります。 これに関する問題は、Magento2がプラグインを使用して、この注文の顧客(または管理者)のみが注文をロードできることを確認することです。 この場合、プラグイン全体をオーバーライドするか、protected methodをオーバーライドする必要がありますisAllowed()。コアを変更せずに何ができますか? Magento\Sales\Model\ResourceModel\Order\Plugin\Authorization このように見える: use Magento\Authorization\Model\UserContextInterface; use Magento\Framework\Exception\NoSuchEntityException; class Authorization { /** * @var UserContextInterface */ protected $userContext; /** * @param UserContextInterface $userContext */ public function __construct( \Magento\Authorization\Model\UserContextInterface $userContext ) { $this->userContext = $userContext; } /** * Checks if order is allowed * * @param \Magento\Sales\Model\ResourceModel\Order $subject * …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.