Kohdistettujen hintojen ja yksikköhinnan määrittäminen Magento-verkkokaupassa

Adi Shero

Written by Adi Shero

Director of Solutions Architect

How to Configure Tiered Pricing & Price Per Unit in Magento

Tiered Pricing & Price Per Unit

On sanomattakin selvää, että hinta on uskomattoman tärkeä asiakkaalle ja voi vaikuttaa ratkaisevasti ostopäätökseen ja ostopaikkaan. Mitä enemmän tietoa voit antaa asiakkaalle tuotteesi arvosta, sitä paremmassa asemassa olet.

Magentossa on monia hinnoitteluvalintoja ja tapoja myydä tuotteitasi. Voit hinnoitella asiakasryhmän mukaan ja myydä tukku- tai vähittäismyyntinä. Kun myyt irtotavarana, Magento antaa sinulle mahdollisuuden luoda hintasarjan määrän perusteella. Voit antaa alennuksia asiakkaille sen mukaan, kuinka paljon he ostavat. Tämä on Magnenton "porrastettu hinnoittelu" -ominaisuus.

Oletusarvoisesti Magento ei näytä porrastettua hinnoittelua tai yksikkökohtaista hinnoittelua tuoteverkonäkymässä. Porrastettujen hintojen lisääminen tähän näkymään voi auttaa asiakasta päättämään, minkä määrän he ostavat. Tämä voi auttaa massahankinnoissa/näyttää säästyneen arvon/jne.

Porrastetun hinnoittelun näyttäminen Magentossa

Erityinen asiakas pyysi meitä lisäämään kategorialuettelon sivulle taulukon, joka näyttäisi hintataulukon tuotteille, joissa on porrastettu hinnoittelu.

Ensimmäinen asia, joka tässä on otettava huomioon, on se, mikä tiedosto ohjaa luettelonäkymäsivua. Mene kohtaan Järjestelmä -> Konfigurointi ja vaihda myymälänäkymä sopivaan myymälään.

Seuraavaksi, vieritä alas Kehittäjä-välilehteen ja aseta Mallipolkuvinkit-pudotusvalikosta Kyllä.

Lataa mikä tahansa kategoria ja etsi tiedosto. Meidän tapauksessamme, koska meillä oli asennettuna moduuli, joka korvasi oletushinta.phtml-tiedoston, se oli eri kansiossa kuin normaalisti. Seuraavaksi haluat selvittää, mikä phtml-tiedoston osio ohjaa porrastetun hinnoittelun näyttämistä. Tyypillisesti se löytyy else-lausekkeesta, joka edeltää ensimmäistä "if"-lohkoa. Oletusasennuksessa ilman teeman korvaavia price.phtml-tiedostoja ensimmäinen muutos, joka sinun on tehtävä, on rivillä 209.

Nopea hakkerointi sen löytämiseksi on lisätä eri kohtiin ja päivittää kategorialuettelonäkymä, jossa on tuote porrastetulla hinnoittelulla. Kun näet test echo -lausekkeesi, tiedät löytäneesi sen.

Ensimmäinen logiikkamme näyttää jotakuinkin tältä

getTierPrice()): ?> //aloitamme muokkauksemme

currency($_price, true, true); echo “/Each”;?>

Tässä muutimme yksinkertaisesti hinnan esitystapaa lisäämällä sanan /each hinnan perään, jos tuotteella ei ole porrastettua hinnoittelua.

Jos tarvitset apua Magento-kauppasi kanssa, soita numeroon 845-656-3000 tai ota meihin yhteyttä täältä »

Seuraavaksi asia monimutkaistuu hieman logiikan osalta. Asiakkaamme halusi, että tasot olisivat kolme lohkoa leveitä, ja niiden perässä kolme hintaa seuraavasti:

1-1 2-10 11-20
$9.99 $8.99 $7.99
21-30 31-40 41-50
$6.99 $5.99 $4.99

Tämän lisäksi tasojen määrä voi vaihdella – joissakin tuotteissa voi olla 2 tasoa, toisissa 5 ja niin edelleen. Tämä asettaa ainutlaatuisen haasteen saada taulukot näkymään oikein, oikeat rivinvaihdot ja päättää ne oikeaan aikaan. Entä jos kauppiaat syöttävät vain yhden tason tällä hetkellä, mutta aikovat lisätä niitä myöhemmin? Tämä aiheutti lisähaasteita, jotka on ratkaistava.

