Не могу переместить блок top.links (topLinks) в Magento - PullRequest
1 голос
/ 15 декабря 2010

Я изо всех сил стараюсь редактировать дизайн Magento так, как они хотят (используя local.xml вместо редактирования page.xml), но эта система настолько ужасна и запутанна, что оказывается очень сложной. сделать это.

Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу переместить блок top.links в другой блок заголовка. На данный момент в page.xml этот блок находится внутри блока заголовка. Я попробовал абсолютно все в моем local.xml, чтобы заставить это работать, я попробовал следующие изменения.

Удалить top.links из заголовка, добавить внутри блока "Hud".

<layout version="0.1.0">

    <default>
        <!-- Here is where we edit the header block -->
        <reference name="header">
            <remove name="top.links" />
            <remove name="top.search" />
            <!-- This is the block that holds the HUD -->
            <block type="page/html" name="hud" as="hud" template="page/html/hud.phtml">
                <block type="page/template_links" name="top.links" as="topLinks" />
            </block>
        </reference>
    </default>

</layout>

alt text

Обратите внимание, что ссылки должны быть внутри коричневого поля (это блок HUD).

НЕ удаляет блок top.links из заголовка, но добавляет в блок Hud

<layout version="0.1.0">

    <default>
        <!-- Here is where we edit the header block -->
        <reference name="header">
            <remove name="top.search" />
            <!-- This is the block that holds the HUD -->
            <block type="page/html" name="hud" as="hud" template="page/html/hud.phtml">
                <block type="page/template_links" name="top.links" as="topLinks" />
            </block>
        </reference>
    </default>

</layout>

alt text

Создан новый шаблон ссылок, основанный на коде top.links, и ссылки на него в блоке HUD следующим образом.

<layout version="0.1.0">

    <default>
        <!-- Here is where we edit the header block -->
        <reference name="header">
            <remove name="top.links" />
            <remove name="top.search" />
            <!-- This is the block that holds the HUD -->
            <block type="page/html" name="hud" as="hud" template="page/html/hud.phtml">
                <block type="page/template_links" name="hud.links" as="hudLinks" template="page/template/hudLinks.phtml"/>
            </block>
        </reference>
    </default>

</layout>

Ниже приведен hud.phtml

<!-- hud.phtml -->
<div id="hud">
    <h3>Welcome</h3>
    <?php echo $this->getChildHtml('hudLinks') ?>
    <?php echo $this->getChildHtml('top.search') ?> 
</div>

Это приносит самые интересные результаты. Я вижу, что шаблон найден, но ничего не появляется.

alt text

Я действительно ничего не понимаю в этом. Я что-то здесь делаю не так? Для примера, вот код, который я использую для hudLinks.phtml и шаблон top.links.

<?php $_links = $this->getLinks(); ?>
<?php if(count($_links)>0): ?>
<ul class="links"<?php if($this->getName()): ?> id="<?php echo $this->getName() ?>"<?php endif;?>>
    <?php foreach($_links as $_link): ?>
        <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

1 Ответ

2 голосов
/ 15 декабря 2010

Правила "удаления" обрабатываются в конце, я думаю, поэтому вы должны изменить имя вставляемого блока. Теперь посмотрите, как добавляется ссылка:

app/design/frontend/base/default/layout/customer.xml
51:        <reference name="top.links">
52-            <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><urlParams/><position>10</position></action>
53-        </reference>

Ссылка добавляется в блок с именем top.links. Вот почему ваш новый блок пуст. Решение: найдите в файлах xml вхождения top.links и добавьте найденный код в файл local.xml.

...