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

Меню клиента Как убрать ссылку из меню клиента, если группа клиентов общая? Я знаю о теге ifconfig, но он не дает мне возможности скрыть пользовательскую ссылку, когда клиент находится в общей группе. Я использую Magento 2.2.4.


person Andry    schedule 20.07.2018    source источник


Ответы (2)


class Current extends \Magento\Framework\View\Element\Html\Link\Current //block
{
    /**
     * @return string
     */
    public function toHtml()
    {
        if (SOME CONDITION HERE) {
            return parent::toHtml(); //show link
        }

    return ''; //hide link
}

//Макет

<referenceBlock name="customer_account_navigation">
        <block class="...\Current" name="customer-account-navigation-product">
            <arguments>
                <argument name="path" xsi:type="string">.../index</argument>
                <argument name="label" xsi:type="string">Product</argument>
            </arguments>
        </block>
    </referenceBlock>
person Andry    schedule 24.07.2018

Шаг 1: Прежде всего, вам нужно создать файл customer_account.xml в вашей теме в:

app/design/frontend/_YOUR_VENDOR_/_YOUR_THEME_/Magento_Customer/layout/customer_account.xml

Шаг 2: Добавить Удалить ссылку на файл:

Чтобы сократить и упростить рассказ, в примере ниже я сразу покажу, как удалить все ссылки из навигации по одной.

<!-- Store credit -->
<referenceBlock name="customer-account-navigation-customer-balance-link" remove="true"/>

<!-- Downloadable product link -->
<referenceBlock name="customer-account-navigation-downloadable-products-link" remove="true"/>

<!-- Subscription link -->
<referenceBlock name="customer-account-navigation-newsletter-subscriptions-link" remove="true"/>

<!-- Billing agreement link -->
<referenceBlock name="customer-account-navigation-billing-agreements-link" remove="true"/>

<!-- Product review link -->
<referenceBlock name="customer-account-navigation-product-reviews-link" remove="true"/>

<!-- My credit card link -->
<referenceBlock name="customer-account-navigation-my-credit-cards-link" remove="true"/>

<!-- Account link -->
<referenceBlock name="customer-account-navigation-account-link" remove="true"/>

<!-- Account edit link -->
<referenceBlock name="customer-account-navigation-account-edit-link" remove="true"/>

<!-- Address link -->
<referenceBlock name="customer-account-navigation-address-link" remove="true"/>

<!-- Orders link -->
<referenceBlock name="customer-account-navigation-orders-link" remove="true"/>

<!-- Wish list link -->
<referenceBlock name="customer-account-navigation-wish-list-link" remove="true"/>

<!-- Gift card link -->
<referenceBlock name="customer-account-navigation-gift-card-link" remove="true"/>

<!-- Gift registry -->
<referenceBlock name="customer-account-navigation-giftregistry-link" remove="true"/>

<!-- Reward points -->
<referenceBlock name="customer-account-navigation-reward-link" remove="true"/>

<!-- Order by SKU -->
<referenceBlock name="customer-account-navigation-checkout-sku-link" remove="true"/>

Более подробную информацию см. на странице https://inchoo.net/magento-2/managing-my-account-navigation-links-magento-2/

person Mage Wet    schedule 20.07.2018
comment
этот код удаляет ссылку для всех групп клиентов, и мне нужно удалить ссылку только для одной группы клиентов. - person Andry; 20.07.2018
comment
Я думаю, вам нужно перезаписать пространство имен Magento\Customer\Block\Account; В этом пространстве имен есть функция getLinks. вы можете проверить if/else в цикле foreach, чтобы напечатать или удалить ссылку. - person Mage Wet; 20.07.2018