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 или Кастомизация top.links
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 

Разговор пойдет о ссылках вверху сайта:
Моя учётная запись | Отмеченные товары | Корзина покупок | Оформить заказ | Вход с паролем

Я напишу, как их изменить и/или добавить свои. Данная информация добыта опытным путем экспериментов и махинаций, ибо в документации по этому поводу ни слова (как и по другим вопросам, увы).

Задача выглядит простой. Копаем код, требуемые ссылки лежат у нас в следующих файлах:

app/design/frontend/your-theme/default/layout/page.xml

<block type="page/html_header" name="header" as="header">
<
block type="page/template_links" name="top.links" as="topLinks"/>
</
block>
Это, собственно, вызов верхнего меню.

Смотрим дальше.
app/design/frontend/your-theme/default/layout/checkout.xml

<reference name="top.links">
<
block type="checkout/links" name="checkout_cart_link">
<
action method="addCartLink"></action>
<
action method="addCheckoutLink"></action>
</
block>
</
reference>
app/design/frontend/your-theme/default/layout/customer.xml
<reference name="top.links">
<
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>
</
reference>    
...
ссылки "log in" Ð¸ "log out" Ð·Ð´ÐµÑÑŒ Ð¶Ðµ
С данного места начинает проявляться извращенная логика. Т.е.:

1. Ссылки “Корзина покупок” и “Оформить заказ” - запомните (это всплывет дальше) - никаких параметров не имеют. Жестко прошиты в движок, или как пишут наши англоязычные коллеги - “hardcoded”. Точно так же в app/design/frontend/your-theme/default/layout/wishlist.xml у нас лежит безпараметранная ссылка на вишлист, или “Отмеченные товары”.

2. Ссылка на страницу аккаунта и входа/выхода прописаны через метод addLink. И он - имеет параметры, такие как: название страницы, ссылка на нее, номер позиции среди всех top.links.

Я фрустрирую рентгеновскими лучами. Я хочу иметь это все в одном месте, я хочу манипулировать этим легко, а не в куче разных файлов!!! Ну да ладно, раз уже нашел, так буду продолжать.

Мне в моем топ меню нужны следующие ссылки:
Корзина покупок | Your page 1 | Your page 2 | Вход с паролем
И их порядок мне очень важен!

Для этого безжалостно удаляю в wishlist.xml, customer.xml и checkout.xml не нужные мне блоки.

И добавляем свои следующим образом (я лично добавлял в customer.xml, так как в итоге получаю почти все свои ссылки в одном месте):

<reference name="top.links">
<
action method="addLink" translate="label title" module="customer"><label>Your page name</label><url>your-page-link</url><title>Your page link alt text</title><prepare/><urlParams/><position>1</position></action>
</
reference>

Т.е. через админку создаем новую страницу, называем ее “Your page name”. Ссылкой на не будет “your-page-link”, tittle-текст “Your page link alt text” и в порядке она будет идти первой.

Оу, а должна идти второй.
Оке, говорю я и смело ставлю цифирки:
- log in / log out по умолчанию предлагают идти последними, номер 100.
- Your page 2 - пусть будет 3
- Your page 1 - пусть будет 2
- Корзина покупок - ? чорт Ё! а параметров то нет! И первой она не идет!!! А мне нужно, очень, порядок важен.

Ð’ англоязычном сегменте расписывают хитрые методы, чтобы это исправить. И это “нот симпле” метод. Один, Два, Три, используйте поиск для большего количества вариантов.

Но не так страшен чорт, как его малюют. Похоже, что “Корзина покупок” имеет позицию 50. Проверенно путем мартышкиного перебора чисел. Поэтому получаем:
- log in / log out - 100.
- Your page 2 - 53
- Your page 1 - 52
- Корзина покупок - 50

Получается все четко, как и задумано изначально. Попробовал, получилось, потратил день.

Мораль - Varien! Будь, сука, проще! )))

 
Magento Community Magento Community
Magento Community
Magento Community
 
retif
Sr. Member
 
Total Posts:  171
Joined:  2008-08-16
Odessa, Ukraine
 

была бы тут карма, поставил бы +10 smile вариен наверное как раз на такие посты и расчитывает вместо документации smile тянет на целую вики статью

 
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
 

Что-то форум лажает, апдейтить пост не хочет, поэтому вот, дополнение к выше сказанному, дабы не забыть.

UPD:
Дальнейшие исследования показали, что номер позиции, равно как и другие параметры ссылок “Корзина покупок” и “Оформить заказ” хранится в
app/code/core/Mage/Checkout/Block/Links.php

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

Только учтите. Важно! Будет ошибкой вносить какие-либо изменения в ядро системы напрямую. При апдейте Magento, все изменения придут к дефолтным значениям. Чтобы этого не случилось, продублируйте нужные файлы (вместе с сохранением структуры директорий) в:
app/code/local

