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:


Inhaltsverzeichnis

[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>&nbsp;{#total#}

Ersetze mit:

 {#product#}&nbsp;<strong>{$ACTUAL_PRODUCT}&nbsp;{#of#}&nbsp;{$PRODUCTS_COUNT}</strong>&nbsp;{#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}&nbsp;{$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}&nbsp;{$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>&nbsp;&nbsp;&nbsp;{/if}{$BUTTON_RELOAD}&nbsp;{$BUTTON_CHECKOUT}</p>

[Bearbeiten] Navigation auch an oberen Rand der Produktübersicht anzeigen

  • 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}&nbsp;{$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]]

           
anything