Magento

Magento eコマースプラットフォームのユーザー向けのQ&A

3
Magento 2モジュールの統合テストの作成
これまでのところ、Magento 2のテストニーズに合わせて、PHPユニットを(多少なりとも)受け入れテスターとして使用してきました。サーバーの結果をテストし、モジュールがインストールされたシステムにHTMLリクエストを送信しました。独自の統合テストを作成できるようにします。Magento 2に同梱されているテストツールを使用すると、サードパーティの開発者は、Magentoのテストフレームワークコードを活用する独自の統合テストを作成できますか?それとも、私たち全員が独自のブートストラップを展開しますか? あれは 私はMagentoの開発者です 統合テストを作成したい 統合テストでは、Magento環境を完全にブートストラップして再生します(使用するオブジェクトマネージャーや依存関係の注入など)。 統合テストでテストを拡張しMagento\TestFramework\TestCase\AbstractControllerて、Magentoテストと同じヘルパーを使用したい テストを他のテストスイートから分離して実行できるようにしたい(つまり、15秒のテストを実行するのに2時間待つ必要がない) Magentoのテストとは別にテストを保存したい dev docsサイトにはテストに関するいくつかのスターター記事がありますが、Magentoに同梱されているテストを実行することを目的としており、独自のテストを作成して実行することはしていません。古いサンプルモジュールがありますが、それらはすべてPHPUnit_Framework_TestCaseクラスを拡張し、単体テスト(つまり、Magentoフレームワークに依存しないコードのテスト)のようです。 これを行うMagento提供の方法はありますか? そうでない場合、Magento開発者コミュニティのテストがそれを標準として採用できるように、誰かが独自のセットアップを展開しましたか?

4
新しい拡張機能のインストールで404エラーを回避する方法
system.xml configを使用して新しい拡張機能をインストールすると、Magentoに表示される非常に一般的なエラーです。 System->Configuration->Extensionタブに移動すると、404エラーが表示されます。ログアウトして再度ログインする必要がありますが、その後は問題ありません。しかし、これを回避する方法はありますか?

2
コレクションクエリでテーブルを左結合する
エクスポートのためにシステムからいくつかの注文を取得するために、次のことを行っています。 $orders = Mage::getModel('sales/order')->getCollection() ->addFieldToFilter('status', $statusToExport) ->addFieldToFilter('store_id', $this->processingStoreId) ->addFieldToFilter('updated_at', array('gteq' => date('Y-m-d H:i:s', $lastSyncTime))); 注文がカスタムテーブルにある場合、エクスポートしない場所に何かを追加する必要がありentity_idます。SQLを使用していた場合、次のようにします。 left join myTable as mt on main_table.entity_id = mt.entity_id where mt.entity_id is null ただし、コレクションクエリを変更して同様のことを行う方法はわかりません。 注:試しました $orders = $orders->getSelect() ->joinLeft( array("t1" => $myTable), "main_table.entity_id = t1.entity_id", array("admin_field_id" => "t1.id") ) ->where("t1.id is null") ただし、これによりクエリが変更されるため、販売/注文のコレクションを返す必要があります。 シンプルなものが足りないと感じています... 編集 …

5
loadBySku()を使用してSKUで製品をロードできないのはなぜですか?
あらすじ SKUで製品をロードしたかったのですが、多くの記事、ブログ投稿、スタックオーバーフローの結果などがあります。知りたいのは、SKUで製品をロードするのがなぜそれほど難しくなければならないのですか? // This method does not work (Of all, I expect this to work) $product = Mage::getModel('catalog/product')->loadBySku($sku); // These do not work either $product = Mage::getModel('catalog/product')->loadByAttribute($sku, 'sku'); $product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku); // This does not work $product = Mage::getModel('catalog/product')->load($sku, 'sku'); もちろん、私はこの時点でMagentoからsimple何かをする方法にあまりにも多くを期待しています(単純なことはMagentoがよく知らない概念です) // This works: $product = Mage::getModel('catalog/product'); $product->load($product->getIdBySku($sku));

4
IDから製品URLを効率的に取得
IDのみを指定して製品のURLを取得する最も効率的な方法は何ですか?コードのいくつかの場所にMage::getModel('catalog/product')->load($id)->getProductUrl()は、製品のURLを取得するため、製品に関連するイベントの量などを考えると、これはかなり無駄に思えますが、もっと簡単な方法はありますか?カテゴリIDも指定できると便利です。 さらに、名前などの製品の単一の属性に対して同じことを行うための効率的な方法はありますか?

