Affiliate Plugin mit Config-File


So verhindern Sie die Ausgabe von Warnungen und Meldungen in der Template Engine Smarty. Besonder hilfreich während der Entwicklung in kleinen Projekten.

Affiliate

Mit Affiliate oder den so genannten Produktempfehlungen, können Sie viel Geld verdienen. Solche Produktempfehlungen finden Sie auf vielen Webseiten als prominentes Banner oder zufällige Einblendungen. Der Beitrag soll Ihnen den Code eines Plugins zeigen, das im Template der Webseite zufällige Affiliate-Produkte einblendet.

Die Affiliate-Produkte als Config-Datei

Die Sammlung von Produkten die Sie auf Ihrer Seite zufällig empfehlen möchten, befindet sich in einem ganz normalen Config-File im durch Smarty definierten config-Pfad (meist configs).

PRODUCTS = 'HACKING;REACT;GIT;JS;PHP;WORDPRESS'

[HACKING]
Title       = 'Hacking u. Security - Das umfassende Hacking-Handbuch des IT-Standardwerks'
Description = 'Profitieren Sie von der Beschreibung realer Angriffsszenarien und erfahren...'
Logo        = '/img/affiliate-hacking-rheinwerk.png'
URL         = 'https://www.amazon.de/Hacking-Security...'

[REACT]
Title       = 'React: Das umfassende Handbuch für moderne Frontend-Entwicklung.'
Description = 'Welcher Frontendentwickler hat noch nicht von React gehört? Diese ursprünglich...'
Logo        = '/img/affiliate-react-rheinwerk.png'
URL         = 'https://...'

[...]
Title       = ...
...

Beispielprodukte eines Affiliate-Programms

Der Aufbau ist dabei recht simpel. Mit der Variable PRODUCTS wird ein Index von verfügbaren Produktnamen erzeugt. Das Plugin wählt aus diesem Index ein zufälligen Produkt, z.B. HACKING aus und läd dann die entsprechende Region darunter mit Title, Description, Logo und URL.

Leider besitzt das Smarty-Framework keinen Mechanismus, um aus einer Anzahl von [REGIONEN] einen zufälligen Eintrag auszuwählen. Sie müssen einen kleinen Umweg über das Index-Feld PRODUCTS gehen, in dem eine Zufallswahl stattfindet, dessen Regionsname dann geladen wird. Die Einträge dieser Produktnamen muss folglich mit den Region-Namen identisch sein.

Das Affiliate-Plugin

Der Code für das Plugin ist recht simpel aber effektiv gehalten und stammt aus einem individuellem Coding-Projekt - ist also Spezialcode, kann aber an jedes andere System angepasst werden:

function smarty_function_affiliate($params, Smarty_Internal_Template $template)
{
    global $cms;
    $smarty = $cms->smarty;

    $smarty->configLoad('affiliate.conf');

    $products = explode(';', $smarty->getConfigVars('PRODUCTS')); // Die Produkte als Array
    $max      = count($products)-1;                               // Anzahl der Produkte ermitteln
    $dice     = rand(0, $max);                                    // Zufallswert von 0 bis MAX

    $smarty->configLoad('affiliate.conf', $products[$dice]);      // Die REGION laden

    $smarty->assign('title',       $smarty->getConfigVars('Title'));
    $smarty->assign('description', $smarty->getConfigVars('Description'));
    $smarty->assign('logo',        $smarty->getConfigVars('Logo'));
    $smarty->assign('url',         $smarty->getConfigVars('URL'));
    $smarty->assign('position',    $params['position']);

    $smarty->display('plugin-templates/affiliate.html');
}

Code eines Affiliate-Plugins

Zunächst beginnt das Smarty-Plugin damit, die laufende Instanz des Smarty-Objektes zu holen und läd im Anschluss daran die affiliate.conf, eine individuelle Config-Datei im Configs-Ordner. Mit $products = explode() erstellt das Affiliate-Plugin eine iterierbare Liste (Array) und wählt mit $dice einen zufälligen Eintrag aus. Der Zufallsgenerator startet bei 0 bis maximal zur Anzahl der verfügbaren Elemente $max in der $products-Liste.

Mit $smarty->configLoad('affiliate.conf', $products[$dice]); wird dann die ermittelte Region, z.B. HACKING geladen. Mit Hilfe von $smarty->assign('title', ... werden die Attribute des Produktes dem Template zugewiesen und mit $smarty->display('plugin-templates/affiliate.html') angezeigt.

Das Attribut position ist projektspezifisch und nimmt zusätzliche Angaben aus dem Template ala:

...
{affiliate position='top'} 
...

auf, die im Template eine kleine Steuerung auslösen (nichts wildes...).

Bitte bedenken Sie, das der Code des Plugins aus einem bestehenden Projekt stammt und für Ihren konkreten Fall leicht abweichen kann und daher etwas angepasst werden muss.

Smarty: config.conf Smarty: register Plugin


Mein Name ist Oliver Lohse. Ich bin diplomierter Wirtschafts-Informatiker und Organisations-Programmierer in verschiedenen Sprachen bzw. Markup-Dialekten, z.B. Java, JEE, COBOL, PHP, Python, MySQL, HTML, CSS, ANSI C, Lisp, Rexx, JavaScript, Scheme, ActionScript 2.0, Maschinensprache, Assembler und JCL. Seit mehr als 25 Jahren arbeite ich in einem großen Softwareunternehmen für Versicherungen in Hannover Niedersachsen.

FlightCMS
2024-11-11
Beitrag,Sortieren,Datum,Titel,ASC,DESC
post
Kontakt@Oliver-Lohse.de

Datenschutz

Die Webseite verwendet keinerlei Tracking- oder Speichermechanismen, die einen Rückschluss auf das Leserverhalten und Ihre Identität zulassen. Die Webseite verwendet keine Cookies, denn Cookies haben einen schlechten Ruf.

Impressum

CMSWorkbench ist eine Entwicklerseite über meine Arbeit im Bereich der Content Management Systeme. Die vielen Codeschnipsel sind im wesentlichen als kleine Notizzettel zu werten als das es ausgereifte Beiträge wären.