Zanim przejdziemy do miejsca w kodzie, w którym to się dzieje, należy poinformować, że wkraczasz w świat bólu.
Nie ma prosty reguła, jak te numery są generowane. Są przypadki, w których jest to identyfikator sklepu, są przypadki, w których jest to prosty identyfikator produktu. Nie ma przypadków, gdzie jest to ani
Nawet jeśli nie było, to jest wspólne dla nie-od-podstaw stron Magento zawierać niestandardowe funkcje, które zmienia ten
Ostatecznie, ponieważ czytelny dla człowieka/SEO przyjazne adresy URL Magento są zlokalizowane w tabeli core_url_rewrite
, że to możliwe, by ludzie mogli wstawić dowolny tekst
Ostrzeżenia zagłady na bok, model szukasz jest Mage::getSingleton('catalog/url')
. Zawiera większość logiki generowania katalogu Magento i przepisywania produktów. Wszystkie te metody kończą się przekazaniem ścieżki żądania za pomocą metody getUnusedPath
.
#File: app/code/core/Mage/Catalog/Model/Url.php
public function getUnusedPath($storeId, $requestPath, $idPath)
{
//...
}
Ta metoda zawiera logikę do tworzenia unikalnego numeru na końcu adresu URL. Śledzenie tego w całości jest poza zakresem stosu przepełnienia stosu, ale ta linia w szczególności jest oświecająca/zniechęcająca.
$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];
W szczególności, te dwie linie
$match[3] = $lastRequestPath;
//...
. (isset($match[3]) ? ($match[3]+1) : '1')
//...
W przypadku, gdy nie jest oczywiste, istnieją przypadki, w których Magento będzie automatycznie dołączyć 1
do adresu URL, a następnie kontynuować ją zwiększyć. Powoduje to, że generowanie tych adresów zależy od stanu systemu, gdy zostały wygenerowane - nie ma prostej reguły.
Pozostałe linie to w tym pliku są
if (strpos($idPath, 'product') !== false) {
$suffix = $this->getProductUrlSuffix($storeId);
} else {
$suffix = $this->getCategoryUrlSuffix($storeId);
}
Ten $suffix
będą wykorzystywane na końcu adresu URL, tak więc te metody są warte zbadania.
Jeśli wszystko, co próbujesz zrobić, to usunąć cyfry z adresu URL, możesz być lepiej z wyrażeniem regularnym lub niektórymi z nich explode
/implode
.
Czy zajrzałeś do Przepisów URL w obszarze administracyjnym? Od [this] (http://stackoverflow.com/questions/5019584/magento-puts-1-in-my-urls-can--remove-programatically) post na SO, az tego, co widziałem ja, to ma to coś wspólnego z Przepisami URL-i i kwestią indeksowania. – CCBlackburn
Moją obawą jest przejęcie kontroli nad witryną z * tysiącem * konfigurowalnych produktów (co powoduje duplikaty kluczy url) i nikt się tym zajął wcześniej. Nie jestem pewien, czy istnieje sekcja administratora, która rozwiązuje to za jednym zamachem. Obawiam się, że w przeciwieństwie do tego, o którym mówisz, moje adresy URL z cyframi są dynamiczne i nie ma prawdziwego wzoru, jaki mogę znaleźć. Dlatego zastanawiam się, czy istnieje dynamiczny sposób, aby dowiedzieć się, skąd pochodzi dynamicznie dołączana cyfra. To jest moja troska. Jest oczywiście funkcja, która kontroluje to ... Dziękuję. – Joel
Po prostu pomyślałeś, czy klucz adresu URL do konfigurowalnego produktu różni się od prostego produktu? Jeśli nie, to spowoduje to również problemy – CCBlackburn