在Magento中以编程方式添加面包屑路径?

在Magento中以编程方式添加面包屑路径?,magento,Magento,在Magento中,当用户直接访问产品页面(例如从Google访问)时,面包屑将仅为“主页”->“产品名称” 例如,在上,我想在面包屑中添加类别“婚纱”和“婚纱”。除了硬编辑breadcrumbs.phtml之外,我还想出了一个主意,但是有没有办法通过编程在template/catalog/product/view.phtml中添加一个breadcrumbs项 我可以获取当前产品的类别(标题和链接),然后使用一些函数/方法以编程方式动态地将它们添加到面包屑中。这可能吗?以下是强制Magento

在Magento中,当用户直接访问产品页面(例如从Google访问)时,面包屑将仅为“主页”->“产品名称”

例如,在上,我想在面包屑中添加类别“婚纱”和“婚纱”。除了硬编辑breadcrumbs.phtml之外,我还想出了一个主意,但是有没有办法通过编程在template/catalog/product/view.phtml中添加一个breadcrumbs项


我可以获取当前产品的类别(标题和链接),然后使用一些函数/方法以编程方式动态地将它们添加到面包屑中。这可能吗?

以下是强制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
        );
    }
}
?>


谢谢Jace,那么我应该把这段代码放在哪里呢?breadcrumbs.phtml?view.phtml?此代码应添加到位于以下位置的breadcrumbs.phtml文件的顶部:app/design/frontend/default/template_name/template/page/html/我想这会增加页面加载时间,因为它不必要地在整个类别路径中循环,如果这符合我的需要,我可以稍微延长页面加载时间,但是你能告诉我多少钱吗?这会给我的网站带来多大的服务器负担和加载时间?谢谢!这实际上取决于你有多少个类别,但据我所知,如果你有<50个类别,你不必担心,因为在最坏的情况下,加载时间会增加1-2秒。不幸的是,它必须通过分类路径循环以提供链接到面包屑的分类。谢谢你,Jace,它可以工作。根据microtime(),页面加载时间增加了约0.05秒。