2012-12-12 74 views
4

我已經爲添加了自己的產品的店主設置了magento安裝。不幸的是,他並不瞭解URl關鍵領域。在他複製產品時,每個產品現在都有一個相同的URL,其中包含增量編號/product-1234.html,下一個/product-1235.html。由於他有近2k個產品,因此手動調整所有url密鑰將會很麻煩。有沒有辦法在不損壞商店的情況下在magento(或直接在DB上)清除它。看來,如果我刪除一個URL鍵magento自動生成一個,這對我來說很好。清除Magento中的URL鍵

編輯:好的,我發現我可以通過清除數據庫表(catalog_product_entity_varchar)中的某些字段來重置URL鍵,但現在我需要Magento使用產品名稱創建新的字段。有任何想法嗎?

謝謝。

+0

你運行'目錄URL重寫'reindex? –

+0

這可能只會根據ULR密鑰字段中的信息創建重寫嗎? –

+1

如果URL密鑰存在,如果您刪除它,它將使用該名稱。查看'Mage_Catalog_Model_Url :: _ refreshProductRewrite'。 –

回答

6

這是一個甚至沒有經過測試的quickie。如果有很多產品可能需要很長時間,但它也會同時更新重寫記錄。將其複製到站點根目錄中的.php文件中並執行它。

<?php 
require 'app/Mage.php'; 
Mage::app(); 

$products = Mage::getModel('catalog/product')->getCollection(); 
foreach ($products as $product) { 
    $product->setUrlKey($product->getSku()) 
      ->save(); 
} 
+0

我測試了這段代碼的一部分,但是$ product-> getSku()返回某種數字,是不是需要返回產品的名稱? –

+0

設置SKU不是很好的搜索引擎優化我認爲... – sparrow

+0

@sparrow你可能是正確的,但它用來演示如何循環通過一個集合。此外,SKU可能只是字母數字字符,並且沒有標點或空格,至少使其適用於URL鍵。 – clockworkgeek

6

最後使用下面的代碼修復它,建立在clockworkgeek的示例上。感謝那!

<?php 
require 'app/Mage.php'; 
Mage::app(); 
$amount = 0; 
$model = Mage::getModel('catalog/product'); 
$products = $model->getCollection(); 
foreach ($products as $product) { 
    $model->load($product->getId()); 
    $product->setUrlKey($model->getName())->save(); 
    set_time_limit(); 
    $amount++; 
}