Magento在面包屑之前插入子类别导航

时间:2013-05-14 07:25:47

标签: layout navigation magento-1.7 theming

我正在尝试在Magento中创建主导航的子导航,并在面包屑模块​​之前插入它。因此,当您导航到根目录时,其主要子类别的子菜单将显示为面包屑上方但在根导航下方的导航栏。在目录中,单击根类别,根类别下的所有主要类别将显示为其下方的水平导航栏。

我只能将其插入类别标题下,但不能在面包模块上方插入。我创建了app / design / frontend / theme / template / catalog / navigation / topsub.phtml并输入以下代码:

<?php
//get all sub categories for current category
$_category          = $this->getCurrentCategory();
$_category_children    = $_category->getChildren();
$catIds                 = explode(',',$_category_children);

$categories = array();

foreach($catIds as $catId) {
    $category = Mage::getModel('catalog/category')->load($catId); 

    $categories[$category->getName()] = array(
        'url' => $category->getUrl(),
        'img' => $category->getImageUrl()
    );
}
?>
<ul class="subnav">
    <?php if($category->getIsActive()): ?>
        <?php foreach($categories as $name => $data): ?>
            <li>
                <a href="<?php echo $data['url']; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>">
                    <img src="<?php echo $data['img']; ?>" />
                    <div class="category-title"><?php echo $name; ?></div>
                </a>
                <span>/ </span>
            </li>   
        <?php endforeach; ?>
    <?php endif; ?>
</ul>

在我的local.xml中输入了

<reference name="mtopsub">
 <block type="catalog/navigation" name="topsub" as="topsub" template="catalog/navigation/topsub.phtml"/> 

</reference>

在我的模板文件中,我已将其命名为

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->getLang() ?>" lang="<?php echo $this->getLang() ?>">
<head>
<?php echo $this->getChildHtml('head') ?>
</head>
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start') ?>
<div class="wrapper">
    <?php echo $this->getChildHtml('global_notices') ?>
    <div class="page">
        <?php echo $this->getChildHtml('header') ?>
        <div class="main-container col1-layout">
            <div class="main">
                <div class="msubnav">
                <?php echo $this->getChildHtml('mtopsub') ?>

                </div>
                <?php echo $this->getChildHtml('breadcrumbs') ?>
                <div class="col-main">
                    <?php echo $this->getChildHtml('global_messages') ?>
                    <?php echo $this->getChildHtml('content') ?>
                </div>
            </div>
        </div>
        <?php echo $this->getChildHtml('footer') ?>
        <?php echo $this->getChildHtml('before_body_end') ?>
    </div>
</div>
<?php echo $this->getAbsoluteFooter() ?>
</body>
</html>

现在直到这一刻都没有出现。如果我创建一个静态块并输入以下代码:

<p>{{block type="catalog/navigation" name="catalog.navigation" template="catalog/navigation/topsub.phtml"}}</p>

子导航菜单应该显示,但位置错误。它不会出现在面包屑模块​​上方,而是显示在它下面和类别页面标题下方。

我确信我错过了一些东西,如果有人能指出我正确的方向,我会非常感激。

1 个答案:

答案 0 :(得分:0)

你快到了: - )

当您在布局模板视图中添加代码时,需要修改布局XML以将块添加为根元素的子元素:

layout / page.xml(或local.xml)

<reference name="root">
     <block type="catalog/navigation" name="mtopsub" as="mtopsub"
            template="catalog/navigation/topsub.phtml" /> 
</reference>

现在打电话的时候:

<?php echo $this->getChildHtml('mtopsub') ?>

在布局模板中,该块将可用并且应该正确呈现。