Dodaj niestandardowe aktywne linki do nawigacji po koncie klienta w Magento 2


10

Próbuję dodać niestandardowy link w nawigacji konta klienta. Mój niestandardowy link jest wyświetlany w nawigacji konta i również działa, ale nie jest wyświetlany jako aktywny / bieżący po kliknięciu.

wprowadź opis zdjęcia tutaj

Poniżej znajduje się kod, który mam:

/app/code/Namespace/Support/view/frontend/layout/customer_account.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="customer_account_navigation">
            <block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-suppport-ticket-link" after="-">
                <arguments>
                    <argument name="path" xsi:type="string">support/customer/index</argument>
                    <argument name="label" xsi:type="string">Support Ticket</argument>
                </arguments>
            </block>
        </referenceBlock>
    </body>
</page>

/app/code/Namespace/Support/Controller/Customer/Index.php

<?php
namespace Namespace\Support\Controller\Customer;

use Magento\Framework\App\Action;
use Magento\Framework\Exception\NotFoundException;
use Magento\Framework\Controller\ResultFactory;

class Index extends \Namespace\Support\Controller\Index
{
    /**
     * Show customer tickets
     *
     * @return \Magento\Framework\View\Result\Page
     * @throws NotFoundException
     */
    public function execute()
    {
        /** @var \Magento\Framework\View\Result\Page resultPage */
        $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
        return $resultPage;
    }
}

/app/code/Namespace/Support/view/frontend/layout/support_customer_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="customer_account"/>
    <head>
        <title>Support Ticket</title>
        <css src="Namespace_Support::css/styles.css"/>
    </head>
    <body>
        <referenceContainer name="content">
            <block class="Namespace\Support\Block\TicketList" name="ticketViewList" template="Namespace_Support::list.phtml" />
        </referenceContainer>
    </body>
</page>

6
Zmień ścieżkę z <argument name="path" xsi:type="string">support/customer/index</argument> na<argument name="path" xsi:type="string">support/customer</argument>
— Codrain Technolabs Pvt Ltd

Daj mi znać, jeśli to pomoże
— Codrain Technolabs Pvt Ltd

@YagneshPonkiya. Dziękuję za szybką odpowiedź. Tak, działa. Podaj swój komentarz jako odpowiedź, abym mógł zaakceptować.
— Shyam,

@YagneshPonkiya. Czy możesz mi również powiedzieć, na czym polegał problem? Dlaczego musieliśmy to zmienić? Z góry dziękuję.
— Shyam,

@Shyam, Czy ukończyłeś ten moduł? Tworzę tę samą funkcjonalność w moim projekcie M2. Czy mógłbyś więc mi pomóc, jak mogę stworzyć tę funkcjonalność? Dzięki
— mageDev0688

Odpowiedzi:


23

Aby to zrobić, zmień ścieżkę w pliku układu, jak poniżej.

<argument name="path" xsi:type="string">support/customer</argument>

Uwaga: usunąłem część akcji z ciągu ścieżki.

Aby uzyskać więcej informacji, dlaczego musisz to zrobić, zapoznaj się z poniższym plikiem.

Magento \ Framework \ View \ Element \ Html \ Link \ Current.php

Mam nadzieję, że ci to pomoże.


Jeśli zamiast indeksu mam inną nazwę działania, nie wywołuje się ....
— Manish

jeśli masz inną akcję niż „indeks”. powinieneś użyć pełnej ścieżki jak „wsparcie / klient / abc”. Upewnij się także, że nazwa użytkownika i identyfikator trasy są takie same.
— Codrain Technolabs Pvt Ltd

@YagneshPonkiya, w tej chwili mam do czynienia z tym samym problemem i zadałem pytanie , próbowałem z powyższym kodem, ale otrzymuję problem z 404 stronami.
— mageDev0688

@Yagnesh, jeśli jestem na kliencie / koncie / stronie, to menu ma klasę „bieżąca”. Jeśli jednak jestem na stronie klienta / konta / edycji, klasa „bieżąca” nie jest obecna. Możesz pomóc? Chcę mieć także „bieżącą” klasę w menu dla stron wewnętrznych.
— Sejal Shah,

@YagneshPonkiya Co ze stroną cms?
— Nitesh

2

Możesz pisać w niestandardowym układzie

<referenceBlock name="customer-account-navigation-suppport-ticket-link">
                <arguments>
                    <argument name="current" xsi:type="boolean">true</argument>
                </arguments>
    </referenceBlock>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.