indeed I'm a geek

Eigener View im OXID eShop

Es gehört zwar zu den Grundlagen, wenn man sich mit der Entwicklung von Modulen etc. des OXID eShops befasst. Für einige Personen aber eine gute Stütze, weil man doch ziemlich oft die Lösung für das ein- oder andere triviale Problem vergisst. Man sieht den Wald vor lauter Bäumen nicht. Ein eigener View im OXID eShop ist sinnvoll wenn man eine Funktion, wie z.B. ein spezielles Kontaktformular, verwirklichen möchte.

Hinweis: Dieser Beitrag bezieht sich auf die Shop Version kleiner 4.6.

Das Grundgerüst eines Views ist eine von oxUBase vererbte Klasse. Es hängt von der Verwendung des künftigen neuen Views ab, von welcher Standardklasse wir vererben möchten. Da wir ein neues Kontaktformular erstellen wollen, lassen wir die neue Viewklasse von der Contact View erben. Diese enthält bereits schon viele nützlichen Methoden die wir gebrauchen können.

Wir erstellen also eine neue PHP Datei im views-Verzeichnis des Shops mit dem Namen unserer neuen Klasse, z.B. ta_contact.php. Der Quellcode dieser Datei sieht wie folgt aus:

class ta_contact extends Contact //oxUBase
{
    /**
     * Current class template name.
     * @var string
     */
    protected $_sThisTemplate = 'custom/ta_contact.tpl';

    public function render()
    {
        $ret = parent::render();
        // mache dies und das
        return $ret;
    }

    /**
     * Composes and sends user written message, returns false if some parameters
     * are missing.
     *
     * @return bool
     */
    public function send()
    {
        // generiere E-Mail
    }
}

Die Methode render() ist eine Pflichtmethode die in allen Views innerhalb des OXID Frameworks zuletzt aufgerufen wird. Sie generiert die Ausgabe des Templates und ist prädestiniert dafür um dem Template bzw. Smarty auch Variablen oder Objekte zur Verfügung stellen.

Wichtig: um die Vererbungs- und Verkettungsfunktionalität innerhalb des Frameworks zu gewährleisten sollte immer auch die Parentmethode aufgerufen werden, sofern diese auch in der Parentklasse existiert!

Die Methode send() wird dann im Template über einen Submit Button mittels Formular aufgerufen. Das Template legen wir im out-Verzeichnis des Shops ab, z.B. out/azure/tpl/custom/ta_contact.tpl

[{capture append="oxidBlock_content"}]
    [{if $oView->getContactSendStatus() }]
        [{assign var="_statusMessage" value="PAGE_INFO_CONTACT_THANKYOU1"|oxmultilangassign|cat:" "|cat:$oxcmp_shop->oxshops__oxname->value}]
        [{assign var="_statusMessageSuffix" value="PAGE_INFO_CONTACT_THANKYOU2"|oxmultilangassign}]
        [{include file="message/notice.tpl" statusMessage=$_statusMessage|cat:$_statusMessageSuffix}]
    [{/if }]
    [{assign var="editval" value=$oView->getUserData() }]
    [{oxscript include="js/widgets/oxinputvalidator.js" priority=10 }]
    [{oxscript add="$('form.js-oxValidate').oxInputValidator();"}]
    <form class="js-oxValidate" action="[{ $oViewConf->getSslSelfLink() }]" method="post">
        <div>
            [{ $oViewConf->getHiddenSid() }]
            <input type="hidden" name="fnc" value="send"/>
            <input type="hidden" name="cl" value="ta_contact"/>
        </div>
        <ul class="form clear">
            <!-- dies und das -->
            <li>
                <button class="submitButton largeButton" type="submit">[{ oxmultilang ident="FORM_CONTACT_SEND" }]</button>
            </li>
        </ul>
    </form>
    [{ insert name="oxid_tracker" title=$template_title }]
[{/capture}]
[{include file="layout/page.tpl" sidebar="Left"}]

Über den Browser kann man den View inkl. das eigene Template über die URL mit einem Parameter aufrufen.

http://www.meinshop.de/index.php?cl=ta_contact

Im Shopadmin könnte man diesem unschönen Link auch noch einen ansprechenderen SEO Link verpassen, z.B.

http://www.meinshop.de/special-contact/

Dieser Beitrag ist als kleine Denkstütze gedacht. Es ist hier natürlich auch nicht alles ausführlich aufgeführt und es gehört noch etwas mehr zu so einem Kontaktformular, wie z.B. die Verarbeitung der übermittelten Parameter, etc.

Der OXID eShop kann bei der OXID eSales AG in der Community Edition kostenlos heruntergeladen werden.

OXID eShop Download

Einen Kommentar schreiben

Zwei Kommentare

Hinterlasse deinen Kommentar