Magento - Как заменить «Дом» в сухарях? - PullRequest
2 голосов
/ 23 ноября 2010

Мне просто интересно, имел ли кто-нибудь опыт форматирования хлебных крошек в 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 ]

4 голосов
/ 09 марта 2012

На самом деле вы можете скрыть, что первый «Дом» появляется в ваших хлебных крошках, не вмешиваясь в 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; ?>
2 голосов
/ 23 ноября 2010

Я думаю, это установлено в 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, вы можете просто установить отступ текста на -2000em и установить фоновое изображение.
1 голос
/ 23 ноября 2010

Используйте CSS, это битва, которая на самом деле не стоит этого :) 5 строк CSS помогут решить эту проблему гораздо легче, чем пытаться взломать рендеринг.

0 голосов
/ 23 марта 2015

Отредактируйте файл breadcrumbs.phtml вашей темы:

/ приложение / дизайн / интерфейс / [YOUR_THEME] /default/template/page/html/breadcrumbs.phtml

Если вы хотите заменить домашнюю крошку изображением:

<?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>

Если вы хотите полностью удалить домашнюю крошку, что мне и нужно:

<?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
    <?php if ($_crumbInfo['first']) continue ?>
    <li class="<?php echo $_crumbName ?>">
    <?php if($_crumbInfo['link']): ?>
0 голосов
/ 25 августа 2012

Нет необходимости писать какой-либо код для этого, просто используя ваш файл перевода, мы можем изменить «Домой» в крошке.

Для этого:

Перейти к вашей теме -> создать каталог локали-> создать каталог en_us -> создать translate.csv.

В этом просто напишите ниже код

«Дом», «Твой выбор».

...