在我們到達代碼的位置之前,請注意您正在進入一個痛苦的世界。
有沒有簡單規則爲如何生成這些數字。有些情況下,它是商店ID,有些情況下它是簡單的產品ID。還有就是它的情況下,既不
即使有,是很常見的不來自從頭Magento的網站包含最終改變了這一
,因爲Magento的人類可讀/ SEO友好的URL位於自定義功能在core_url_rewrite
表,有可能爲人們提供了插入任意文本末日
警告放在一邊,你要尋找的模式是Mage::getSingleton('catalog/url')
。這包含了生成Magento Catalog和產品重寫的大部分邏輯。所有這些方法都通過將請求路徑傳遞給getUnusedPath
方法結束。
#File: app/code/core/Mage/Catalog/Model/Url.php
public function getUnusedPath($storeId, $requestPath, $idPath)
{
//...
}
此方法包含在URL末尾創建唯一編號的邏輯。追蹤這完全超出了堆棧溢出帖子的範圍,但這條線特別是啓發/令人沮喪。
$lastRequestPath = $this->getResource()
->getLastUsedRewriteRequestIncrement($match[1], $match[4], $storeId);
if ($lastRequestPath) {
$match[3] = $lastRequestPath;
}
return $match[1]
. (isset($match[3]) ? ($match[3]+1) : '1')
. $match[4];
特別是,這兩條線
$match[3] = $lastRequestPath;
//...
. (isset($match[3]) ? ($match[3]+1) : '1')
//...
在情況不是很明顯,存在這樣的情況的Magento將自動追加1
到URL,然後繼續遞增它。這使得這些URL在生成時依賴於系統狀態的生成 - 沒有簡單的規則。
在此文件中的其他線
if (strpos($idPath, 'product') !== false) {
$suffix = $this->getProductUrlSuffix($storeId);
} else {
$suffix = $this->getCategoryUrlSuffix($storeId);
}
這$suffix
將在URL的末尾使用一樣,所以這些方法都值得研究。
如果您只想從網址中刪除數字,則最好使用正則表達式或一些字符串跳動。
你在管理區重寫了URL嗎?從[這](http://stackoverflow.com/questions/5019584/magento-puts-1-in-my-urls-can-i-remove-programatically)張貼在SO,並從我看到我自己,這是與URL重寫和索引問題有關 – CCBlackburn
我的問題是我正在控制一個擁有數千*個可配置產品的網站(這是導致url密鑰重複的原因),之前沒有人關注過這個問題。我不確定管理員中是否有一個部分能夠一舉解決此問題。我擔心的是,不像你指的那篇文章,我的網址和數字是動態的,沒有我能找到的真實模式。這就是爲什麼我想知道是否有動態的方法來找出動態附加數字的來源。這是我的擔憂。 顯然有一個控制它的功能... 謝謝。 – Joel
剛想過,是不同於簡單產品的可配置產品的URL密鑰?如果沒有,這也會造成問題 – CCBlackburn