Innholdsfortegnelse
- Introduksjon
- Implementering av frontend-URL-kolonnen
- Behandling av ulike produkttyper
- Konklusjon
- 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:
- Konfigurerbare produkter: Forsikre deg om at URL-ene til underordnede produkter leder til hovedproduktets side.
- Bundleprodukter: På samme måte som konfigurerbare produkter, bør URL-en lede til hovedbundleproduktets side.
- 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.