Magmi url_key slug - 如何包含 sku?

Magmi url_key slug - how to include sku?

我正在尝试找出将商店中的 URL 键更改为 name-sku.html

的最佳行动方案

目前 MAGMI 似乎在口授 url 键,这很好。我们的一些产品不是通过 MAGMI 导入的,所以我想我可能还必须使用 updateurl 事件来更改保存时的 url -- 我在这里找到了这个 -- 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 table 2)我删除了所有缓存 3) 我设置了 MAGMI(也将它更新到最新版本,并三次检查了我的所有设置) 4) MAGMI 一切顺利,我检查的大约 5 个产品上的 url 键符合我的预期 5) 在目录 url 重写 reindex 期间,所有 url 键都消失了。 6) 重建索引完成后,它们现在是默认的 magento 格式(只使用名称,而不是 sku)

有什么想法吗?

目前我能想到的生产和开发之间唯一可能与此有关的区别是我确实基于链接的制造商在产品中创建了一个模块url-关于生产的关键问题。现在我想起来了,也许这就是我需要解决的主要区别.....我不认为重建索引与此有任何关系,但也许我错了。

不管怎样,如果有人有什么见解,我还是很感激的。我有一种感觉,也许 MAGMI 也应该重写 url_path?我想我在某个地方读到了一些相关内容。

URL 键将始终只是破折号分隔的字符串。不用担心,magento 会动态添加 .html 。您可以在任何产品配置页面的 magnento 后端看到,url 键没有 html。

此外,magento 会在 url 键中添加破折号,将您的“-”替换为 space“”。否则它会将名称的最后一个词和 SKU 视为一个词。 :)

好的,我明白了。我认为这是最好的方法。

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

因此,最好的办法是使用 MAGMI 中的值替换器,并创建一个自定义模块来更新 Magento catalog_product_save_before 事件上的 url。

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

MAGMI 设置(值替换器)

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

URLKeyChange(Magento 模块)

app/code/local/My/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>

app/code/local/My/URLKeyChange/Model/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);
        }
    }
}

app/etc/modules/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>