Legge til en egendefinert produkttype i Magento

Noen ganger er de tilgjengelige produkttypene bare ikke nok. Magento har de forskjellige typene ganske godt dekket, men det er bare situasjoner der det bare gir mening å ha en egen produkttype. 

For meg var en av disse situasjonene da jeg trengte å lage en egendefinert produktmodul som kunne håndtere å lage en tilpasset PDF basert på alternativene til produktet som ble kjøpt.

I tillegg er dette ikke en løsning hvis du trenger å lage et produkt med et spesifikt attributt siden Magento allerede tilbyr disse funksjonene. I stedet bør du finne denne håndboken praktisk når (eller hvis) du må kunne identifisere en bestemt type produkt hvor som helst i systemet. 

For eksempel, som når hekker observatører inn i den.

Konfigurer modulen

Denne veiledningen kommer til å anta at du har noen grunnleggende kunnskaper om den indre virkemåten til en Magento-modul. Å bygge en god modul er litt av en kunst på egenhånd, og det er gjenstand for et innlegg helt. Med det sagt, skal vi se på hvordan du konfigurerer modulen for den.

Nå, videre til hovedpunktet i diskusjonen.

Som alt i Magento, starter også vårt arbeid her i konfigurasjonsfilene. Vi ønsker å lage en egen modul for dette fordi vi i Magento ønsker separate moduler for alt. Å holde ting skilt og modulert i Magento holder oss glade. Jeg endte med Robogento Printable, Robogento var firmaet mitt og Utskriftsmodulets navn.

For å legge til en produkttype må vi fortelle Magento om det og definere det. Dette er de aktuelle delene av config.xml fil vi skal trenge, må du selv fylle ut emner selvfølgelig selvfølgelig:

... ...      utskriftsvennlig / product_type utskriftsvennlig / PRODUCT_PRICE 1  ... 

Der går vi. 

Som du kan se, er modulen min definert som "printable", etiketten er til fordel for filtrering i nettene som viser produktet i backend og når du lager et nytt produkt. Modellen og prismodellen er hvor moroa begynner. Hvert produkt trenger en type, dette kan være ganske rett frem.

Utvider Magento

Utvid basesystemet ved å lage Type-modellen. Se filbanen basert på klassen definisjonen:

klasse Robogento_Printable_Model_Product_Type utvider Mage_Catalog_Model_Product_Type_Simple 

Og der går vi. 

Plutselig er vårt utskrivbare produkt nå en klone av det enkle produktet Magento er allerede klar over. Det som faktisk skjer her er at ved å strekke seg fra Simple Type, gjenbruker vi alle funksjonene som produkttypen har. Den ekstra fordelen er at vi enkelt kan tilsidesette eksisterende funksjoner med vår egen hvis vi er så tilbøyelige.

Det var en annen ting jeg viste deg for vår config.xml fil. Produkttypens prismodell. Svært mye gjelder det samme her:

klasse Robogento_Printable_Model_Product_Price utvider Mage_Catalog_Model_Product_Type_Price 

Som du kan se, strekker vi ganske enkelt ut fra Magentos eksisterende system igjen. Magento har feil nok, men de enkle og virtuelle produkttypene var blant de bedre gjennomtenkte delene av det, og det er alltid en god ide å gjenbruke eksisterende kode når du kan.

Normalt vil jeg si at det er mer til det, men i tilfelle av Magento, er dette egentlig alt der er til det. Vi har nå opprettet et alias av Simple Product-systemet og kalt det Printable. 

Det utskrivbare produktet vil bruke alle funksjonene og definisjonene som de er konfigurert for de enkle produktene. Så to adresser, lagerinnstillinger, navnet ditt Hvis du bare trenger en fakturaadresse, strekker du fra det virtuelle produktet i stedet. Hvis du vil levere nedlastbare produkter, men med et litt annet sett med funksjoner, strekker du fra det nedlastbare systemet.

Hva å huske på

Som jeg sa i starten, er dette ikke å skape en T-skjorte-type i din nye Magento-butikk. I så fall leter du sannsynligvis på attributtene i backend.

Ved å bruke dette, vil du raskt kunne filtrere ut bestemte produkter, enten det er i backend eller når du bruker andre Magento-funksjoner som observatører eller samlinger.