12

私はMagento1.5.0.1を使用していますが、製品ページのクロスセルブロックとアップセルブロックで使用されるgetProductUrl()関数は、さまざまなURL形式をスローします。

/laptop-bag.htmlのような正しいURLまたは間違ったURL(うまく機能しますが、もちろんリライトURLではありません):/ catalog / product / view / id / 825 / s / laptop-bag / category / 16/

クロスセルブロックとアップセルブロックの両方が正しいURLを返す場合もあれば、両方とも長いバージョンを使用する場合もあります。また、一方が正しいバージョンを使用し、もう一方が長いバージョンを使用する場合もあります。

なぜこれが起こっているのか考えはありますか?

私はすでにmagentoデータベースの修復を実行し、インデックスを再作成し、すべてのキャッシュを更新/フラッシュしました。

4

4 に答える 4

18

$product->getUrlPath()代わりに試してください$product->getProductUrl()

更新:@ jordan314による以下のコメントによると、MagentoはEEのお客様に次のことをお勧めします。

url_path属性は1.13で使用されなくなりましたが、下位互換性のために引き続き使用できます。また、Magentoは新製品に値を割り当てないため、引き続き使用することはお勧めしません。おそらく、代わりに$ product-> getProductUrl()を使用してみることができます。

于 2012-07-30T21:09:41.527 に答える
7

書き換えられたURLが見つからないため、誤ったURLが生成されます。おそらく、store_idが正しくないことが原因です。例えば:

$id = 290;
Mage::app()->setCurrentStore('default');
echo "store_id: ".Mage::app()->getStore()->getId()."<br>";
$url = Mage::helper('catalog/product')->getProductUrl($id);
echo $url."<br>";

//change store id
Mage::app()->setCurrentStore('admin');
echo "store_id: ".Mage::app()->getStore()->getId()."<br>";
$url = Mage::helper('catalog/product')->getProductUrl($id);
echo $url."<br>";

結果:

store_id: 1
http://local.com/surestep-pro-diabetic-test-strips-50-strips-professional-care.html
store_id: 0
https://local.com/index.php/catalog/product/view/id/290/s/surestep-pro-diabetic-test-strips-50-strips-professional-care/

正しいURL書き換えは、core_url_rewriteという名前のテーブル(store_idに関する情報を含む)にあります。

core_url_rewriteで一致する値が見つかった場合は、「正しいURL」が生成されます。それ以外の場合は、product_id+urlキー+category_idが連結されます。

$routePath = 'catalog/product/view';
$routeParams['id']  = $product->getId();
$routeParams['s']   = $product->getUrlKey();
if ($categoryId) {
    $routeParams['category'] = $categoryId;
}
于 2012-07-30T16:25:53.410 に答える
7

コレクションを取得するときにこれを追加してみてください

$collection->addUrlRewrite();

それは私を助けてくれました。

于 2016-03-30T06:03:23.690 に答える
4
$id = 10;
Mage::app()->setCurrentStore('admin');
$url = Mage::helper('catalog/product')->getProductUrl($id);
于 2016-09-16T11:43:52.657 に答える