Hvordan legge til en frontend-produkt-URL-kolonne i adminprodukt-rutenettet i Magento 2

Innholdsfortegnelse

  1. Introduksjon
  2. Implementering av frontend-URL-kolonnen
  3. Behandling av ulike produkttyper
  4. Konklusjon
  5. Ofte stilte spørsmål

Introduksjon

Har du noen gang funnet deg selv i Magento 2-admin-produktrutenettet og ønsket at det fantes en enklere måte å lenke direkte til produktene dine? Hvis det er tilfelle, er du ikke alene. Effektiv administrering av produktlistene dine er en kritisk del av å drive en e-handelsvirksomhet. Et vanlig ønske fra butikksjefer og utviklere er å kunne legge til en frontend-produkt-URL-kolonne i adminprodukt-rutenettet for å effektivisere driften.

I dette blogginnlegget vil vi utforske trinn-for-trinn-prosessen for å implementere denne funksjonen i Magento 2. Vi vil dekke oppsettet av nødvendige filer, håndtering av ulike produkttyper og sikre at URL-ene vises korrekt for alle produkter. Ved slutten av dette innlegget vil du være rustet med kunnskapen til å forbedre Magento 2-admin-grensesnittet ditt og gjøre produktadministrasjonen mer intuitiv og effektiv.

Implementering av frontend-URL-kolonnen

For å legge til en frontend-produkt-URL-kolonne i adminprodukt-rutenettet i Magento 2, må du opprette eller endre flere filer. La oss gå gjennom hvert trinn for å oppnå dette målet.

Trinn 1: Oppdater konfigurasjonsfilene

Første trinn er å konfigurere de nødvendige filene i etc/adminhtml-katalogen. Spesifikt må vi håndtere filene di.xml og module.xml.

etc/adminhtml/di.xml

I di.xml må du erklære din egendefinerte kolonneklasse ved å legge til følgende linjer:

<type name="Magento\Catalog\Ui\Component\Listing\Columns\ProductActions">
    <arguments>
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="component" xsi:type="string">Vendor\Module\Ui\Component\Columns\ProductGrid</item>
            </item>
        </argument>
    </arguments>
</type>

Denne konfigurasjonen gjør at Magento kan bruke din egendefinerte kolonnekomponent i produkt-rutenettet.

etc/adminhtml/module.xml

Sørg for at module.xml-filen din inkluderer moduloppsettet:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_Module" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Catalog"/>
        </sequence>
    </module>
</config>

Dette utdraget erklærer den egendefinerte modulen din og dens versjon. Det sikrer at Magento gjenkjenner den under oppsett og oppgraderinger.

Trinn 2: Legg til den egendefinerte kolonneklassen

Deretter oppretter du en egendefinert kolonneklasse for å håndtere logikken for å generere frontend-URL-er. Denne klassen skal utvide standardklassen Magento\Ui\Component\Listing\Columns\Column.

Ui/Component/Columns/ProductGrid.php

Opprett filen ProductGrid.php i katalogen Ui/Component/Columns i modulen din:

namespace Vendor\Module\Ui\Component\Columns;

use Magento\Ui\Component\Listing\Columns\Column;
use Magento\Framework\UrlInterface;
use Magento\Store\Model\StoreManagerInterface;

class ProductGrid extends Column
{
    protected $urlBuilder;
    protected $storeManager;

    public function __construct(
        UrlInterface $urlBuilder,
        StoreManagerInterface $storeManager,
        ... // andre nødvendige avhengigheter
    ) {
        $this->urlBuilder = $urlBuilder;
        $this->storeManager = $storeManager;

        parent::__construct(...);
    }

    public function prepareDataSource(array $dataSource)
    {
        if (isset($dataSource['data']['items'])) {
            foreach ($dataSource['data']['items'] as &$item) {
                $item[$this->getData('name')] = $this->storeManager->getStore()->getBaseUrl() . 'catalog/product/view/id/' . $item['entity_id'];
            }
        }

        return $dataSource;
    }
}

Denne klassen bruker Magento URL-bygger og butikkadministratoren til å generere passende frontend-URL-er for hvert produkt.

Trinn 3: Definer kolonnen i brukergrensesnittskomponenten

Til slutt kan du oppdatere filen product_listing.xml i modulen din for å inkludere den nye kolonnen.

view/adminhtml/ui_component/product_listing.xml

Legg til den nye kolonnen i rutenettoppsettet:

<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Ui/etc/ui_configuration.xsd">
    <columns name="product_columns">
        <column name="frontend_url" class="Vendor\Module\Ui\Component\Columns\ProductGrid">
            <settings>
                <label translate="true">Frontend-URL</label>
                <sortable>false</sortable>
            </settings>
        </column>
    </columns>
</listing>

Denne konfigurasjonen spesifiserer at klassen ProductGrid skal brukes til å vise den nye kolonnen, og merker den som "Frontend-URL".

Behandling av ulike produkttyper

Ulike produkttyper i Magento, som konfigurerbare, bundne og grupperte produkter, har ofte overordnet-underordnet-forhold som må håndteres forsiktig. Sørg for at URL-ene er riktig formatert og vises basert på produktets synlighet:

  1. Konfigurerbare produkter: Forsikre deg om at URL-ene til underordnede produkter leder til hovedproduktets side.
  2. Bundleprodukter: På samme måte som konfigurerbare produkter, bør URL-en lede til hovedbundleproduktets side.
  3. Grupperte produkter: Vis URL-en til det grupperte produktet og forsikre deg om at alle tilknyttede produkter er representert under det grupperte enheten.

For å håndtere disse bruksområdene, må du kanskje utvide logikken i ProductGrid.php for å sjekke produkttypen og tilpasse URL-genereringen deretter.

Konklusjon

Ved å legge til en frontend-produkt-URL-kolonne i Magento 2-admin-produktrutenettet, forbedrer du betydelig evnen til å administrere og navigere produktlistene dine effektivt. Ved å følge trinnene som er beskrevet her, kan du implementere denne funksjonen, ta hensyn til ulike produkttyper og sikre nøyaktig URL-representasjon for hvert produkt.

Å takle denne forbedringen innebærer å endre konfigurasjonsfiler, legge til egendefinert rutenettlogikk og oppdatere brukergrensesnittskomponenten, alle viktige deler for å utvide Magento sitt kraftige rammeverk.

Ofte stilte spørsmål

Hvordan kan jeg sikre at URL-ene vises korrekt for alle produkttyper?

For å håndtere ulike produkttyper som konfigurerbare, bundne og grupperte produkter, må du utvide logikken i klassen ProductGrid.php. Sørg for at URL-en leder riktig til hovedproduktets side når du arbeider med underordnede produkter.

Hva om URL-ene ikke vises korrekt?

Dobbelsjekk logikken i ProductGrid.php og sørg for at avhengighetsinjeksjonene dine er riktig satt. Verifiser at product_listing.xml korrekt inkluderer konfigurasjonen til den nye kolonnen.

Kan jeg gjøre denne kolonnen sorterbar?

URL-kolonnen er som standard satt til ikke-sorterbar for enkelhetens skyld. Hvis du trenger å gjøre den sorterbar, forsikre deg om at URL-ene er konsekvent formatert og oppdater kolonneinnstillingene dine i filen product_listing.xml.

Ved å implementere disse trinnene kan du forbedre Magento 2-admin-produktrutenettet, og gjøre administrasjonsoppgavene dine mer effektive og strømlinjeformede.