0

私はMagentoを初めて使用します。今日、Magentoを使い始めました。製品の [メタ] タブの下にある管理パネルにカスタム オプションを追加する必要があります。生成された sitemap.xml ファイルからこの製品を削除するように管理者が選択できるオプションを追加する必要があります。

ワードプレスでは、これはカスタム メタ フィールドまたはカスタム設定フィールドで実現されます。

カスタム設定を設定してから取得するための同様の機能が Magento に存在しますか? カスタム属性について何か見たのですが、私が説明している方法で動作するのではなく、実際にテーマとパネルに表示されているように見えましたか?

ユーザーJürgen Thelenは、実際のサイトマップの一部を除外するのに役立つ非常に役立つスニペットを以下に投稿しました。

だから私はちょうど理解する必要があります

  1. 製品の [メタ] タブに設定を追加する方法
  2. 以下のコードでこの設定値を取得して使用できるようにする方法

2 番目の部分は非常に簡単です。sitemap.xml で非表示に設定されているすべての製品値を取得する関数を作成し、以下のコードで使用します。

私の主な問題は、製品管理ページのメタ情報領域に設定を追加することです。

public function getCollection($storeId)
{
    $products = array();

    $store = Mage::app()->getStore($storeId);
    /* @var $store Mage_Core_Model_Store */

    if (!$store) {
        return false;
    }

    $urCondions = array(
        'e.entity_id=ur.product_id',
        'ur.category_id IS NULL',
        $this->_getWriteAdapter()->quoteInto('ur.store_id=?', $store->getId()),
        $this->_getWriteAdapter()->quoteInto('ur.is_system=?', 1),
    );
    $this->_select = $this->_getWriteAdapter()->select()
        ->from(array('e' => $this->getMainTable()), array($this->getIdFieldName()))
        ->join(
            array('w' => $this->getTable('catalog/product_website')),
            'e.entity_id=w.product_id',
            array()
        )
        ->where('w.website_id=?', $store->getWebsiteId())
        // --- exclude single product by its entity_id
        ->where('e.entity_id<>152')
        // --- exclude multiple products by their entity_id's
        // ->where('e.entity_id NOT IN (?)', array(152, 156))
        ->joinLeft(
            array('ur' => $this->getTable('core/url_rewrite')),
            join(' AND ', $urCondions),
            array('url' => 'request_path')
        );

    $this->_addFilter($storeId, 'visibility', Mage::getSingleton('catalog/product_visibility')->getVisibleInSiteIds(), 'in');
    $this->_addFilter($storeId, 'status', Mage::getSingleton('catalog/product_status')->getVisibleStatusIds(), 'in');

    $query = $this->_getWriteAdapter()->query($this->_select);
    while ($row = $query->fetch()) {
        $product = $this->_prepareProduct($row);
        $products[$product->getId()] = $product;
    }

    return $products;
}
4

1 に答える 1

2
  1. 製品プロパティが magento でどのように処理されるかを理解してください (製品属性)。メタ フィールドを製品に追加するには、最初に属性を作成する必要があります。次に、この属性を製品の属性セットに割り当てる必要があります (属性セットへの属性の追加)。デフォルトの属性セットで十分です。新しいフィールドが製品構成に表示されます。

  2. 新しい属性にアクセスするには、$product->getData('your_attribute')または$product->getYourAttribute()製品オブジェクトで呼び出すことができます。

于 2013-06-07T20:07:12.600 に答える