2

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

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

我认为这将是用图片替换一些文本的简单案例,但似乎“主页”文本/链接是动态创建的,因为这就是面包屑.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; ?>
4

5 回答 5

4

实际上,您可以隐藏第一个“主页”,使其不会出现在面包屑中,而不会弄乱 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; ?>
于 2012-03-09T14:11:45.003 回答
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”,“”,然后就可以了。
  4. 编辑您的 css 文件而不是 php/phtml 文件。如果您对 css 有一半经验,您可能只需将 text-indent 设置为 -2000em 并设置背景图像。
于 2010-11-23T16:13:32.023 回答
1

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

于 2010-11-23T17:38:45.963 回答
0

无需为此编写任何代码,只需使用您的翻译文件,我们就可以更改面包屑中的“主页”。

为了这 :

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

在这只需写下面的代码

“家”,“你的选择”。

于 2012-08-25T04:39:51.003 回答
0

编辑主题的 breadcrumbs.phtml 文件:

/app/design/frontend/[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']): ?>
于 2015-03-23T03:28:02.343 回答