Quali sono le regole che governano quale entità “vince” in caso di conflitto percorsi URL

magento.stackexchange https://magento.stackexchange.com/questions/4620

Domanda

Se più entità (ad esempio, una categoria, un prodotto, una pagina CMS e un frontName modulo) ogni tentativo di utilizzare lo stesso SEF URL, qual è l'algoritmo o processo che Magento utilizza per decidere che verrà salvata nella core_url_rewrite con la request_path desiderato, e che avrà suffissi allegate per risolvere il conflitto (ad esempio 'vendita-123.html').

Per fare la domanda in un altro modo, se una pagina CMS e categoria sia chiedere 'vendita' come la loro URL, che vincerà?

È stato utile?

Soluzione

Alan tempesta ha scritto un lungo articolo del blog su di esso: http://alanstorm.com/magento_dispatch_rewrites_intro

E per accorciare un po ', è tutto intorno pena (?)

// Go through all found records and choose one with lowest penalty - earlier path in array, concrete store
    $mapPenalty = array_flip(array_values($path)); // we got mapping array(path => index), lower index - better
    $currentPenalty = null;
    $foundItem = null;
    foreach ($items as $item) {
        $penalty = $mapPenalty[$item['request_path']] << 1 + ($item['store_id'] ? 0 : 1);
        if (!$foundItem || $currentPenalty > $penalty) {
            $foundItem = $item;
            $currentPenalty = $penalty;
            if (!$currentPenalty) {
                break; // Found best matching item with zero penalty, no reason to continue
            }
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top