これが発生するコードの場所に到達する前に、あなたが痛みの世界に入っていることを知っておいてください.
これらの数値がどのように生成されるかについて、単純なルールはありません。店舗IDの場合もあれば、簡易商品IDの場合もあります。どちらでもない場合もある
あったとしても、最初から作成されていない Magento サイトには、これを変更するカスタム機能が含まれているのが一般的です。
最終的に、Magento の人間が読める / SEO に適した URL が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];
特にこの2行
$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
文字列のジガリングを使用したほうがよい場合があります。