Seiten "Pages" erstellen

Das Erstellen von neuen Seiten im FE des Shops ist ähnlich einfach wie das Erstellen von Boxen.

Zunächst muss im Hook page_registry.php:bottom die Seite definiert und die dazugehörige php-Datei inkludiert werden:

/plugins/xt_testplugin/hooks/page_registry_php_bottom.php
<?php
defined('_VALID_CALL') or die('Direct Access is not allowed.');
define('PAGE_TEST', _SRV_WEB_PLUGINS.'xt_testplugin/pages/testpage.php');
require _SRV_WEBROOT.'plugins/xt_testplugin/classes/class.xt_testplugin.php';

 

Die .php-Datei wird im Ordner /pages/ innerhalb des Plugins abgelegt.

In dieser Datei werden Daten beliebiger Form abgefragt:

/plugins/xt_testplugin/pages/testpage.php
<?php
defined('_VALID_CALL') or die('Direct Access is not allowed.');
$value = 'my random value...';

/* load an array of products (from xt_startpageproducts)*/
require_once _SRV_WEBROOT._SRV_WEB_PLUGINS.'/xt_startpage_products/classes/class.startpage_products.php';
$startpage_products_page = new startpage_products($current_category_id);
$my_array = $startpage_products_page->getStartPageProductListing($startpage_products_page_data_array);

// Die Zuvor angefragten Daten werden in $tpl_data geschrieben:
$tpl_data = array(
    'my_value' => $value,
    'my_products_array' => $my_array
);

// In $tpl wird eine Template-Datei zugewiesen, diese wird zunächst in /templates/AKTIVES_TEMPLATE/plugins/PLUGINNAME/templates/ ,
// dann in /plugins/xt_testplugin/templates/ gesucht. Der Pfad im Template gibt entwicklern die Möglichkeit das Template 
// zu modifizieren ohne Dateien im Pluginordner zu ändern.

$tpl = 'mypage.html';

// Template() laden und Daten übergeben
$template = new Template();
$template->getTemplatePath($tpl, 'xt_testplugin', '', 'plugin');
$page_data = $template->getTemplate('xt_testplugin_smarty', $tpl, $tpl_data);

Die dazugehörige Template-Datei muss diese Daten natürlich entsprechend ausgeben. Strings können ganz normal ausgegeben werden, Arrays werden durch foreach-Schleifen verarbeitet:

/plugins/xt_testplugin/templates/mypage.html
<!-- {debug} -->

<h1>{$my_value}</h1>

<!-- {* In $my_products_array befinden sich die Produktdaten, siehe "from=$my_products_array": *} -->
{foreach name=aussen item=module_data from=$my_products_array}
<div class="column {$smarty.const._STORE_TPL_LISTING_COLUMNS}">
    <div class="box product box-hover">
    {if $module_data.products_image == 'product:noimage.gif'}
        <p class="product-image"><a href="{$module_data.products_link}"><img src="{$tpl_url_path}img/no_image.png" alt="{$module_data.products_name|escape:"html"}" /></a></p>
        {if $module_data.base_price}<p class="vpe">{$module_data.base_price.price} {txt key=TEXT_SHIPPING_BASE_PER} {$module_data.base_price.vpe.name}</p>{/if}            
    {else}
        <p class="product-image"><a href="{$module_data.products_link}">{img img=$module_data.products_image type=m_thumb class="productImageBorder" alt=$module_data.products_name|escape:"html"}</a></p>
    {/if}
    <p class="product-name"><a href="{$module_data.products_link}">{$module_data.products_name}</a></p>            
    {if $module_data.review_stars_rating}
    <div class="product-reviews">
        <div class="reviews_rating_light">
            <div class="reviews_rating_dark" style="width:{$module_data.review_stars_rating}%"></div>
        </div>
    </div>
    {/if}
    {if $smarty.const._CUST_STATUS_SHOW_PRICE eq '1' and $module_data.products_price.formated neq ''}
        <p class="product-price">{$module_data.products_price.formated}</p>
        {if $module_data.products_shipping_link}
            <p class="product-tax-shipping">{$module_data.products_tax_info.tax_desc} <a href="{$module_data.products_shipping_link}" target="_blank" rel="nofollow">{txt key=TEXT_EXCL_SHIPPING}</a></p>
        {else}
            <p class="product-tax-shipping">{$module_data.products_tax_info.tax_desc} {txt key=TEXT_EXCL_SHIPPING}</p>
        {/if}
    {/if}
    {if $module_data.date_available!=''}
        <p class="box info">{txt key=TEXT_PRODUCT_AVAILABLE} {$module_data.date_available|date_format:"%A, %B %e, %Y"}</p>
    {/if}
    </div><!-- .box .product -->
</div><!-- .column .four -->
{/foreach}

Sollten Sie kein Template benötigen, können Sie ebenfalls die Templateausgabe unterdrücken, auf diese Art lassen sich z.B. Ajax-Applikationen, dynamische Javascripte oder css-Dateien realisieren.

 

Support
Shop Support: Support zum Shop und anderen
Produkten von xt:Commerce.

Fehler melden
Report a Bug: Fehler gefunden?
Informieren Sie uns.

xt:Commerce Marketplace
Plugins & Templates: Über 500 Möglichkeiten in unserem
Store zur Shop-Optimierung.

xt:Commerce Service Team
Services: Wir übernehmen individuelle
Anpassungen für Ihren Shop.

Impressum