Boxen erstellen
Boxen sind die einfachste Möglichkeit, eine Ausgabe im Template zu erzeugen, da die Box im Gegensatz zur Page weder registriert werden muss, noch muss ein Template zugewiesen werden.
Um eine Box zu realisieren, erstellen Sie eine php-Datei im Ordner /plugins/my_plugin/boxes/ sowie eine Templatedatei im Ordner /plugins/my_plugin/templates/boxes/. Der Name der php-Datei muss dabei identisch zum Namen des Plugins (zzgl. der Endung ".php") sein. Ähnlich ist es bei der Template-Datei, lediglich muss dieses eine HTML-Datei sein und den Suffix "box_" haben.
Beispiel:
Plugin: /plugins/my_testplugin/
php-Datei: /plugins/my_testplugin/boxes/my_testplugin.php
Template-Datei: /plugins/my_testplugin/templates/boxes/box_my_testplugin.html
Beispiel der php-Datei:
/plugins/xt_bestseller_products/boxes/xt_bestseller_products.php
defined('_VALID_CALL') or die('Direct Access is not allowed.'); // Datei vor direktaufruf schützen if (ACTIVATE_XT_BESTSELLER_PRODUCTS_BOX == 'true' && isset($xtPlugin->active_modules['xt_bestseller_products'])) { // Abfrage ob das Plugin aktiviert ist und die Box mit der Option "ACTIVATE_XT_BESTSELLER_PRODUCTS_BOX" aktiviert wurde require_once _SRV_WEBROOT . _SRV_WEB_PLUGINS . '/xt_bestseller_products/classes/class.bestseller_products.php'; // Einbinden der Klasse if ($params['limit']) { $limit = $params['limit']; } else { $limit = XT_BESTSELLER_PRODUCTS_BOX_LIMIT; } // laden der Produktmenge aus Option bzw. params (siehe info unten bzgl. params) $bestseller_products_data_array = array ( 'limit' => $limit, 'sorting' => $params['order_by'], 'paging' => false ); $bestseller_products_box = new bestseller_products($current_category_id); $bestseller_products_list = $bestseller_products_box->getbestsellerProductListing($bestseller_products_data_array); // Generieren der Produktliste if (count($bestseller_products_list) != 0) { if (ACTIVATE_XT_BESTSELLER_PRODUCTS_PAGE == true) { $show_more_link = true; } else { $show_more_link = false; } // Wenn die Page "Top-Produkte" aktiviert wurde, wird eine Verlinkung zu dieser generiert $tpl_data = array ( '_bestseller_products' => $bestseller_products_list, '_show_more_link' => $show_more_link ); // $tpl_data wird durch den Framework an das Template übergeben. $show_box = true; } else { $show_box = false; } } else { $show_box = false; } // $show_box de/aktiviert Boxen ?>
Beispiel HTML-Datei
/plugins/xt_bestseller_products/templates/boxes/box_xt_bestseller_products.html
<div class="sidebar-box"> {if $_show_more_link == true} {*<!-- $_show_more_link wurde via $tpl_data an das Template übergeben und kann über {$_show_more_link} genutzt werden -->*} <p class="headline"><a href="{link page='bestseller_products' conn=SSL}">{txt key=TEXT_HEADING_BESTSELLER_PRODUCTS}</a></p> {else} <p class="headline">{txt key=TEXT_HEADING_BESTSELLER_PRODUCTS}</p> {/if} <div class="box"> {*<!-- $_bestseller_products wurde via $tpl_data an das Template übergeben, hier wird das Array via Schleife als Liste im Template ausgegben -->*} {foreach name=aussen item=bestseller_products_data from=$_bestseller_products} {if $bestseller_products_data.products_image == 'product:noimage.gif'} <p class="product-image"><a href="{$bestseller_products_data.products_link}"><img src="{$tpl_url_path}img/no_image.png" alt="{$bestseller_products_data.products_name}" /></a></p> {else} <p class="product-image"><a href="{$bestseller_products_data.products_link}">{img img=$bestseller_products_data.products_image type=m_sidebar class="productImageBorder" alt=$bestseller_products_data.products_name}</a></p> {/if} <p class="product-name"><a href="{$bestseller_products_data.products_link}">{$bestseller_products_data.products_name}</a></p> <p class="product-price">{$bestseller_products_data.products_price.formated}</p> {if $bestseller_products_data.products_shipping_link} <p class="product-tax-shipping">{$bestseller_products_data.products_tax_info.tax_desc} <a href="{$bestseller_products_data.products_shipping_link}" target="_blank" rel="nofollow">{txt key=TEXT_EXCL_SHIPPING}</a></p> {else} <p class="product-tax-shipping">{$bestseller_products_data.products_tax_info.tax_desc} {txt key=TEXT_EXCL_SHIPPING}</p> {/if} {/foreach} </div><!-- .box --> </div><!-- .sidebar-box -->