Ensimmäinen koodinpätkämme on tässä:

$prices = $_product->getTierPrice();

Tässä on kuvakaappaus tuotteesta, joka on konfiguroitu tasoilla viitteeksi:

image01

Yksinkertaisesti saatiin oletushinta, joka tallennettiin, kun tuote konfiguroitiin, se saa myös tuotteen ensimmäisen tason määrän. Koodimme oli suunniteltu ottamaan tämä hinta ja toimimaan ensimmäiseen määrään asti. Kuvittele, että myymme kankaita. Yksi kangas maksaa 1000 dollaria. Tukkumyyjä myy ne meille 900 dollarilla, kun ostamme 100–150. 151–200 he myyvät ne meille 800 dollarilla. 201–250 he myyvät ne meille 700 dollarilla. 251–300 he myyvät ne meille 600 dollarilla ja lopuksi 301+ he myyvät ne meille 500 dollarilla. Jotta tuote toimisi oikein tämän koodin kanssa, kaupan omistajan tulisi syöttää 1000 dollaria tuotteen hinnaksi. Sitten he loisivat tasoja. Ensimmäinen taso olisi määrä 100 ja hinta 900. Toinen taso olisi määrä 151 ja hinta 800. Kolmas taso olisi määrä 201 ja hinta 700. Tämä jatkuu, kunnes kaikki tasot on syötetty oikein. Meidän tasomme näyttäisivät tältä:

100-150 151-200
$900 $800
201-250 251-300 300+
$700 $600 $500

Huomaa: tämä ei sisällä sitä tosiasiaa, että meidän on myös näytettävä, että 1–99 tuotteen hinta on 1000 dollaria.

1-99 100-150 151-200
$1000 $900 $800
201-250 251-300 300+
$700 $600 $500

Seuraava koodinpätkämme hakee tuotteelle määritellyt porrastetut hinnat:

$_product->setData(‘tier_price’,null);

$_tiers = $this->getTierPrices($_product);

Sen jälkeen luomme kaksi taulukkoa. Yhden hinnoille ja toisen määryksille

$tierQtys = array($prices<0><‘price_qty’>); //Tässä otamme tuotteen ensimmäisen tason määrän, jonka tulisi yleensä olla 1.

$tierPrices = array(‘$’ . number_format($prices<0><‘price’>, 2)); // Tähän lisäämme ensimmäisen hinnan ja teemme myös hieman numeromuotoilua poistaaksemme kaksi näyttävää nollaa

Näin taulukot näyttävät, jos tulostamme ne:

$tierQtys = Array ( <0> => 1 )

$tierPrices = Array ( <0> => $1,000.00 )

Seuraavaksi lisäämme kaikki tasotiedot näihin taulukoihin:

foreach ($_tiers AS $tier) {

array_push($tierQtys, $tier<‘price_qty’>);

array_push($tierPrices, strip_tags($tier<‘formated_price_incl_tax’>));

}

Tältä ne näyttävät jälkeenpäin:

$tierQtys = Array ( <0> => 1 <1> => 100 <2> => 151 <3> => 201 <4> => 251 <5> => 301 )

$tierPrices = Array ( <0> => $1,000.00 <1> => $900.00 <2> => $800.00 <3> => $700.00 <4> => $600.00 <5> => $500.00 )

Seuraavassa osassa käymme läpi arvomme sijoittamalla ne yllä näytettyyn taulukkoon.

echo ‘

’;

$x = 0;

while ($x < count($tierQtys)) { // laske taulukon indeksit

if ($x != (count($tierQtys)-1)) { //jos $x ei ole taulukon (silmukan) lopussa

echo ‘

’; // tulosta määräalue

}

else { // jos olemme saavuttaneet viimeisen määrän

echo ‘

’; //tulosta lopullinen määrä + -merkillä, kuten 300+

}

if ((($x + 1) % 3 == 0)) { // olemmeko käyneet läpi kolme kertaa? (joka kolmas kerta lopetamme taulukon rivin ja haluamme myös tulostaa määrän hinnat)

echo ‘

’ . $tierQtys<$x> . ‘-‘ . ($tierQtys<$x+1>-1) . ‘ ’ . $tierQtys<$x> . ‘+
’ . $tierPrices<$x – 2> . ‘ ’ . $tierPrices<$x – 1> . ‘ ’ . $tierPrices<$x> . ‘
’; // tulosta taulukon tiedot

echo ‘

’; //käynnistä taulukko uudelleen

}

if ($x == (count($tierQtys)-1) && (($x + 1) % 3 != 0)) { //olemmeko viimeisellä silmukalla (taulukon lopussa) emmekä ole tulostaneet kolmea arvoa

if ((($x +1) % 3) == 2) { // onko kaksi hintaa, jotka meidän on tulostettava?

echo ‘

’; //tulosta ne

}

else if ((($x + 1) % 3) == 1) { // vai onko yksi hintala, joka meidän on tulostettava?

echo ‘

’; // tulosta se

}

}

$x++; // kasvata $x lopettaaksesi while-silmukan

}

