如何将自定义设置添加到Magento产品元页面?

时间:2013-06-07 16:02:19

标签: magento magento-1.7

我是Magento的新手,刚刚开始使用它。我需要在产品的Meta选项卡下的Admin面板中添加一个自定义选项。我需要添加一个选项,管理员可以选择从Generated sitemap.xml文件中删除此产品。

在wordpress中,可以通过自定义元字段或自定义设置字段来实现。

Magento中是否存在类似的功能,设置自定义设置然后检索它们?我看到了一些关于自定义属性的内容,但看起来它们实际上出现在主题和面板中,而不是以我描述的方式工作?

用户Jürgen Thelen发布了一个非常有用的代码段,可以帮助您查找不包含部分的实际站点地图。

所以我只需要搞清楚

  1. 如何将设置添加到产品的Meta选项卡
  2. 如何在我的代码中检索此设置值,以便我可以使用它
  3. 第二部分应该相当直接,创建一个函数来获取设置为隐藏在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;
    }
    

1 个答案:

答案 0 :(得分:2)

  1. 让自己熟悉如何在magento(product attributes)中处理产品属性。要将元字段添加到产品,您需要先create an attribute。然后,需要将此属性分配给产品的属性集(Adding attributes to attributesets)。默认属性集将执行。现在,您的产品配置中将显示新字段。

  2. 要访问新属性,您可以在产品对象上调用$product->getData('your_attribute')$product->getYourAttribute()