Magento

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

2
カスタム拡張機能Adminhtmlの入力として動的グリッドを追加する最良の方法
独自のグリッドを使用してカスタムストアロケーター拡張機能を構築し、Adminhtmlでページを編集すると、すべてがうまく機能します。店舗の営業時間については、属性オプションのような動的なグリッドを実装したいと思います。 今私は解決策を見つけましたが、より良い、または少なくともよりクリーンな方法があることを望んでいます。これまでのところ、フォームのフィールドにレンダラーを追加していますfieldset class Redkiwi_Rkstorelocator_Block_Adminhtml_Rkstorelocator_Edit_Tab_General extends Mage_Adminhtml_Block_Widget_Form { protected function _prepareForm() { $form = new Varien_Data_Form(); $this->setForm($form); $fieldset = $form->addFieldset('rkstorelocator_form', array('legend'=>Mage::helper('rkstorelocator')->__('Store information'))); [...] $officehours_field = $fieldset->addField('office_hours', 'editor', array( 'name' => 'office_hours', 'label' => Mage::helper('rkstorelocator')->__('Office hours'), 'required' => false, )); $officehours_block = $this->getLayout() ->createBlock('rkstorelocator/adminhtml_rkstorelocator_edit_renderer_officehours') ->setData(array( 'name' => 'office_hours', 'label' => Mage::helper('rkstorelocator')->__('Office hours'), …

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> …

2
モジュールのライセンスはどのように取得すればよいですか?
会社用に作成したモジュールがあります。バックオフィスソリューションからデータを取得し、Magentoにインポートします。また、Magentoからの注文を受け取り、それらをバックオフィスソフトウェアにインポートします。使用できるライセンスの種類についていくつか調べましたが、どのライセンスを使用すべきかわかりません。私の基本的な要件は次のとおりです。 誰かが自分の仕事としてコードをコピー/配布することは望ましくありません。 コードは自分で作成しますが、コアmagento関数を呼び出します。 このモジュールは無料でダウンロードできますが、それを使用するには、私の会社が提供するWebサービスUrlが必要になります(支払いの受領後)。 これをMagentoのすべてのバージョンに配布できるようにしたい(GO(私は思う)を除く)。 上記を念頭に置いた2つの質問: どのライセンスが私のニーズに最適ですか?(私はそれらをすべて読むための決定的なリストを見つけていません)。 このライセンスを強制するにはどうすればよいですか?各スクリプトの上部にいくつかの用語を追加して、ライセンスが適切に設定されていることを確認していますか? この情報がどこかに含まれている場合は、お気軽にリンクしてください。ただし、検索後に特定の状況に対応するものを見つけることができませんでした。

4
Magento-カスタム(非eav)モデル、複数フィールドによるロード
カスタムモデルとリソースモデルがあります。複数のフィールドを使用してモデルの単一インスタンスをロードしたい。 モデルには次のフィールドがあります。 id tag_name custom_name group_name idではなくtag_name、custom_name、およびgroup_nameに基づいてこのモデルをロードします。 現在、各フィールドにコレクションとaddFilterを使用しています。これは機能しますが、Magentoにこのタイプのことに対する標準的な戦略があるのではないかと思いましたか? 編集 コアmagentoはこのシナリオではコレクションを使用しないようですが、代わりにリソースモデルで直接SQLクエリを使用します。 この例は次のとおりです。 loadByAccountAndDate() に Mage_Paypal_Model_Resource_Report_Settlement コレクションがより簡潔な方法であると思われるときに、書かれるコードの量の点で、これには理由があります magentoがこのように選択する理由がわかりません
15 collection  model 

2
外部で使用するためにMagentoルーティングの外でブロックをロード/取得する
外部Webページがあり、Magentoフレームワークからサイトヘッダーブロックを取得して、この外部ページのヘッダーとして使用しようとしています。これは私がこれまでに持っているものです: // initialize Magento $rootPath = dirname(dirname(__FILE__)); $mageInc = $rootPath . "/app/Mage.php"; include_once $mageInc; Mage::app('admin')->setCurrentStore(0); $headerBlock = Mage::app()->getLayout()->createBlock('page/html_header'); //also tried //$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header', 'header'); ただし、そこで実行は停止し、エラーメッセージは表示されません。私の目標はblockをプルすることですMage_Page_Block_Html_Header。これを使用し<block type="page/html_header" name="header" as="header">て、page.xmlレイアウトファイルからすべてのコンテンツをロードできます。そのXMLタグは内側にラップされています <default translate="label" module="page"> <block type="page/html" name="root" output="toHtml" template="page/1column.phtml"> タグなので、どういうわけか指定する必要がありますか?私は何を間違えているのか、ここからどこへ行くのかわかりません

1
新しい変更ログテーブルのメカニズム(例:catalog_category_product_cat_cl)
データベースにある上記のテーブルを見つけました。Magento EE 1.13で新しく追加されたもので、新しいインデックス作成に関連していると思われます。 + ---------------------------------------- + | catalog_category_flat_cl | | catalog_category_product_cat_cl | | catalog_category_product_index_cl | | catalog_product_flat_cl | | catalog_product_index_price_cl | | cataloginventory_stock_status_cl | | catalogsearch_fulltext_cl | | enterprise_url_rewrite_category_cl | | enterprise_url_rewrite_product_cl | | enterprise_url_rewrite_redirect_cl | + ---------------------------------------- + これらのテーブルはどのように機能しますか?目的は何ですか? しばらくすると自動的にクリーニングされますか? それらのテーブルをバックアップに含めることは理にかなっていますか?
15 database  ee-1.13 

2
管理者に表示されるカテゴリをソートする方法は?
コードは次のとおりです。 $category = Mage::getModel('catalog/category')->load(3); $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren(); $subCatIds = explode(',',$subCats); $currentUrl = Mage::helper('core/url')->getCurrentUrl(); アドバイスしてください、thx!
15 frontend 

1
magentoコアテンプレートでモジュールの翻訳ファイルを使用する
私が取り組んでいる拡張機能では、モジュールのconfig.xmlを介してレイアウトXMLを追加しています。このレイアウトには、フロントエンドにいくつかの変更が加えられています。ただし、これらのブロックの一部は、Magentoコアモジュールに属します。テンプレートはすべて期待どおりに正しく表示されています。 モジュール自体にパッケージ化したテンプレートは、自分のモジュールの翻訳ファイルを使用しています。Magentoコアにパッケージ化されたテンプレートは、翻訳されていません。それぞれのコアモジュールに翻訳ファイルを追加すると、その翻訳ファイルが使用され、テンプレートに翻訳済みと表示されます。 Magentoコアモジュールの翻訳ファイルが見つからない場合に、Magentoにモジュールの翻訳ファイルを使用させる方法はありますか?ここで他にできることはありますか?

3
CSSとJSインクルードをフッターに追加するMagento
MagentoサイトのYslow最適化をいくつか行っており、CSSとJsをサイトのフッターに追加しようとしています。 現時点では、レイアウトXMLでヘッド参照タグを使用し、すべてのファイルを含めるためにaddJsおよびaddCssアクションを使用しています。フッターへのヘッド参照を交換しようとしましたが、サイトを表示しようとしたときにエラーが発生しました。これを行う方法はありlocal.xml ますか、フッターテンプレートファイル自体にハードコーディングする必要がありますか?
15 layout  javascript  css 

2
オブザーバーを使用してカートに製品を追加したばかりのカスタムオプションと賞品を作成する
オブザーバーのcheckoutCartProductAddAfterイベントを監視するオブザーバーを使用してquoteitemにカスタムオプションを追加し、商品がカートに追加された後に起動します。 public function checkoutCartProductAddAfter(Varien_Event_Observer $observer) { $item = $observer->getQuoteItem(); $item->addOption(new Varien_Object( array( 'product' => $item->getProduct(), 'label' => 'Free Gifts', 'value' => 'Spend $50 and get gift product worth $9.99' ) )); return; } オブザーバーは機能していますが、追加した製品にカスタムオプションを追加できません。追加した製品にオブザーバーを使用してカスタムオプションを追加するためのヘルプを提供してください。

5
実稼働データベースをテストデータに変換する
テストが実稼働に近いほど、実稼働の動作をエミュレートできます。データベースのバックアップを運用環境からテスト環境にコピーしたいのですが、テストが機能するように変更し、運用環境を妨害したり、実際の顧客に誤ってメールを送信したりしないようにする必要がありますweb/%secure/base_urlか? この質問について考える別の方法は、私自身の生産データからMagentoサンプルデータのようなものを生成する方法を検討することです。
15 database 

7
管理ページの致命的なエラー
magento 1.7をインストールしましたが、今までは正常に機能していました。 私は毎日製品を輸入しています。新しい製造元がある場合は、ドロップダウンベースの製造元属性に追加します。 今日、属性のバックエンドに新しいメーカーオプションを追加し、製品のインポートに成功しました。 しかし、その後、Magento管理サイトのページを開こうとすると、次のエラーメッセージが表示されます 致命的なエラー:36行目の/var/www/html/app/code/core/Mage/Catalog/Model/Category.phpにある最終メソッドMage_Core_Model_Abstract :: clearInstance()をオーバーライドできません このクラスのライン36はちょうどカーリーから始まっ{ています class Mage_Catalog_Model_Category extends Mage_Catalog_Model_Abstract { <-- this is line 36 そして、私がチェックしたMage_Catalog_Model_Categoryが、名前で定義された方法はありませんclearInstance。それは本当に迷惑です。 参考までに、製品のインポートと必要な属性の追加にADMINサイトを使用しているだけのコードの1文字には触れませんでした

3
コアモジュールを無効にした場合の副作用は何ですか?(例:Mage_Rss / Mage_Log)
たとえば、Mage_Rssは広く使用されておらず、チェックアウトリクエストごとに複数回キャッシュクリーニングを強制するため、Mage_Rssを無効にしてチェックアウトプロセスを高速化することをお勧めします。 私は同様の理由でMage_Logを無効にすることを評価しています-PapertrailApp.comを介してApacheログを集約するだけでなく、すでにGoogle Analyticsを導入していますが、結果をチェックするプロセスを正式化していないことに気づきましたので、お気軽にお答えください特にMage_Log用、または一般的にコアモジュールを無効にします。 / sqlのインストーラースクリプトと、\ etc \ config.xmlを参照して登録するイベントを調べることで、モジュールが使用するテーブルを判別できることはわかっていますが、他に関連するものは何ですか?このモジュールは、接頭辞log_を持つテーブルにのみ影響を与えるように合理的にカプセル化されていますか?このコアモジュールによって定義されたいくつかのイベントがありますが、それらのオブザーバーは正常/サイレントに失敗するか、ダウンストリームの問題を引き起こしますか?影響を受けるレポートがある場合、どのように通知するのですか?

1
CSVからデータベーステーブルを作成する
外部ソースから提供された表形式のデータにアクセスする必要があるモジュールに取り組んでいます。2列だけですが、およそ40000行あります。 現在、私のモジュールは必要に応じてCSV全体を解析しています。これはうまく機能しますが、ファイルは約450Kbなので、本番サイトにデプロイされるとサーバーリソースを使い果たします。 このデータをMagentoテーブルに移動したいのですが、問題があります。 私は、セットアップスクリプトalaでRDBMSメソッドを使用しています。 $installer = $this; $installer->startSetup(); $table = $installer->getConnection() ->newTable($installer->getTable('my_table')) ->addColumn('column_a', Varien_Db_Ddl_Table::TYPE_TEXT, 5, array( 'nullable' => false, ), 'Column A') ->addColumn('column_b', Varien_Db_Ddl_Table::TYPE_TEXT, 3, array( 'nullable' => false, ), 'Column B'); $installer->getConnection()->createTable($table); $installer->endSetup(); これはテーブルを作成するのにうまく機能しますが、実際にデータを取得することは頭を悩ませています(データベース管理に関してはまだ初心者です)。 理想的には、CSVファイルを解析してテーブルに値を挿入するだけで、大量のコピー/貼り付けを処理する必要はありません。 任意のCSVデータを処理するための組み込みメソッドはありますか、それとも必要なものだけを処理するためにすべてビルドされていますか?データをMagentoに取り込む最良の方法は何ですか?
15 database  setup 

2
CSSまたはJSをマージすると、ページタイプごとに新しいファイルが生成されます
たくさんの小さなCSSファイルとJSファイルがあり、マージを有効にすることは良い選択のようです。 CSSおよびJSファイルの多くは、すべてのページ(ホームページ、カテゴリページ、製品詳細ページ)で使用されます。 別のマージされたファイルが各ページに再度ロードされるのを見るたびに、含まれるCSSでさえ重複している必要があります。 どうすればこれを回避し、より多くのデータを再利用できますか?

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