echo ‘

’ . $tierPrices<$x-1> . ‘ ’ . $tierPrices<$x> . ‘ ’ . $tierPrices<$x> . ‘
’; // lopeta taulukko ja rivit.
Jos tarvitset apua Magento-kauppasi kanssa, soita numeroon 845-656-3000 tai ota meihin yhteyttä täältä »

Kuten näette, tässä on melko monimutkainen logiikka, erityisesti kun otetaan huomioon dynaaminen porrastettujen hintojen määrä. Tässä käytämme yksinkertaisesti jakojäännöstä tarkistaaksemme, missä olemme kolmen arvon (hinta/määrä) näyttämisen suhteen. Tämän koodin olennainen osa on aloittaa taulukot samalla indeksillä, jotta voimme käyttää $x – 1, $x -2 ja $x niiden arvojen poimimiseen. Koodin jatkokustomointi on mahdollista, jos haluamme sen näyttävän eri määrän arvoja riviä kohden tai muuttavan taulukon ulkoasua. Tältä taulukko näyttää valmiina:

image06

getTierPrice()): ?>

currency($_price, true, true); echo “/Each”;?>

$prices = $_product->getTierPrice();

$_product->setData(‘tier_price’,null);

$_tiers = $this->getTierPrices($_product);

$tierQtys = array($prices<0><‘price_qty’>);

$tierPrices = array(‘$’ . number_format($prices<0><‘price’>, 2));

foreach ($_tiers AS $tier) {

array_push($tierQtys, $tier<‘price_qty’>);

array_push($tierPrices, strip_tags($tier<‘formated_price_incl_tax’>));

}

echo ‘

’;

$x = 0;

while ($x < count($tierQtys)) {

if ($x != (count($tierQtys)-1)) {

echo ‘

’;

}

else {

echo ‘

’;

}

if ((($x + 1) % 3 == 0)) {

echo ‘

’ . $tierQtys<$x> . ‘-‘ . ($tierQtys<$x+1>-1) . ‘ ’ . $tierQtys<$x> . ‘+
’ . $tierPrices<$x – 2> . ‘ ’ . $tierPrices<$x – 1> . ‘ ’ . $tierPrices<$x> . ‘
’;

echo ‘

’;

}

if ($x == (count($tierQtys)-1) && (($x + 1) % 3 != 0)) {

if ((($x +1) % 3) == 2) {

echo ‘

’;

}

else if ((($x + 1) % 3) == 1) {

echo ‘

’;

}

}

$x++;

}

echo ‘

’ . $tierPrices<$x-1> . ‘ ’ . $tierPrices<$x> . ‘ ’ . $tierPrices<$x> . ‘
’;

?>

Porrastettujen hintojen lisäksi yksikköhinnan näyttäminen voi auttaa kuluttajia. Se vähentää sekaannusta ja antaa asiakkaille mahdollisuuden vertailla hintoja eri tuotteiden välillä. Asiakkaat tuntevat olonsa varmemmaksi päättäessään, minkä arvon he saavat ja minkä tuotteen he valitsevat ostaakseen. Tämä vetoaa erityisesti hintatietoisiin asiakkaisiin, helpottaen heidän laskea tarkalleen, mitä he tulevat saamaan.

Magento ei oletusarvoisesti tarjoa minkäänlaista yksikköhinnan toiminnallisuutta. Attribuutteja käyttämällä tämä voidaan helposti asentaa.

Yksikköhinnan lisääminen Magentoihin

Lisätäksesi yksikköhinnan, luodaan ensin attribuutti.

Siirry järjestelmänvalvojan paneelissa kohtaan Luettelo > Attribuutit > Hallitse attribuutteja.

Napsauta Lisää uusi attribuutti.

Täytä ensimmäisessä osiossa, Attribuuttiominaisuudet-kohdan alla, tiedot.

image05

