Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

How To или AddLink: подсказка по использованию метода
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

Подсказка по параметрам метода AddLink

Вызов в любом.phtml:

<?php echo $this->getChildHtml('альтернативноеИмяБлока'?>

Оформляем вызов в каком-то.xml файле:

<block 
    type
="page/template_links" 
    
name="имя-блока" 
    
as="альтернативноеИмяБлока" 
    
template="путь-к-шаблону-блока.phtml"
/>

Добавляем ссылки в .xml

Обычно мы сталкиваемся с такой конструкцией:

<reference name="альтернативноеИмяБлока">
    <
action method="addLink" translate="label title" module="имя-модуля">
        <
label>Имя ÑÑÑ‹Ð»ÐºÐ¸</label>
        <
url>путь/ссылки/</url>
        <
title>Текст ÑÑÑ‹Ð»ÐºÐ¸ Ð² title=""</title>
    </
action>
</
reference>

Вместо url могут использоваться:

- <url helper="путь/ссылки/"/>
- <path>путь/ссылки/</path>

Ð’ качестве “имя-модуля” можно использовать имя .xml файла, в котором объявляем ссылку; без указания расширения .xml.

Когда нам требуется указать позицию ссылки в списке, мы используем следующий код:

<reference name="альтернативноеИмяБлока">
    <
action method="addLink" translate="label title" module="имя-модуля">
        <
label>Имя ÑÑÑ‹Ð»ÐºÐ¸</label>
        <
url>путь/ссылки/</url>
        <
title>Текст ÑÑÑ‹Ð»ÐºÐ¸ Ð² title=""</title>
        <
prepare/>
        <
urlParams/>
        <
position>Ð¥</position>
    </
action>
</
reference>

Где “Ð¥” - число, номер позиции. Причем позиции некоторых ссылок “вшиты” в движок. Вызываются они [ссылки] тоже, нетипично:

<reference name="альтернативноеИмяБлока">
    <
block type="wishlist/links" name="wishlist_link">
        <
action method="addWishlistLink"></action>
    </
block>
    <
block type="checkout/links" name="checkout_cart_link">
        <
action method="addCartLink"></action>
        <
action method="addCheckoutLink"></action>
    </
block>    
</
reference>

Позиции: 30, 50, 60 соответственно.

Вернемся к стандартному AddLink, теперь как он выглядит полностью:

<reference name="альтернативноеИмяБлока">
    <
action method="addLink" translate="label title" module="имя-модуля" ifconfig="условие">
        <
label>Имя ÑÑÑ‹Ð»ÐºÐ¸</label>
        <
url>путь/ссылки/</url>
        <
title>Текст ÑÑÑ‹Ð»ÐºÐ¸ Ð² title=""</title>
        <
prepare/>
        <
urlParams/>
        <
position>Ð¥</position>
        <
liParams>class="my-li-class"</liParams>
        <
aParams>class="my-a-class"</aParams>
        <
beforeText>Текст Ð´Ð¾ ÑÑÑ‹Ð»ÐºÐ¸</beforeText>
        <
afterText>Текст Ð¿Ð¾ÑÐ»Ðµ ÑÑÑ‹Ð»ÐºÐ¸</afterText>
    </
action>
</
reference>

Можно написать и так:

<reference name="альтернативноеИмяБлока">
    <
action method="addLink" translate="label title" module="имя-модуля" ifconfig="условие">
        <
label>Имя ÑÑÑ‹Ð»ÐºÐ¸</label>
        <
url>путь/ссылки/</url>
        <
title>Текст ÑÑÑ‹Ð»ÐºÐ¸ Ð² title=""</title>
        <
prepare/>
        <
urlParams/>
        <
position>Ð¥</position>
        <
li>class="my-li-class"</li>
        <
a>class="my-a-class"</a>
        <
beforeText>Текст Ð´Ð¾ ÑÑÑ‹Ð»ÐºÐ¸</beforeText>
        <
afterText>Текст Ð¿Ð¾ÑÐ»Ðµ ÑÑÑ‹Ð»ÐºÐ¸</afterText>
    </
action>
</
reference>

Учтите, что если нужно указать класс только допустим для ссылки, нужно будет написать так:

<reference name="альтернативноеИмяБлока">
    <
action method="addLink" translate="label title" module="имя-модуля" ifconfig="условие">
        <
label>Имя ÑÑÑ‹Ð»ÐºÐ¸</label>
        <
url>путь/ссылки/</url>
        <
title>Текст ÑÑÑ‹Ð»ÐºÐ¸ Ð² title=""</title>
        <
prepare/>
        <
urlParams/>
        <
position>Ð¥</position>
        <
li/>
        <
a>class="my-a-class"</a>
    </
action>
</
reference>

И у переменной li не зря слеш в конце.

 
Magento Community Magento Community
Magento Community
Magento Community
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

Как показала практика, в .phtml в качестве списка, необязательно использовать исключительно

<ul>
    <
li><a>Ссылка 1</a></li>
    <
li><a>Ссылка 2</a></li>
    ...
    <
li><a>Ссылка n</a></li>
</
ul>

У меня сделано через dl/dt/dd. liParams (или просто li) в .xml всего лишь переменная, и ей плевать какой таг вы используете для создания списка.

По поводу того, что в modern-theme есть два файла: links.phtml и top.links.phtml.

В данной теме за вывод всех AddLink в хедеры, футеры и прочие места отвечает links.phtml.

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

Например вы можете смело сделать так, и использовать два файла:

<block 
    type
="page/html_header" 
    
name="header" 
    
as="header">
        
        <
block 
            type
="page/template_links" 
            
name="top.links" 
            
as="topLinks" 
            
template="page/template/top.links.phtml"
        
/>
</
block>
<
block 
    type
="page/html_footer" 
    
name="footer" 
    
as="footer" 
    
template="page/html/footer.phtml">

        <
block 
            type
="page/template_links" 
            
name="footer.links" 
            
as="footerLinks" 
            
template="page/template/footer.links.phtml"
        
/>                    
</
block>

Если что-то забыл - добавляйте в коментах.

 
Magento Community Magento Community
Magento Community
Magento Community
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

Дополнение.

Когда мы используем короткую ссылку на страницу, вроде

<url>contacts</url>

тогда параметр <prepare/> следует установить в

<prepare>true</prepare>

для того, чтобы данная ссылка срабатывала корректно. Иначе придется писать путь полностью.

 
Magento Community Magento Community
Magento Community
Magento Community
 
ogonkov
Guru
 
Total Posts:  582
Joined:  2009-03-25
Moscow, Russia
 

Слов нет, одни эмоции smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

Подумалось вот, можно ж сделать все проще. Убиваем все блоки, связанные с links и их вызовы.

В админке создаем статичный блок.

С демо-данными идет, как пример, footer_links, который вызывается в cms.xml. И через админку по аналогии с этими footer_links делаем нужные нам списки ссылок. И не надо дергаться и метаться по куче файлов. Все оказывается можно собрать в одном месте.

Одно но, как обеспечить в данном случае определение - пользователь вошел или нет, чтобы менять состояние ссылки Log In -> на Log Out. Но и это, думаю, решабельно.

Подумалось, конечно хорошо, но что-то данный подход мне как-то претит. Лучше перелопачу все 400 файлов, но уж точно под себя модифицирую ))

 
Magento Community Magento Community
Magento Community
Magento Community
 
