Prima di arrivare al punto in cui si trova questo codice, si consiglia di entrare in un mondo di dolore.
Non c'è semplice regola su come quei numeri vengono generati. Ci sono casi in cui è l'ID del negozio, ci sono casi in cui è il semplice ID prodotto. C'è casi in cui non è né
Anche se ci fosse, è comune per non-da-zero siti Magento per contenere funzionalità personalizzate che cambia questo
In definitiva, dal momento che/URL SEO-friendly leggibili di Magento si trovano nella tabella core_url_rewrite
, è possibile per le persone per inserire testo arbitrario
avvertimenti di sventura a parte, il modello che state cercando è Mage::getSingleton('catalog/url')
. Questo contiene la maggior parte della logica per la generazione di Magento Catalog e riscrittura del prodotto. Tutti questi metodi terminano passando il percorso della richiesta attraverso il metodo getUnusedPath
.
#File: app/code/core/Mage/Catalog/Model/Url.php
public function getUnusedPath($storeId, $requestPath, $idPath)
{
//...
}
Questo metodo contiene la logica per la creazione di un numero univoco alla fine dell'URL. Tracciare tutto questo è al di là dell'ambito di un post di Stack Overflow, ma questa linea in particolare è illuminante/scoraggiante.
$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];
In particolare, queste due linee
$match[3] = $lastRequestPath;
//...
. (isset($match[3]) ? ($match[3]+1) : '1')
//...
Nel caso in cui non è ovvio, ci sono casi in cui Magento aggiungerà automaticamente un 1
a un URL, e poi continuare a incrementarlo. Ciò rende la generazione di tali URL dipendenti dallo stato del sistema quando sono stati generati - non esiste una regola semplice.
Altre linee di interesse in questo file sono
if (strpos($idPath, 'product') !== false) {
$suffix = $this->getProductUrlSuffix($storeId);
} else {
$suffix = $this->getCategoryUrlSuffix($storeId);
}
Questa $suffix
saranno utilizzati alla fine della URL, nonche, così quei metodi sono la pena indagare.
Se tutto ciò che si sta tentando di fare è rimuovere i numeri dall'URL, si potrebbe stare meglio con un'espressione regolare o con qualche jiggering di stringa explode
/implode
.
Hai guardato nell'URL Riscrivi nell'area di amministrazione? Da [questo] (http://stackoverflow.com/questions/5019584/magento-puts-1-in-my-urls-can-i-remove-programatically) post su SO, e da quello che ho visto io stesso, è qualcosa a che fare con l'URL Riscrivi e un problema di indicizzazione – CCBlackburn
La mia preoccupazione è che sto prendendo il controllo di un sito con * migliaia * di prodotti configurabili (che è ciò che causa la duplicazione della chiave url) e nessuno si è occupato di questo prima. Non sono sicuro che ci sia una sezione nell'amministratore che risolve tutto in un colpo solo. La mia preoccupazione è che, a differenza del post a cui fai riferimento, il mio url con le cifre è dinamico e non esiste un modello reale che possa trovare. Ecco perché mi chiedo se esiste un modo dinamico per scoprire da dove proviene la fonte delle cifre aggiunte in modo dinamico. Questa è la mia preoccupazione. C'è ovviamente una funzione che lo controlla ... Grazie. – Joel
Appena avuto un pensiero, la chiave URL per il prodotto configurabile è diversa dal prodotto semplice? In caso contrario, questo causerà problemi anche – CCBlackburn