Ответ 1
Прежде чем мы перейдем к месту в коде, где это произойдет, сообщите, что вы входите в мир боли.
-
Нет правила simple относительно того, как генерируются эти числа. Там случаи, когда это идентификатор магазина, есть случаи, когда это простой идентификатор продукта. Там случаи, когда он не
-
Даже если бы это было так, обычно для сайтов Magento, не имеющих царапин, для создания пользовательских функций, которые меняют этот
-
В конечном счете, поскольку URL-адреса, доступные для чтения/SEO-адреса Magento, находятся в таблице
core_url_rewrite
, для людей можно вставлять произвольный текст
Предупреждения о гибели в стороне, модель, которую вы ищете, Mage::getSingleton('catalog/url')
. Это содержит большую часть логики для создания каталога Magento и перезаписывания продукта. Все эти методы заканчиваются передачей пути запроса с помощью метода 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-адреса, вам может быть лучше с регулярным выражением или некоторым explode
/implode
строкой jiggering.