Magento - 如何在面包屑中替换“Home”?

时间:2010-11-23 15:54:53

标签: magento breadcrumbs

我只是想知道是否有人在Magento格式化面包屑方面有任何经验?

我想将当前显示文本“HOME”的链接替换为图像。

我认为用图片替换一些文本会很简单,但似乎'HOME'文本/链接是动态创建的,因为这就是breadcrumbs.phtml中的所有内容:

<?php if($crumbs && is_array($crumbs)): ?>
<div class="breadcrumbs">
    <ul>
        <?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
            <li class="<?php echo $_crumbName ?>">
            <?php if($_crumbInfo['link']): ?>
                <a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->htmlEscape($_crumbInfo['title']) ?>"><?php echo $this->htmlEscape($_crumbInfo['label']) ?></a>
            <?php elseif($_crumbInfo['last']): ?>
                <strong><?php echo $this->htmlEscape($_crumbInfo['label']) ?></strong>
            <?php else: ?>
                <?php echo $this->htmlEscape($_crumbInfo['label']) ?>
            <?php endif; ?>
            <?php if(!$_crumbInfo['last']): ?>
                <span>&gt;</span>
            <?php endif; ?>
            </li>
        <?php endforeach; ?>
    </ul>
</div>
<?php endif; ?>

5 个答案:

答案 0 :(得分:4)

事实上,您可以隐藏第一个“Home”,而不会出现在您的面包屑中,而不会弄乱CSS并保持HTML清洁。

只需将规则“!$ _ crumbInfo ['first'] ”添加到if条件中,就像:

<?php if ($crumbs && is_array($crumbs)): ?>
    <?php foreach ($crumbs as $_crumbName => $_crumbInfo): ?>
        <?php if ($_crumbInfo['link'] && !$_crumbInfo['first']): ?>
            <a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->htmlEscape($_crumbInfo['title']) ?>"><?php echo $this->htmlEscape($_crumbInfo['label']) ?></a>
        <?php elseif ($_crumbInfo['last']): ?>
            <?php echo $this->htmlEscape($_crumbInfo['label']) ?>
        <?php elseif (!$_crumbInfo['first']): ?>
            <?php echo $this->htmlEscape($_crumbInfo['label']) ?>
        <?php else: ?>
        <?php endif; ?>
        <?php if (!$_crumbInfo['last'] && !$_crumbInfo['first']): ?>
            » 
        <?php endif; ?>
    <?php endforeach; ?>
<?php endif; ?>

答案 1 :(得分:2)

我认为这是在app / code / core / Mage / Cms / Block / Page.php中设置的。查看_prepareLayout()方法(我使用的是magento 1.3,所以这可能有点过时了)。

我看到你有几个选项需要更新。

  1. 直接编辑文件。 (不是我的推荐,而是禁食方式)
  2. 覆盖您自己模块中的课程
  3. 创建主题的translate.csv文件。这是我喜欢在正常情况下更新措辞的方式,但它可能不是你的一杯茶。所以在app / design / frontend / your_package / your_theme / locale / en_US / translate.csv中你可以添加一个新的行,上面写着“Home”,“”然后presto。
  4. 编辑您的css文件而不是php / phtml文件。如果您对css有一定的经验,可以将text-indent设置为-2000em并设置背景图像。

答案 2 :(得分:1)

使用CSS,这是一场不值得的斗争:) 5行CSS将比试图破解面包屑渲染器更容易解决这个问题。

答案 3 :(得分:0)

无需为此编写任何代码,只需使用我们可以更改的翻译文件&#34; Home&#34;在面包屑中。

为此:

  

转到您的主题 - &gt;创建语言环境目录 - &gt;创建en_us目录 - &gt;创建translate.csv。

在这里只写下面的代码

&#34; Home&#34;,&#34;您的选择&#34;。

答案 4 :(得分:0)

修改主题的breadcrumbs.phtml文件:

  

/应用/设计/前端/ [YOUR_THEME] /default/template/page/html/breadcrumbs.phtml

如果您想用图像替换Home crumb:

<?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
    <li class="<?php echo $_crumbName ?>">
    <?php if($_crumbInfo['first']): ?>
        <a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->htmlEscape($_crumbInfo['title']) ?>">
            <img src="/your/image/path.png"/>
        </a>
    <?php elseif($_crumbInfo['link']): ?>
        <a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->htmlEscape($_crumbInfo['title']) ?>"><?php echo $this->htmlEscape($_crumbInfo['label']) ?></a>

如果你想完全删除Home crumb,那就是我需要的东西:

<?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
    <?php if ($_crumbInfo['first']) continue ?>
    <li class="<?php echo $_crumbName ?>">
    <?php if($_crumbInfo['link']): ?>