Как установить активные ссылки меню в разделе `` Моя учетная запись '' в клиентском разделе внешнего интерфейса Magento 2

У меня есть специальный модуль, расширяющий раздел учетной записи клиента. Я добавил новую ссылку под названием «Мои загрузки». Эта ссылка отображается в нижней части боковой панели ссылок «Моя учетная запись». На странице индекса ссылка "Мои загрузки" выделена жирным шрифтом и недоступна для выбора. Однако на моих дочерних страницах ни одна из ссылок не выделена жирным шрифтом или не может быть выбрана. Я ищу, как сохранить ту же функциональность ссылки в моем настраиваемом модуле (т.е. все родительские и дочерние страницы показывают ту же ссылку на боковой панели, что и активная). _SetActiveMenu, похоже, является методом, доступным только в контроллерах администратора, поэтому я действительно не знаю никакого способа сделать это. У кого-нибудь есть подсказки?


person Jared Eitnier    schedule 08.01.2012    source источник
comment
Ваш вопрос непонятен. Похоже, вы добавили новую ссылку на консоль администратора. Это заставит опытного разработчика Magento поверить, что вы настроили свой собственный контроллер и действие контроллера для ссылки. Однако текст вашего вопроса указывает на то, что у вас нет доступа к _setActiveMenu. Если у вас нет настраиваемого контроллера, как вы настроили эти новые ссылки?   -  person Alan Storm    schedule 09.01.2012
comment
Алан, я также добавил новую ссылку на консоль администратора, но сейчас я имею в виду не это. Я говорю о внешней учетной записи клиента / разделе моей учетной записи (область, в которую вы должны войти, чтобы просмотреть). Некоторые из этих ссылок - «Информация об учетной записи», «Адресная книга» и т. Д. Я добавил новую ссылку под названием «Мои загрузки» в свою настраиваемую конфигурацию upload.xml. Ссылка отображается нормально; Я просто пытаюсь понять, как сохранить его состояние как «АКТИВНЫЙ» для всех страниц. Если вы будете перемещаться по страницам «Информация об учетной записи», эта ссылка останется активной и т. Д. Я надеюсь, что это немного проясняет ситуацию.   -  person Jared Eitnier    schedule 09.01.2012
comment
Ах, неправильно понял вопрос. Отставить.   -  person Alan Storm    schedule 09.01.2012
comment
Вы знаете, где я должен искать, чтобы разобраться в этом?   -  person Jared Eitnier    schedule 09.01.2012
comment
Не с ума, нет.   -  person Alan Storm    schedule 09.01.2012


Ответы (2)


Если я не ошибаюсь, вы хотите добавить ссылку на боковой панели клиентов «Моя учетная запись». Итак, navigation.php, который доступен в /app/code/local/themename/customer/block/account/navigation.php и управляет этими ссылками. Внутри файла есть несколько функций, некоторые из них:

public function isActive($link)  
{
if (empty($this->_activeLink)) {
    $this->_activeLink = $this->getAction()->getFullActionName('/');
}
if ($this->_completePath($link->getPath()) == $this->_activeLink) {
    return true;
}
return false;
} 


public function setActive($path)
{
    $this->_activeLink = $this->_completePath($path);
    return $this;
}
person Oğuz Çelikdemir    schedule 08.01.2012
comment
Спасибо за ваш ответ, но я уже создал ссылку, мне просто нужно, чтобы ее состояние было АКТИВНО через родительскую и дочернюю страницы, когда пользователь перемещается. - person Jared Eitnier; 09.01.2012
comment
Для этого нужен setActive метод. Вы можете вызвать его из макетов, см. magentocommerce.com/design_guide/articles/intro- в макеты или с вашего контроллера. Для поиска подсказок в существующих макетах для action method="setActive" - person Zifius; 09.01.2012

Вы можете сделать это в своем макете. Пример ссылки с именем changepassword:

<mycompany_changepassword_index_index translate="label">
    <label>Change Password Page</label>
    <update handle="customer_account"/>
    <reference name="my.account.wrapper">
        <block type="customer/form_edit" name="mycompany_changepassword" template="mycompany/changepassword.phtml">
            <reference name="customer_account_navigation">
                <action method="setActive"><path>changepassword</path></action>
            </reference>
        </block>
    </reference>
</mycompany_changepassword_index_index>
person div    schedule 08.02.2018
comment
Magento2.3.0 выдает ошибку 1 исключение (я): Исключение № 0 (Magento \ Framework \ Config \ Dom \ ValidationException): "путь" элемента: этот элемент не ожидается. Ожидается (аргумент). Строка: 1070 - person M Shoaib Qureshi; 05.05.2019
comment
О @MShoaibQureshi, мой ответ только для Magento 1. - person div; 14.09.2020