И смело вносите в них любые нужные корректировки.

 
Magento Community Magento Community
Magento Community
Magento Community
 
bytestorm
Magento Team
 
Total Posts:  91
Joined:  2008-04-02
 

по поводу upd и дублирования файлов - тоже не совсем гуд…
есть масса вариантов сделать решение таким, чтобы при апгрейде, даже если и изменятся внутренности класса, не повредить функциональность
я бы сделал посредством создания модуля, в котором была бы кастомизация блока реврайтом на другой класс…

 
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
 
vso
Member
 
Total Posts:  68
Joined:  2009-04-02
 

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

 
Magento Community Magento Community
Magento Community
Magento Community
 
Zioma
Member
 
Total Posts:  44
Joined:  2009-07-05
Ukraine, Kiev
 
Vetkin Sergey - 16 July 2009 12:27 AM

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

Поддерживаю!

 
Magento Community Magento Community
Magento Community
Magento Community
 
t_rodriguez
Sr. Member
 
Avatar
Total Posts:  229
Joined:  2009-01-14
 
Vetkin Sergey - 16 July 2009 12:27 AM

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

Я на хабре нашел что-то типа этого. А вообще практика, практика и еще раз практика. На днях буду пробовать делать.

UPD: и еще вот, кратко и по сути комент про создание модуля.

 
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
 
bytestorm
Magento Team
 
Total Posts:  91
Joined:  2008-04-02
 

пособия по созданию модулей, насколько мне помнится, были в вики… на англицком правда…
да и так, этой информации достаточно и она спокойно находится с помощью гугла =)

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

Ага, “php | architect’s Guide to Programming Magento”, by Mark Kimsal -> Chapter 6, CustomModules.

 
Magento Community Magento Community
Magento Community
Magento Community
 
mkII
Sr. Member
 
Total Posts:  79
Joined:  2009-02-24
 
twistedrodriguez - 10 July 2009 06:08 AM

С данного места начинает проявляться извращенная логика.
[...]
Я фрустрирую рентгеновскими лучами. Я хочу иметь это все в одном месте, я хочу манипулировать этим легко, а не в куче разных файлов!!!

На самом деле эта извращенная логика является таковой только если лазить везде руками. Можно пойти дальше и сказать “нахрен нужны xml, в осКоммерсе прекрасно обходились без них”.

А как только мы проникаемся пониманием того, что весь огород городился ради модульной структуры и легкого автоматизированного(!) добавления тех или иных компонентов, то сразу становятся понятными все эти “извраты”. smile

Мораль - Varien! Будь, сука, проще! )))

Это вряд ли, да и не надо простоты. Хочется простоты - есть другие варианты. smile

P.S. Кстати, никто не мешает отключить top.links нафиг и нарисовать его в нужном виде статическим блоком. Куда уж проще. smile

P.P.S. Гораздо хуже то, что top.links и footerlinks на 90% пересекаются и добавив ссылку в одно, получаем ее и в другом тоже. В итоге мне пришлось сделать именно так, как советовал только что - отключить footerlinks и нарисовать свой.

 
Magento Community Magento Community
Magento Community
Magento Community
 
vadimSapo
Jr. Member
 
Total Posts:  1
Joined:  2013-12-06
 

Подскажите, пожалуйста, может кто-то с таким вариантом сталкивался:

в папке layout моей темы нет перечисленных выше файлов (page.xml, checkout.xml, customer.xml), есть файлы расширений темы и файл local.xml, в котором про toplinks есть только это:

<reference name="top.links">
            <!-- 
change top links template -->
            <
action method="setTemplate">
                <
template>page/template/top_links.phtml</template>
            </
action>
            <!-- 
remove checkout links -->
            <!--<
remove name="checkout_cart_link" />-->
  </
reference>

и это:

<!-- Customer logged in -->
    <
customer_logged_in>
        <
reference name="top.links">
            <
action method="removeLinkByUrl"><url helper="customer/getLogoutUrl"/></action>
        </
reference>
    </
customer_logged_in>

    <!-- 
Customer logged out -->
    <
customer_logged_out>11
        
<reference name="top.links">22
            
<action method="removeLinkByUrl"><url helper="customer/getLoginUrl"/></action>
        </
reference>        
    </
customer_logged_out>  
    
    <!-- 
Customer account -->
    <
customer_account33
        
<reference name="root">
            <
action method="setTemplate"><template>page/2columns-left.phtml</template></action>
        </
reference>
        <
reference name="left">
            <!-- 
remove cart sidebar -->
            <
action method="unsetChild"><name>cart_sidebar</name></action>
        </
reference
    </
customer_account>
    
    <
reference name="top.links">
<
action method="addLink" translate="label title" module="customer"><label>Your page name</label><url>your-page-link</url><title>Your page link alt text</title><prepare/><urlParams/><position>1</position></action>
</
reference>

Как быть в таком случае? Мне нужно добавить ссылки на свои страницы в эту менюшку.

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