Mein erstes Oxid Modul Part II Admin Option

Letzte Woche hatte ich mich ja bereits mit dem erstellen eines einfachen Oxid Moduls beschäftigt. Heute werde ich das Modul, um eine einfach Admin Option erweitern. Wer die Preiserspartnis nicht als Betrag, sondern lieber prozentual anzeigen möchte, der soll dies im Admin über eine Checkbox auswählen können. Als passende Stelle für diese Option habe ich die Artikeleinstellungen unter Grundeinstellungen -> Einstell. -> Artikel gewählt. Damit die Auswahl “SHOWPRICESAVINGASPERCENTAGE” (wieder keine Übersetzungen eingebaut) erscheint muss lediglich die Datei /out/admin/tpl/shop_config.tpl um folgende Zeilen ergänzt werden:

<dl>
    <dt>
        <input type=hidden name=confbools[blShowPriceSavingAsPercentage] value=false>
        <input type=checkbox name=confbools[blShowPriceSavingAsPercentage] value=true  [{if ($confbools.blShowPriceSavingAsPercentage)}]checked[{/if}] [{ $readonly}]>
                    [{ oxinputhelp ident="HELP_SHOP_CONFIG_SHOWPRICESAVINGASPERCENTAGE" }]
    </dt>
    <dd>
        [{ oxmultilang ident="SHOP_CONFIG_SHOWPRICESAVINGASPERCENTAGE" }]
    </dd>
    <div class="spacer"></div>
</dl>

Da die Tabelle oxconfig als EAV angelegt ist, braucht man auf der Adminseite nichts weiter machen. Die Option wird jetzt automatisch beim nächsten Klick auf den Speichern-Button in die Tabelle übernommen.

Option in den Grundeinstellungen

 

 

 

 

 

 

 

 

In unserem udoPriceSaving Modul ist diese Option jetzt einfach über “oxConfig::getInstance()->getConfigParam(‘blShowPriceSavingAsPercentage’)” abrufbar. Die Config wird bei Oxid also als Singleton realisiert, worüber alle Settings aus der oxconfig Tabelle verfügbar sind.

/**
 * udoPriceSaving
 *
 * @author      Udo Telaar <[email protected]>
 */
class udoPriceSaving extends udoPriceSaving_parent
{
    /* @var $this oxArticle */

    public function getPriceSaving()
    {
        if ($this->getFTPrice() > $this->getFPrice()) {
            if (oxConfig::getInstance()->getConfigParam('blShowPriceSavingAsPercentage')) {
                return floor(100 * (1 - $this->getFPrice()/$this->getFTPrice())) . ' %';
            }

            return $this->getFTPrice() - $this->getFPrice() . ' €';
        }
    }
}

Bei der Ausgabe habe ich kurzfristig etwas gefuscht. Die Anzeige des ensprechenden Währungs- bzw. Prozentzeichens sollte man sicherlich im Template belassen. Beim nächsten Teil werde ich die Abfrage der entsprechenden Konfigurationsvariablen dort wieder einbauen. Um die korrekte Funktionsweise unserer neuen Adminfunktion zu verdeutlichen erfüllt folgender Quelltext, in der Datei /out/azure/tpl/page/details/inc/productmain.tpl aber erst mal seinen Zweck:

[{if $oDetailsProduct->getPriceSaving()}]
    <span class="priceOld">
        [{ oxmultilang ident="DETAILS_PRICESAVING" }] [{ $oDetailsProduct->getPriceSaving()}]
    </span>
[{/if}]

Das ganze sollte dann am Ende so aussehen:

Oxid Modul Price Percentage

 

 

 

 

 

 

 

 

 

 

Oxid Modul Price Percentage

Oxid Modul Price Amount

 

 

 

 

 

 

 

 

 

 

Oxid Modul Price Amount

Beim nächsten Mal werde ich dann auch die Übersetzungen mit einbauen. So sieht das ja wirklich nicht schön aus.



0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.