Magmi url_key slug - 如何包括sku?

时间:2015-02-04 15:39:19

标签: magento url magmi

我试图找出将商店中的网址密钥更改为name-sku.html的最佳操作方法

目前MAGMI似乎正在指定网址密钥,这很好。我们的一些产品不是通过MAGMI导入的,所以我想我可能还必须使用updateurl事件来更改保存的网址 - 我在这里找到了这个 - https://magento.stackexchange.com/questions/24869/manufacturer-in-product-url-key

问题是,在MAGMI中如何做到这一点最好?我目前正在进口约300,000种产品。 URL也需要更改,因为它目前只使用默认设置。

我已经在这里查看了wiki - http://wiki.magmi.org/index.php?title=Value_Replacer - 我想以下代码可以用于当前的工作方式 - 但是我实际输入的值是什么?

{{ Slugger::slug({item.name}) }}

有没有人知道如何添加sku?我会做些像....

{{ Slugger::slug({item.name} ."-". {item.sku}) }}

此外,是否有人知道这是否会自动添加破折号和.html?

非常感谢任何指导。

编辑:

我已经成功测试了它在我的测试环境中工作,但它在我的生产环境中没有按预期工作。我会回顾一下发生的事情,以及我所做的事情。

1)我清除了core_url_rewrite表 2)我删除了所有缓存 3)我设置了MAGMI(将其更新为最新版本,并对我的所有设置进行了三重检查) 4)MAGMI经历了罚款,我检查过的约5种产品的网址关键是我的期望 5)在目录url重写reindex期间,所有url键都消失了。 6)完成reindex之后,它们现在处于默认的magento格式(仅使用名称,而不是sku)

有什么想法吗?

我现在可以想到的生产和开发之间的唯一区别可能是与我有关的事实是我确实创建了一个基于链接的制造商产品 - 网址 - 关键问题的模块生产。现在我想到了,也许这就是我需要解决的主要区别......我没有想到重新索引会与此有什么关系,但也许我错了

无论如何,如果有人有任何见解,我仍然会很感激。我有一种感觉,也许MAGMI也应该重写url_path?我想我在某处读到了一些东西。

2 个答案:

答案 0 :(得分:1)

好的,我想出来了。我认为这是最好的方法。

我的问题出错了。我实际上想要添加mpn,而不是sku。无论哪种方式,这都不会改变过程。

因此,最好的办法是在MAGMI中使用Value Replacer,并创建一个自定义模块,用于更新Magento catalog_product_save_before事件中的URL。

这正是我所做的......

MAGMI设置(值替换器)

Replaced attributes: url_key
New value for url_key: {{ Slugger::slug({item.name}.' '.{item.mpn}) }}

URLKeyChange(Magento模块)

应用程序/代码/本地/我/ URLKeyChange的/ etc / config.xml中

<config>

    <global>

       <models>

           <LeathornURLRewrite>
                <class>Leathorn_URLKeyChange_Model</class>
           </LeathornURLRewrite>

       </models>

            <events>
                <catalog_product_save_before>
                    <observers>
                        <LeathornURLRewrite>
                            <type>singleton</type>
                            <class>LeathornURLRewrite/observer</class>
                            <method>updateurl</method>
                        </LeathornURLRewrite>
                    </observers>
                </catalog_product_save_before>
            </events>
    </global>

</config>

应用程序/代码/本地/我/ URLKeyChange /型号/ Observer.php

class My_URLKeyChange_Model_Observer {
    public function updateurl($observer){
        Mage::log('My log entry', null, 'mylogfile.log');
        if($observer->getEvent()->getProduct()){
            $Product=$observer->getEvent()->getProduct();
            $Url='';
            if(!is_null($Product->getData('name'))):
            $Url=$Url.$Product->getData('name');
            endif;
            if(!is_null($Product->getData('mpn'))):
            $Url=$Url.$Product->getData('mpn').'-';
            endif;
            //Mage::log('My log entry'.$Url, null, 'mylogfile.log');
            $Product->setData('url_key',$Url);
        }
    }
}

应用程序的/ etc /模块/ My_URLKeyChange.xml

<config>
    <modules>
        <My_URLKeyChange>

            <!-- Whether our module is active: true or false -->
            <active>true</active>

            <!-- Which code pool to use: core, community or local -->
            <codePool>local</codePool>

        </My_URLKeyChange>
    </modules>
</config>

答案 1 :(得分:0)

网址密钥始终只是短划线字符串。别担心,magento会动态添加.html。您可以在任何产品配置页面中看到magnento后端,url键没有html。

此外,magento会在网址密钥中添加破折号,替换您的&#34; - &#34;按空间&#34; &#34 ;.否则,它将使用姓名和SKU的最后一个单词作为一个单词。 :)