Asetan mielelläni Catalog Input Type for Store Owner -kohdan arvoon Text Field, jotta voit lisätä eri tekstiä eri tuotteille. Tietyllä yhdenmukaisuudella koko kaupassa voit käyttää Drop Down -attribuuttia. Suurin ero on se, että tekstikentän avulla voit vain kirjoittaa arvon sen sijaan, että valitsisit sen. Pudotusvalikon avulla, jos haluat lisätä uuden yksikkötyypin, sinun on muokattava attribuuttia. Tekstikentän haittapuoli on, että jos päätät muuttaa tapaa, jolla yksikköhinnoittelun sanamuodon, voi olla työlästä asettaa kaikki tuotteet uudelleen.

Front End Properties -osiossa asetin melkein kaiken paitsi Layered Navigationin ja Promo Rulesin kyllä-asentoon.

image00

Syy tähän on yksinkertaisesti lisätä asiakkaan hakukokemusta heidän selatessaan kauppaa.

Aseta attribuutin tunniste.

image08

Lopuksi tallenna attribuutti.

Seuraavaksi lisäämme attribuutin attribuuttisarjaan kohdassa Luettelo > Attribuutit > Hallitse attribuuttisarjoja.

image04

Organisointisyistä lisää attribuutti Hinta-kansioon, heti hinta-attribuutin alapuolelle.

Ja tallenna attribuuttisarja ja indeksoi uudelleen tarvittaessa.

Katsotaanpa tuotetta ja lisätään siihen tekstiä.

image02

Asetan tämän tuotteen "Each" -tilaan. Voit käyttää tätä kenttää määrittämään yksiköitä, kuten unssit, paunat jne.

Nyt meidän on lisättävä attribuutti tuoteverkkonäkymään.

Yleensä tykkään lisätä tämän attribuutin hinnan jälkeen.

Tässä tapauksessa muokkaamme price.phtml-tiedostoa, joka sijaitsee yleensä osoitteessa

/app/design/frontend/YOUR_THEME/YOUR_PACKAGE/template/catalog/product/price.phtml

Jos et näe sitä, voit yleensä vain kopioida tiedoston perus-/oletusteemasta, sillä peruskansioiden muokkaaminen ei ole hyvää käytäntöä.

Avattuasi price.phtml-tiedoston huomaat, että Magentossa on paljon if-lausekkeita hintaan liittyen. Hinnoittelumäärityksistä riippuen sinun on määritettävä, mihin attribuutti sijoitetaan.

Koska käytän kopiota perus-/oletus price.phtml-tiedostosta ja oletus Magento-konfiguraatiosta, olen lisännyt koodini rivin 207 ympärille:

formatPrice($_price, true) ?>

getPpu(); // hae teksti hinnan vierestä ?>

Kun $_product->getPpu(); on koodi attribuutin lisäämiseksi. Huomaa, että tämä on 'getPpu', koska attribuuttikoodini oli asetettu arvoon 'ppu', price per unit (yksikköhinta).

image09

Tässä teemassa tämä price.phtml vaikuttaa sekä tuoteverkkonäkymään että tuotesivulle.

image07

Teemastasi ja laajennuksistasi riippuen sinun on ehkä muokattava eri tiedostoja. Tässä tilanteessa on parasta käyttää Template Path Hints -ominaisuutta.

Käyttämällä porrastettua hinnoittelua ja yksikkökohtaista hintaominaisuutta voit antaa asiakkaillesi paljon tietoa suoraan ruudukkonäkymästä. Jos sinulla on esimerkiksi laatikollinen kyniä, joita myydään eri määrissä, asiakas voi nähdä yksittäisen tuotteen hinnan eri määräalueilla. Vaikka Magentossa on joitakin toimintoja tässä suhteessa, ne ovat enimmäkseen tuotteenäkymäsivulla. Pelkästään sivustoasi selaavat asiakkaat saattavat jättää tämän tärkeän tiedon huomaamatta, minkä vuoksi on tärkeää lisätä tämä ruudukko- ja luettelonäkymiin.

Adi Shero

Director of Solutions Architect

Adi serves as the Director of Solution Architecture at Shero, where his expertise in quality assurance and platform-specific knowledge greatly contributes to the successful launch of extensive eCommerce projects. Known for his innovation and inquisitive nature, Adi is passionate about developing software and crafting eCommerce and digital strategies for our clients. In his role, he continually engages with the latest technologies, ensuring our clients and our team are poised for success.