3

Magentoでは、ユーザーがGoogleなどから製品ページに直接アクセスすると、ブレッドクラムは「ホーム」->「製品名」のみになります。

ユーザーがGoogleから直接ページにアクセスする場合でも、そこにカテゴリを追加するにはどうすればよいですか?

たとえば、このページでは、パンくずリストに「ウェディングアパレル」と「ウェディングドレス」のカテゴリを追加したいと思います。私はbreadcrumbs.phtmlをハード編集する以外のアイデアを思いつきましたが、template / catalog / product / view.phtmlにプログラムでbreadcrumbsアイテムを追加する方法はありますか?

現在の製品のカテゴリ(タイトルとリンク)を取得し、関数/メソッドを使用して、動的かつプログラムでそれらをブレッドクラムに追加できます。これは可能ですか?

4

1 に答える 1

4

現在の製品の各カテゴリをループすることで、カテゴリを含む完全なブレッドクラムをMagentoに表示させるコードは次のとおりです。

©ダニーヴィンス

<?php
if ($product = Mage::registry('current_product')) {
    $categories = $product->getCategoryCollection()->load();

    if($categories) {
        foreach ($categories as $category)
        {
            if($category) {
            $category = Mage::getModel('catalog/category')->load($category->getId());
            break;
            }
        }
    }
    $lastCrumbName = $product->getName();
    $lastCategoryAdjust = 0;
}
else {
    if($category = Mage::registry('current_category')) {
    $lastCrumbName = $category->getName();
    }
    $lastCategoryAdjust = 1;
}

if($category) {
    if($path = $category->getPath()) {
        $path = explode('/', $path);
        $crumbs = array('home' => array('label' => 'Home',
        'title' => 'Home',
        'link' => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB),
        'first' => true,
        'last' => false
        ));
        for($i = 2; $i < count($path) - $lastCategoryAdjust; $i++) {
            $cur_category = Mage::getModel('catalog/category')->load($path[$i]);
            if($cur_category && $cur_category->getIsActive()) {
                $crumbs['category' . $path[$i]] = array('label' => $cur_category->getName(),
                'title' => $cur_category->getName(),
                'link' => $cur_category->getUrl(),
                'first' => false,
                'last' => false
                );
            }
        }
        $crumbs['current'] = array('label' => $lastCrumbName,
        'title' => '',
        'link' => '',
        'first' => false,
        'last' => true
        );
    }
}
?>
于 2012-09-25T17:40:11.277 に答える