4
モジュールの無効化-パフォーマンスの改善?
この質問には2つの部分があります。 コアモジュールを無効にすると、ストアの全体的なパフォーマンスが向上しますか。その場合、管理で無効にする(フロントエンド出力を無効にする)か、このパフォーマンスの改善を確認するにはconfig.xmlで無効にする必要があります。 パフォーマンスの改善が必要な場合、ストック上のどのモジュール、CE 1.7.0.2ビルドは、パート1で回答した方法で安全に無効にできます。

4
オブザーバーの後に$ thisを返す
インターネットとサードパーティのモジュールで矛盾する情報がいくつかあります- $thisオブザーバーメソッドの最後に戻ることは要件ですか、それともベストプラクティスですか? 例えば: MyCompany_Module_Model_Observer.php public function salesOrderSaveAfter($observer){ //do stuff return $this; }

3
is_salableはどこから来たのですか?
注:PHPコードを使用して製品を編集している場合は、管理者でインデックスを再作成し、以下のように表示されない理由を考えて時間を節約してください... 私はis_salable、製品にどのように設定されているかを理解しようとしているので、私の製品が現在表示されている理由を理解しようとしています。 私が見つけることができるコードには、それを設定する場所が1つしかありません: $salable = $this->isAvailable(); しかし、私は方法や場所、この私が続く場合など、から取得して動作することはできませんisAvailable....それだけで戻って周りにループに思えます /app/code/core/Mage/Catalog/Model/Product.php public function isSalable() { Mage::dispatchEvent('catalog_product_is_salable_before', array( 'product' => $this )); $salable = $this->isAvailable(); $object = new Varien_Object(array( 'product' => $this, 'is_salable' => $salable )); Mage::dispatchEvent('catalog_product_is_salable_after', array( 'product' => $this, 'salable' => $object )); return $object->getIsSalable(); } ここから$ this-> isAvailable()に続いて、数行進みます: **public function isAvailable() …
27 catalog  core 


4
アップグレードスクリプト-オプションで新しいselect属性を作成します
アップグレードスクリプトを使用して、いくつかの定義済みオプションを使用して新しい製品属性を作成したいと思います。 アップグレードスクリプトが機能しているので、ドロップダウンオプションを属性と共に追加することしかできません。 次を使用して、モジュールアップグレードスクリプト内に属性を追加しています。 $installer->addAttribute('catalog_product', "shirt_size", array( 'type' => 'int', 'input' => 'select', 'label' => 'Shirt Size', 'sort_order' => 1000, 'required' => false, 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, )); それに加えて、3つのオプション(小、中、大)を追加するにはどうすればよいですか? カスタムソースモデルを使用したくありません。通常のオプションが欲しい

4
1.7の丸めの問題のステータスは何ですか?
Magento CE 1.7を使用しており、さまざまな丸めの問題があります。さまざまな計算では、0.01ユーロの差があります。 基本的な問題は、記事の価格が含まれていることかもしれません。税金。 共同プログラマは、Mage_Core_Model_Store::roundPrice()4桁の精度で計算するメソッドを上書きしました。しかし、これはPayPalの支払いに問題を引き起こすようです。 これらの問題の解決策はありますか? 編集: 私たちは、実際には、基本的に丸め4桁を追加する公式のコアのパッチを試してみました\Mage_Tax_Model_Sales_Total_Quote_Shipping::_round、\Mage_Tax_Model_Sales_Total_Quote_Subtotal::_deltaRoundそして\Mage_Tax_Model_Sales_Total_Quote_Tax::_deltaRoundクーポン丸め問題ではなく、ペイパルの問題を修正しました。

8
カートのすべてのアイテムのドロップ/カートセッションのクリア
私が突然管理するサイト(2週間前-GA統計から、現在のみ報告されている)が、カートを表示するか、チェックアウトに行くと、カートのアイテムをドロップし始めました。 一番上の「ミニカート」には、カート/チェックアウトを参照し、「カートにアイテムがありません」というメッセージが表示されるまで、ドロップダウンにアイテムが表示されます。 セッションの問題のようです。ログインしても発生しません。 「システム->ウェブ->セッション検証設定」のすべてのセッション検証オプションを削除し、「フロントエンドでSIDを使用」というオプションを有効にしました。これで問題は解決しましたが、これらの設定は過去3か月間変更されていないため、根本的な問題があることがわかります。 これは、sore-id問題の問題を示していますか?どういうわけか、サイトはどのストアIDを失い、セッション/カートデータをドロップしていますか?たぶん、いくつかのモジュールによるいくつかのオブザーバー/イベント/書き換え。 ローカルdevまたはUATサーバーで問題を再現できません。UAT上のDBはライブから2週間であるため、これはdbの問題/設定を指している可能性がありますか? 私がやろうとしていること:現在のライブデータベースをUATに移動して最新の状態にして、そこで問題を再現できるかどうかを確認しています。それが完了すると更新されます。 非ライブ領域で問題を再現できるようになったら、モジュールを体系的に無効にし、ストアIDに問題があるかどうかを確認します(2週間前に更新されたため、MageMonkeyとsweettoothで始まります) 質問は-他に何ができますか?いくつかのブレークポイントを叩き、コードをステップ実行してこの問題をトレースできるかどうかを確認できる場所へのポインターはありますか? ニスやmemcacheのような追加のキャッシュシステムはインストールされていません。サーバーは標準のcpanelインストールです。uatでテストすると、すべてのキャッシュが無効になりました。 さらに更新:デフォルトのテーマにドロップすると、再現できないようです。テーマオーバーライドフォルダーを体系的に移動しています。 また、コードをバックトラックするためにgitを使用しましたが、すべてのハッシュに問題が残っています。 更新:これに時間を費やしてからしばらく経ちました。高い作業負荷。 セッションをファイルベースに移動し、問題はなくなりました。クライアントは近い将来に複数のサーバーを使用するつもりはないので、私の作業負荷のために、これは残されました。後で私に噛み付く可能性が高いでしょう。 magentoサポートは、この問題がセッションクラスを拡張するスイートトゥースモジュールに関連していることを示唆しましたが、そのモジュールを無効にしましたが、問題は残りました。 より多くの結果が得られたら更新されます。
27 checkout  session  cart 

4
すべてのURL書き換えを消去-エンタープライズ(1.13)
インポートがめちゃくちゃになった後、削除する必要があるURL書き換えの負荷が残っています。 Enterprise 1.13を実行しています コミュニティでこの問題が発生したとき、単に切り捨てcore_url_rewrite、インデックスを再作成しました。 ただし、エンタープライズでは、書き換えを制御するさまざまなテーブルがいくつかあることに気付きました。 enterprise_url_rewrite enterprise_url_rewrite_category_cl enterprise_url_rewrite_product_cl enterprise_url_rewrite_redirect enterprise_url_rewrite_redirect_cl enterprise_url_rewrite_redirect_rewrite それらすべてを切り捨てても安全ですか? これらのテーブルを切り捨ててはならないことを誰かが教えてくれることを完全に期待しています。

1
Magento 2.1:エンティティマネージャーの使用
2.1からMagentoが導入されましたMagento/Framework/Model/EntityManager 私はここで間違っているかもしれませんが、私の理解から、Magento/Framework/Model/AbstractModel継承を介して機能を実装していたものを置き換え、構成を介してこれを解決することです(FYI:https : //en.m.wikipedia.org/wiki/Composition_over_inheritance) コアファイルでサンプルを入手できます:https : //github.com/magento/magento2/blob/59671558ecdab652b40db2d1a7c63d5b1dea0a92/app/code/Magento/Cms/Model/ResourceModel/Block.php 基本的に、すべてのCRUD操作はクラスで明示的に宣言され、クラスに委ねられEntityManagerます。2.1以前では、親メソッドは継承を介して呼び出されていました。 だから私の質問は: EntityManager2.1以前の継承システムに比べて、どのような利点がありますか? されるだけで十分(上記の例のように)CRUDメソッドを宣言すると、カスタムのCRUDモジュールでそれを実装を開始以上ありますか?

2
Magento 2:プラグインとオブザーバー
Magento 2では、何かを達成するためにプラグインとオブザーバーを使用することの長所と短所は何ですか? オブザーバーはイベントにサブスクライブするのに対し、プラグインはMagentoクラスでパブリックメソッドが呼び出される前および/または後にジャンプできることを理解していますが、確かにそれらはパスを交差するところに近づいていますか?

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