3

Magentoの管理セクションの変更に関する一般的な質問がいくつかあります。回答していただければ幸いです。私はMagentoを初めて使用するので、ご容赦ください。

私の目標は、商品属性(「サイズ」など)を持つ新しい列をセクション内の「カテゴリ商品」テーブルに追加することです(下のCatalog -> Manage Cateoriesスクリーンショットを参照)。

Magentoの開発経験がほとんどないので、どこから始めればよいのかよくわかりません。ディレクトリの下にあるいくつかのGrid.phpファイルを調べたところadminhtml、のようなステートメントがたくさん表示addColumn(...)されていますが、新しい属性列のどこにスロットを配置するかわかりません。

また、コアファイルを直接変更するのではなく、localフォルダーの下の同じパスにコピーして、そこで編集または拡張することを想定していますか?変更を反映するには、構成ファイルを編集する必要がありますか、それとも他に何かする必要がありますか?私は-これを行うことによって-実際に自分のモジュールを作成していますか?

また、変更を加える前に「コンパイル」を無効にする必要があることも読みました。どうしてこれなの?他に考慮すべきことはありますか?

繰り返しになりますが、私はどんな助けにも非常に感謝しており、私の質問は基本的なものに見えなければならないことを感謝しています。あなたが私に向けることができるどんな補足的なリソースでもありがたいです。ありがとう。

ここに画像の説明を入力してください

4

3 に答える 3

5

実際、編集するファイルとその編集方法を理解することから始めるべきです。この場合、変更したいのですapp/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.phpが、あなたが言ったように、現在の場所にあるファイルを変更しないでください。「正しい」方法でファイルを変更するには、2 つの方法があります。

  1. (より困難ですが、より拡張可能です)で新しいモジュールを作成し、この新しいモジュールの別のブロックでそのブロック(単なるphpクラス)を上書きしていることをlocalMagentoに伝え、新しいクラスをコアブロッククラスにします。次に、1 つの関数を上書きするだけです ( )。etc/config.xmlextend_prepareColumns
  2. app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.php(より簡単) からにファイルをコピーし、app/code/local/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.php必要な機能を変更します ( _prepareColumns)

Magento を初めて使用する場合は、簡単な 2 番目のオプションを使用することをお勧めします。Magento は常にファイルをロードするlocal前にロードするcoreため、ファイルはcore使用されなくなり、バージョンlocalが使用されます。詳細については、Alan Storm のこの記事をお読みください。

必要な列を追加するには、SKU フィールドと同様の操作を行います

$this->addColumn('size', array(
    'header'    => Mage::helper('catalog')->__('Size'),
    'index'     => 'size'
));

希望する順序で (製品名と SKU の間)。あなたの製品には、size取得できるというフィールドがあると想定しています$product->getSize()

于 2012-09-30T08:18:48.870 に答える
2

Max のソリューションはかなり的を射ていましたが、いくつかの重要な手順が欠けていました。彼の元の方法について詳しく説明します

  1. app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.php を app/code/local/Mage/Adminhtml/Block/Catalog/Category/Tab にコピーして、Product タブの新しいローカル オーバーライドを作成します。 /Product.php

  2. グリッド ビューの変更には 2 つの関数が関係しています。_prepareCollection および _prepareColumns

  3. _prepareColumns は、次のように addColumn 関数への呼び出しを追加します。

    $this->addColumn('size', array(
        'header'    => Mage::helper('catalog')->__('Size'),
        'width'     => '80',
        'index'     => 'size'
    ));
    
  4. _prepareCollection、デフォルトでは、グリッドにロードされた製品コレクションにはいくつかの属性 (name、sku、price) しかありません。テキストフィールドのみで作業している場合は、->addAttributeToSelect('size') で now 属性を追加する必要があります。属性の場合、これはあなたがしなければならない変更の範囲ですが、属性が例えばドロップダウンである場合は、準備コレクションにさらに変更を加える必要があります:

  5. (オプション) ドロップダウン属性は、選択されたオプションの値のみを格納するため、Magento が値を正しく表示できるように addColumns 呼び出しにオプション配列を提供する必要があります。次の方法でそれを行うことができます。

Products のローカル コピーで、_prepareColumns 関数に以下を追加します。

    $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'colour');
    $options = array();
    foreach( $attribute->getSource()->getAllOptions(true, true) as $option ) {
       $options[$option['value']] = $option['label'];
    }
    $this->addColumn('colour', array(
        'header'    => Mage::helper('catalog')->__('Colour'),
        'width'     => '80',
        'index'     => 'colour',
        'type'      => 'options',
        'options'   =>  $options
    ));
于 2012-09-30T11:53:39.750 に答える
1

これらは非常に詳細な質問であり、多くのことを学べると確信していますが、既成の解決策があります。強化された管理製品グリッドには、任意の属性を列として追加する機能があります。

于 2012-09-30T09:54:32.150 に答える