Tutorial: xtCommerce 304sp21 Template anpassen für xtcModified
Aus Wiki | xtcModified eCommerce Shopsoftware
Anleitung: Wie passe ich mein altes xt:Commerce* 3.0.4 SP2.1 Template für xtcModified an?
zwingend notwendig = diese Änderungen sind für die korrekte Funktionsweise des Shops unbedingt durchzuführen.
optional = diese Änderungen können durchgeführt werden, sind aber für die korrekte Funktion nicht zwingend notwendig.
Die folgenden Änderungen sind für alle xt:Commerce*-Templates oder ältere xtcModified-Templates durchzuführen, um wieder unter der aktuellen xtcModified-Version zu funktionieren:
[Bearbeiten] Änderungen ab Version 1.0.0-1.0.3
[Bearbeiten] Datenschutzerklärung bestätigen
- zwingend notwendig in
\templates\TEMPLATENAME\module\create_account.html \templates\TEMPLATENAME\module\create_account_guest.html
folgendes einfügen:
{if $PRIVACY_CHECKBOX} <div>{$PRIVACY_CHECKBOX}{#text_privacy_accept#} {$PRIVACY_LINK}</div> {/if}
[Bearbeiten] Bestätigungsfeld für die E-Mail Adresse
- zwingend notwendig in
\templates\TEMPLATENAME\module\create_account.html \templates\TEMPLATENAME\module\create_account_guest.html \templates\TEMPLATENAME\module\account_edit.html
Um die E-Mail adresse ein 2. mal bestätigen zu lassen
Finde:
<tr> <td>{#text_email#}</td> <td>{$INPUT_EMAIL}</td> </tr>
Füge an:
<tr> <td>{#text_confirm_email#}</td> <td>{$INPUT_CONFIRM_EMAIL}</td> </tr>
[Bearbeiten] CAPTCHA-Feld im Kontaktformular
- zwingend notwendig in
\templates\TEMPLATENAME\module\contact_us.html
Als erste Zeile in der Datei folgendes einfügen:
{config_load file="$language/lang_$language.conf" section="newsletter"}
Datei an gewünschter Stelle erweitern um:
<tr> <td width="30%" class="boxTextBG"><div align="right">{#text_sec_code#}</div></td> <td width="70%" class="main">{$VVIMG}</td> </tr> <tr> <td width="30%" class="boxTextBG"><div align="right">{#text_inp_code#}</div></td> <td width="70%" class="main">{$INPUT_CODE}</td> </tr>
[Bearbeiten] JQUERY-Popup für Produktbilder und Versandkostenlink
- zwingend notwendig in
\templates\TEMPLATENAME\javascript\general.js.php
Dateien thickbox.css, jquery.js, thickbox.js und macFFBgHack.png aus dem Originaltemplate (xtc5) kopieren nicht vergessen (!)
<link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/thickbox.css" type="text/css" media="screen" /> <?php //load jQuery default library jquery.js from faster Google CDN /*<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/jquery.js" type="text/javascript"></script>*/ ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> <script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/thickbox.js" type="text/javascript"></script>
- zwingend notwendig in
\templates\TEMPLATENAME\module\product_info\product_info_v1.html
<a title="{$PRODUCTS_NAME}" href="{$PRODUCTS_IMAGE|replace:"info_images":"popup_images"}" class="thickbox" rel="{$PRODUCTS_ID}"> <img src="{$PRODUCTS_IMAGE}" alt="{$PRODUCTS_NAME}" class="productimage" />{if $PRODUCTS_POPUP_LINK!=''}<br/>{#text_zoom#}{/if}</a>
- zwingend notwendig in
\templates\TEMPLATENAME\source\boxes\shopping_cart.php
$box_smarty->assign('SHIPPING_INFO',$main->getShippingLink()); //web28 - 2012-05-03 - use main function
[Bearbeiten] Nicht mehr vorhandene Funktion 'xtc_session_is_registered' ersetzen
- zwingend notwendig in
templates/TEMPLATENAME/source/boxes/loginbox.php
Finde:
if (!xtc_session_is_registered('customer_id')) {
ersetzen mit
if (!isset($_SESSION['customer_id'])) {
[Bearbeiten] Anpassung des AGB-Anzeigefeldes
- zwingend notwendig in
templates/TEMPLATENAME/stylesheet.css erweitern um:
div.agbframe { width:100%; height:200px; overflow:auto; padding:10px; background:url(img/input_bg.gif) no-repeat; border:1px solid #666; }
[Bearbeiten] Mehrere Produktbilder bei der Produktansicht
- optional
/templates/DEINTEMPLATE/module/product_info/product_info_v1.html
zusätzlich notwendig um mehrere Produktbilder auch beim Ausdruck zu berücksichtigen:
Suche:
{if $PRODUCTS_IMAGE_1 != ''} [...] {if $PRODUCTS_IMAGE_3 != ''} usw...
Ersetze mit:
{if $more_images|@count > 0} <!-- More Pictures --> <div class="morepics"> {foreach item=more_images_data from=$more_images} <a class="thickbox" rel="{$PRODUCTS_ID}" title="{$PRODUCTS_NAME}" href="{$more_images_data.PRODUCTS_IMAGE|replace:"info_images":"popup_images"}"> <img src="{$more_images_data.PRODUCTS_IMAGE}" alt="{$PRODUCTS_NAME}" /></a> {/foreach} <div style="clear:both;"></div> </div> {/if}
/templates/DEINTEMPLATE/module/print_product_info.html
zusätzlich notwendig um mehrere Produktbilder auch beim Ausdruck zu berücksichtigen:
Suche:
{if $PRODUCTS_IMAGE_1 != ''} [...] {if $PRODUCTS_IMAGE_3 != ''} usw...
Ersetze mit:
{foreach item=more_images_data from=$more_images} <div class="hrlightgrey"></div><img src="{$more_images_data.PRODUCTS_IMAGE}" alt="{$module_data.NAME}" border="0" class="productimage"/> {/foreach}
[Bearbeiten] Anzeige der VPE-Infos bei den Bestsellers
Optionale Anpassungen:
- optional in
\templates\TEMPLATENAME\boxes\box_best_sellers.html
<div class="bestSellersPrice"> {$box_data.PRODUCTS_PRICE}<br /> {if $box_data.PRODUCTS_VPE}{$box_data.PRODUCTS_VPE}<br />{/if} {$box_data.PRODUCTS_TAX_INFO}<br /> {$box_data.PRODUCTS_SHIPPING_LINK}<br /> </div> {if $box_data.PRODUCTS_IMAGE} <div class="bestSellerImage"> <a href="{$box_data.PRODUCTS_LINK}"><img src="{$box_data.PRODUCTS_IMAGE}" alt="{$box_data.PRODUCTS_NAME}" /></a> </div> {/if}
[Bearbeiten] Keine Checkoutboxen
- optional in
\templates\TEMPLATENAME\index.html
{if !strstr ($smarty.server.PHP_SELF, 'checkout')} [QUELLTEXT - ist etwas komplexer und hängt vom Templateaufbau ab]
[Bearbeiten] Löschen Button im Template
Änderungen siehe http://sourceforge.net/apps/trac/xtcmodified/changeset/232/
[Bearbeiten] Kunde erlauben, sein eigenes Konto zu löschen
- optional in
(um dem Kunden ermöglichen, sein eigenes Konto zu löschen)
\templates\TEMPLATENAME\module\account.html
nach
<li><a href="{$LINK_PASSWORD}"><strong>{#text_password#}</strong></a></li>
folgendes einfügen
{if $LINK_DELETE} <li><a href="{$LINK_DELETE}"><strong>{#text_delete#}</strong></a></li> {/if}
Die Datei
\templates\xtc5\module\account_delete.html
in den eigenen Templateordner kopieren
[Bearbeiten] htaccess-Umleitung für SEO-friendly URLs / doppelten Content vermeiden
- optional
Die Datei \templates\xtc5\source\inc\gunnart_productRedirect.inc.php in den eigenen Templateordner kopieren
und in der Datei \templates\TEMPLATENAME\source\boxes.php folgenden Code am Anfang hinzufügen
require_once (DIR_FS_CATALOG . 'templates/' . CURRENT_TEMPLATE . '/source/inc/gunnart_productRedirect.inc.php');
[Bearbeiten] Änderungen ab Version 1.0.4
[Bearbeiten] CSS am Seitenanfang und Javascript am Seitenende
- zwingend erforderlich (um CSS am Seitenanfang und Javascript am Seitenenden zu laden)
neue Datei
\templates\TEMPLATENAME\css\general.css.php
erstellen und mit den CSS-Dateien für die Stile füllen (siehe xtc5-Template)
In der Datei
\templates\TEMPLATENAME\javascript\general.js.php
die CSS-Stile dafür entfernen.
(Hintergrund: Für einen schnelleren Seitenaufbau wird general.css.php nun am Anfang geladen und die Datei general.js.php erst am Ende)
[Bearbeiten] Anzeige einer Verlaufszeile 'x von y Produkten'
- optional
/templates/DEINTEMPLATE/module/product_navigator.html
Suche:
<strong>{$PRODUCTS_COUNT}</strong> {#total#}
Ersetze mit:
{#product#} <strong>{$ACTUAL_PRODUCT} {#of#} {$PRODUCTS_COUNT}</strong> {#total#}
[Bearbeiten] PayPal-IPN Link-Anpassung
- zwingend notwendig (wenn Zahlungsart PayPal-IPN im Einsatz ist)
/templates/DEINTEMPLATE/module/account_history_info.html
Suche:
<div class="hr"></div> <p>{$TOTAL_BLOCK}</p>
Ersetze mit:
<div class="hr"></div> {if $PAYPAL_LINK} <p><div style="padding:5px;">{$PAYPAL_LINK}</div></p> {/if} <p>{$TOTAL_BLOCK}</p>
- zwingend notwendig in
/templates/DEINTEMPLATE/module/checkout_success.html
Suche:
{if $GV_SEND_LINK} <p>{#gv_has_vouchera#} {$GV_SEND_LINK} {#gv_has_voucherb#}</p> {/if} <p>{$BUTTON_PRINT} {$BUTTON_CONTINUE}</p>
Ersetze mit:
{if $GV_SEND_LINK} <p>{#gv_has_vouchera#} {$GV_SEND_LINK} {#gv_has_voucherb#}</p> {/if} {if $PAYPAL_LINK} <p><div style="background: #f2f2f2; color: #ffffff; padding:5px; border: 2px solid #496686">{$PAYPAL_LINK}</div></p> {/if} <p>{$BUTTON_PRINT} {$BUTTON_CONTINUE}</p>
[Bearbeiten] Eigene Überschrift bei Gastkonten
- optional
/templates/DEINTEMPLATE/module/create_account_guest.html
Suche:
<h1>{#heading_create_account#}</h1>
Ersetze mit:
<h1>{#heading_create_guest_account#}</h1>
[Bearbeiten] Signatur und Widerruf als E-Mail Anhang
- zwingend notwendig
E-Mail Widerruf: Aus dem original xtc5 Template sind die folgenden Dateien ins neue Template in die selben Ordner zu kopieren und/oder anzupassen:
/templates/TEMPLATENAME/mail/german/widerruf.txt /templates/TEMPLATENAME/mail/german/widerruf.html /templates/TEMPLATENAME/mail/german/order_mail.txt /templates/TEMPLATENAME/mail/german/order_mail.html /templates/TEMPLATENAME/mail/english/widerruf.html /templates/TEMPLATENAME/mail/english/widerruf.txt /templates/TEMPLATENAME/mail/english/order_mail.txt /templates/TEMPLATENAME/mail/english/order_mail.html /templates/TEMPLATENAME/mail/german/signatur.txt /templates/TEMPLATENAME/mail/german/signatur.html /templates/TEMPLATENAME/mail/english/signatur.txt /templates/TEMPLATENAME/mail/english/signatur.html
/templates/TEMPLATENAME/module/account_delete.html /templates/TEMPLATENAME/module/error_handler.html /templates/TEMPLATENAME/module/google_sitemap.html
[Bearbeiten] Änderungen ab Version 1.0.5
[Bearbeiten] Shop online/offline Modus
- zwingend notwendig
Aus dem original xtc5 Template sind die folgenden Dateien ins neue Template in die selben Ordner zu kopieren und/oder anzupassen:
/templates/TEMPLATENAME/offline.html
[Bearbeiten] Button "Einkauf fortsetzen" im Warenkorb anzeigen
- optional in
templates\TEMPLATENAME\module\shopping_cart.html
Der folgende Abschnitt ist ab xtcModified 1.06 nicht mehr im Template nötig!
Nach
{config_load file="$language/lang_$language.conf" section="shopping_cart"}
einfügen von:
{php} global $breadcrumb, $cPath_array, $actual_products_id; if(!empty($cPath_array)) { $this->assign('CONTINUE_NAME',$breadcrumb->_trail[count($breadcrumb->_trail)-2]['title']); $this->assign('CONTINUE_LINK',$breadcrumb->_trail[count($breadcrumb->_trail)-2]['link']); $ct_shopping = $breadcrumb->_trail[count($breadcrumb->_trail)-2]['link']; } if(!empty($actual_products_id)) { $this->assign('CONTINUE_NAME',$breadcrumb->_trail[count($breadcrumb->_trail)-2]['title']); $this->assign('CONTINUE_LINK',$breadcrumb->_trail[count($breadcrumb->_trail)-2]['link']); $ct_shopping = $breadcrumb->_trail[count($breadcrumb->_trail)-2]['link']; } if(!empty($ct_shopping)) $_SESSION['continue_link'] = $ct_shopping; if(!empty($_SESSION['continue_link'])) $this->assign('CONTINUE_LINK',$_SESSION['continue_link']); $this->assign('BUTTON_CONTINUE_SHOPPING', xtc_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING)); {/php}
Dieser Abschnitt ist auch ab xtcModified 1.06 im Template zusätzlich nötig!
und vor
<p>{$FORM_END}{/if}
einfügen von
<p>{if $CONTINUE_LINK}<a href="{$CONTINUE_LINK}">{$BUTTON_CONTINUE_SHOPPING}</a> {/if}{$BUTTON_RELOAD} {$BUTTON_CHECKOUT}</p>
[Bearbeiten]
- optional in
templates\TEMPLATENAME\module\product_listing\product_listing_v1.html
vor
{foreach name=aussen item=module_data from=$module_content}
einfügen von:
{$NAVIGATION}
[Bearbeiten] Änderungen ab Version 1.0.5 SP1
[Bearbeiten] Button zum Ausdrucken der checkout_success ändern
- zwingend in
der Datei "\templates\TEMPLATENAME\module\checkout_success.html" suchen nach
<h1>{#heading_success#}</h1>
davor
{$FORM_ACTION}
ersetzen mit
{*$FORM_ACTION*}
suchen nach
<p>{$BUTTON_PRINT} {$BUTTON_CONTINUE}</p>
ersetzen durch
{$FORM_ACTION_PRINT} <div style="float:left;">{$BUTTON_PRINT}</div> {$FORM_END} {$FORM_ACTION} <div style="float:left; padding-left:5px;">{$BUTTON_CONTINUE}</div> <div style="clear:left;"></div>
[Bearbeiten] Änderungen ab Version 1.0.6
[Bearbeiten] Generelles Templateupdate durch den Wegfall von "base href" (Security-Fix)
- zwingend in
allen PHP-Dateien im Verzeichnis "templates\TEMPLATENAME\source\boxes\", sowie der Datei "templates\TEMPLATENAME\source\boxes.php"
suchen nach
$box_smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
und ersetzen durch
$box_smarty->assign('tpl_path',DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/');
zusätzlich in der Datei templates\TEMPLATENAME\css\general.css.php suchen nach
<link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/css/jquery-ui.css" type="text/css" media="screen" />
und ersetzen durch
<link rel="stylesheet" href="<?php echo DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE; ?>/css/jquery-ui.css" type="text/css" media="screen" />
[Bearbeiten] Links von print_product_info nicht von Suchmaschinen indizieren lassen
- optional in
der Datei "\templates\TEMPLATENAME\module\print_product_info.html" suchen nach
<meta http-equiv="Content-Style-Type" content="text/css" />
und danach einfügen von
{if $sProdLink} <link href="{$sProdLink}" rel="canonical" /> {/if}
[Bearbeiten] Generelle Templateverbesserungen für eine zukünftige Aktualisierung von Smarty 2.x auf Smarty 3.x
- optional in
Anpassung der Datei shopping_cart.html im Verzeichnis: templates/TEMPLATENAME/modules/ ab ca. Zeile 3 ‐ 18, den kompletten PHP‐Code inkl. {php} und {/php} löschen!
- optional in
Korrektur der Template‐Datei index.html im Verzeichnis: templates/TEMPLATENAME/
strstr ($smarty…
ändern in:
strstr($smarty…
(->hier befindet sich ein Leerzeichen zwischen der PHP‐Funktion "strstr" und der geöffneten Klammer!)
Korrektur der Template‐Datei box_cart.html im Verzeichnis: templates/TEMPLATENAME/boxes/
<div{if $GV_AMOUNT =='' }…
ändern in
<div{if $GV_AMOUNT ==''}…
(-> auch hier befindet sich ein Leerzeichen, diesmal vor der schliessenden Smarty‐Klammer!)
Korrektur der Template‐Datei multi_options_1.html im Verzeichnis: templates/TEMPLATENAME/module/product_options/
{if $item_data.PRICE !='' }
ändern in
{if $item_data.PRICE !=''}
(-> auch hier befindet sich ein Leerzeichen, diesmal vor der schliessenden Smarty‐Klammer!)
Korrektur der Template‐Datei product_options_dropdown.html im Verzeichnis: templates/TEMPLATENAME/module/product_options/
{if $item_data.PRICE !='' }
ändern in
{if $item_data.PRICE !=''}
(-> auch hier befindet sich ein Leerzeichen, diesmal vor der schliessenden Smarty‐Klammer!)
Korrektur der Template‐Datei account.html im Verzeichnis: templates/TEMPLATENAME/module/
{foreach name=history_products item=products_history from=$products_history} <li><a href="{$products_history.PRODUCTS_LINK}">{$products_history.PRODUCTS_NAME} / {$products_history.PRODUCTS_PRICE}</a></li> {/foreach}
ändern in
{foreach name=history_products item=prod_history_data from=$products_history} <li><a href="{$prod_history_data.PRODUCTS_LINK}">{$prod_history_data.PRODUCTS_NAME} / {$prod_history_data.PRODUCTS_PRICE}</a></li> {/foreach}
(-> Smarty3 stört sich hier am gleichlautenden Namen "item=products_history", wie die Variable $products_history)
[Bearbeiten] Korrekte Ausgabe von Fehlermeldungen beim Gutscheinversand
- zwingend in
der Datei "templates\TEMPLATENAME\module\gv_send.html" suchen nach
{$FORM_ACTION}
und darunter einfügen
{if $error!=''}<div class="errormessage">{$error}</div>{/if}
[Bearbeiten] Das Auslaufdatum bei Sonderangeboten anzeigen
- optional in
templates\TEMPLATENAME\module\product_info\product_info_v1.html
an beliebiger Stelle einfügen:
{if $PRODUCTS_EXPIRES}<p>{#text_expires_date#} {$PRODUCTS_EXPIRES}</p>{/if}
und in der Datei
templates\TEMPLATENAME\module\specials.html
{if $module_data.PRODUCTS_EXPIRES != '0000-00-00 00:00:00'}<p>{#text_expires_date#} {$module_data.PRODUCTS_EXPIRES|date_format:"%x"}</p>{/if}
[Bearbeiten] Auf der Rechnung und dem Lieferschein die Bezeichnung anzeigen
Druckt man in der Administration eine Rechnung oder einen Lieferschein, fehlt die Bezeichnung "Rechnung" bzw. "Lieferschein" auf dem Ausdruck
- optional in
templates\TEMPLATENAME\admin\print_order.html
an beliebiger Stelle einfügen:
{#invoice#}
templates\TEMPLATENAME\admin\print_packingslip.html
an beliebiger Stelle einfügen:
{#packingslip#}
und in der Datei lang\german\lang_german.conf unter dem Abschnitt [print_order] einfügen:
invoice = 'Rechnung' packingslip = 'Lieferschein'
und in der Datei lang\english\lang_english.conf unter dem Abschnitt [print_order] einfügen:
invoice = 'Invoice' packingslip = 'Packing slip'
[Bearbeiten] Bugfix: Keine Anzeige von Unterkategorien, wenn Kategorie Produkte enthält
Wenn man Produkte direkt zu Hauptkategorien zugeordnet hat, wird die Liste der Unterkategorien nicht angezeigt. Der Bugfix in den Changesets behebt das Problem
- optional
Changeset http://sourceforge.net/apps/trac/xtcmodified/changeset/2284/
Changeset http://sourceforge.net/apps/trac/xtcmodified/changeset/2307/
anwenden
[Bearbeiten] Änderungen für SSEQ-LIB
Nachfolgendes ist NUR nötig, wenn die xtcModified Beta-Version mit SSEQ zum Einsatz kommt!
Seit xtcModified v1.02 BETA aufgrund der Integration der SSEQ-LIB zusätzlich nötig:
in \templates\TEMPLATENAME\source\boxes\loginbox.php
Suche:
$box_smarty->assign('FORM_ACTION', '<form id="loginbox" method="post" action="'.xtc_href_link(FILENAME_LOGIN, 'action=process', 'SSL').'">');
Ersetze mit:
$box_smarty->assign('FORM_ACTION', '<form id="loginbox" method="post" action="'.xtc_href_link(FILENAME_LOGIN, 'action=process', 'SSL').'">' . SEQ_FTOKEN('login', true));
in \templates\TEMPLATENAME\source\boxes\add_a_quickie.php
Suche:
$box_smarty->assign('FORM_ACTION', '<form id="quick_add" method="post" action="' . xtc_href_link(basename($PHP_SELF), xtc_get_all_get_params(array ('action')) . 'action=add_a_quickie', 'NONSSL') . '">');
Ersetze mit:
$box_smarty->assign('FORM_ACTION', '<form id="quick_add" method="post" action="' . xtc_href_link(basename($PHP_SELF), xtc_get_all_get_params(array ('action')) . 'action=add_a_quickie', 'NONSSL') . '">' . SEQ_FTOKEN('add_a_quickie'));
*xt:commerce ist ein geschützter Name der Firma xt:commerce GmbH ([1]]

