1

Magento のインストールに問題があります。アップセル機能を使用して、さらに興味深い製品を提供しています。これまでのところ出力は機能していますが、製品の URL に大きな問題があります。

URL は my-shop.com/product.html にリンクしており、my-shop.com/category-1/category-2/product.html にはリンクしていません。トップ カテゴリごとに特別なサイドバー ナビゲーションを呼び出しているので、これは悪いことです。そして、何も表示されません...

標準のアップセル出力を使用しています。

<a href="<?php echo $_link->getProductUrl() ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_link, 'small_image')->resize(115) ?>" width="115" height="115" alt="<?php echo $this->htmlEscape($_link->getName()) ?>" title="<?php echo $this->htmlEscape($_link->getName()) ?>" /></a> <h3 class="product-name"><a href="<?php echo $_link->getProductUrl() ?>"><?php echo $this->htmlEscape($_link->getName()) ?></a></h3> <?php echo $this->getReviewsSummaryHtml($_link) ?> <?php echo $this->getPriceHtml($_link, true, '-upsell') ?>

(コード全体を投稿することはできません。エディターはそのほとんどを削除します)

$_link->getProductPath() で試してみましたが、出力は空でした。

System->Config->Catalog->Search Engine Optimization の設定も確認しました。[はい] に設定された製品 URL にカテゴリ パスを使用します。

製品のフルパス URL を取得する方法を知っている人はいますか?

ご協力ありがとうございました。

4

2 に答える 2

1

1.9.2.1 で動作するソリューションを Web で見つけました。アップセル商品はカテゴリーリンク付きのリンクになります。

$d = $_link->getData();
$id = $d['entity_id'];
$_product = Mage::getModel('catalog/product')->load($id);
$_categories = $_product->getCategoryIds();
$_category = Mage::getModel('catalog/category')->load($_categories[0]);
 $cat_url = str_replace(".html","",$_category->getUrlPath());
$_url = Mage::getUrl($cat_url).basename($_link->getProductUrl());

そして、このURLを使用します

<a href="<?php echo $_url; ?>">Link</a>

作成されたsitemap.xmlが追加されたばかりであるという問題がまだあります

www.website.com/productの代わりに

www.website.com/category/product

「製品 URL にカテゴリ パスを使用する」が「はい」に設定されている場合でも

于 2015-12-20T17:13:37.277 に答える
1

以下のロジックを使用して、製品の URL を取得できます。それに応じて変数を更新します。

<?php
    $_prodcats = $_product->getCategoryIds();
    $_cat = Mage::getModel('catalog/category')->load($_prodcats[0]);
    $produrl = $this->helper('catalog/output')->productAttribute($_product, $_product->getRequestPath(), 'request_path') ;
    if($this->getRequest()->getModuleName() == 'catalogsearch') {
        $produrl = '/'. basename($_cat->getUrl()) .'/' . basename($_product->getProductUrl()) ;
    }
?>
于 2012-09-14T12:51:12.017 に答える