ogonkov
Guru
 
Total Posts:  582
Joined:  2009-03-25
Moscow, Russia
 

Мы не ищем лёгких путей ) Статичный блок может быть сойдет как временная замена, но думаю довести до ума текущую систему - решение с заделом на будущую масштабируемость )

 
Magento Community Magento Community
Magento Community
Magento Community
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

И я так думаю.

 
Magento Community Magento Community
Magento Community
Magento Community
 
ogonkov
Guru
 
Total Posts:  582
Joined:  2009-03-25
Moscow, Russia
 

Я считаю надо оформить все эти находки в виде статьи в вики, а то на форуме темы за давностью вниз уползут, ищи их потом

 
Magento Community Magento Community
Magento Community
Magento Community
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

Да в вики такая каша, что меня это честно говоря смущает. Или есть какой-то более / менее упорядоченный раздел, куда это можно запостить?

 
Magento Community Magento Community
Magento Community
Magento Community
 
ogonkov
Guru
 
Total Posts:  582
Joined:  2009-03-25
Moscow, Russia
 

Ну можно в How To, мне кажется
http://www.magentocommerce.com/wiki/how_to/addlinks

Перейдите по ссылке выше и спокойно редактируйте страницу smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
Bobur
Jr. Member
 
Total Posts:  4
Joined:  2009-08-06
 

Извините за бестактный вопрос- у меня так и не получилось создать списка своих ссылок, не могли бы вы объяснить подробнее, как это делать… И если не трудно, не подскажете, как работает система создания ссылок smile
Создал в директории /layout фаил links.phtml

<?xml version="1.0"?>
<layout version="0.1.0">

<default>
<reference name="top.links">
<action method="addLink" translate="label title” module="customer"><label>TEST!!</label><url helper="customer/getAccountUrl"/><title>TEST!!!!!</title><prepare/><urlParams/><position>13</position></action>
</reference>
</default>
</layout>

а он ничего не видит…

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top