Tutorial: Zusätzliche Datenfelder sprachabhängig (modified shop 106)

Aus Wiki | modified eCommerce Shopsoftware
Zur Navigation springenZur Suche springen

(by Hendrik Koch, 05.2015)

Im Gegensatz zu den Datenwerten des ersten Tutorials (Buchautor, ISBN) gibt es Daten die in jede Sprache übersetzt vorliegen müssen.

Im zweiten Teil des Tutorials werden sprachabhängige Artikel- Datenfelder eingefügt. Wir ergänzen das Szenario aus dem ersten Tutorial indem wir ein Datenfeld für eine Kurzrezension einfügen.

Datenbank erweitern[Bearbeiten]

Als erstes muß ein neues Datenfeld in der Datenbank erstellt werden. Dieses Datenfeld setzen wir in die Tabelle products_description. Diese Tabelle enthält alle sprachabhängigen Artikeldaten.

products_review_title (varchar, 255 Zeichen, Überschrift)
products_review_text (text, unfeschränkter freier Text)

Mit phpmyadmin folgende SQL-Anweisung ausführen:

  ALTER TABLE `products_description` 
  ADD `products_review_title` VARCHAR( 255 ) NOT NULL ,
  ADD `products_review_text` TEXT NOT NULL;

Backend Eingabe[Bearbeiten]

Die Artikeladministration wird um die Eingabefelder erweitert.

Zuerst die Sprachdefinitionen. Kurzrezension-Überschrift und -Text.

lang/german/admin/categories.php
Füge ein:

// products_extrafield_lang
define('TEXT_PRODUCTS_REVIEW_TITLE','Kurzrezension Überschrift');
define('TEXT_PRODUCTS_REVIEW_TEXT','Kurzrezension Text');
  

lang/english/admin/categories.php
Füge ein:

// products_extrafield_lang
define('TEXT_PRODUCTS_REVIEW_TITLE','Review Title');
define('TEXT_PRODUCTS_REVIEW_TEXT','Review Text');

ggf. weitere Sprachen.

Nun der Patch der Artikeleingabe.
Datei admin/includes/modules/new_product.php
Finde:

    $pInfo = new objectInfo($_POST);
    $products_name = $_POST['products_name'];
    $products_description = $_POST['products_description'];
    $products_short_description = $_POST['products_short_description'];
    $products_order_description = $_POST['products_order_description'];

Füge an:

    // products extrafields lang
    $products_review_title = $_POST['products_review_title'];
    $products_review_text = $_POST['products_review_text'];




Finde:

          <div width="100%" valign="top" class="main" style="padding: 3px; line-height:20px;">
            <b><?php echo $lng_image . '&nbsp;' . TEXT_PRODUCTS_SHORT_DESCRIPTION; ?></b><br />
            <?php echo xtc_draw_textarea_field('products_short_description_' . $languages[$i]['id'], 'soft', '103', '20', (isset($products_short_description[$languages[$i]['id']]) ? stripslashes($products_short_description[$languages[$i]['id']]) : $products_desc_fields['products_short_description'])); ?>
          </div>
          <div valign="top" class="main" style="padding: 3px; line-height:20px;">
            <b><?php echo $lng_image . '&nbsp;' . TEXT_PRODUCTS_ORDER_DESCRIPTION; ?></b><br />
            <?php echo xtc_draw_textarea_field('products_order_description[' . $languages[$i]['id'] . ']', 'soft', '103', '10', (isset($products_order_description[$languages[$i]['id']]) ? stripslashes($products_order_description[$languages[$i]['id']]) : $products_desc_fields['products_order_description']), 'style="width:100%; height:50px;"'); ?>
          </div>


Füge an:

          
          <!-- products_extrafield_lang -->
          <div class="main" style="padding: 3px; line-height:20px;">
            <?php echo $lng_image ?>&nbsp;<b><?php echo TEXT_PRODUCTS_REVIEW_TITLE; ?>&nbsp;</b><?php echo xtc_draw_input_field('products_review_title[' . $languages[$i]['id'] . ']', (($products_review_title[$languages[$i]['id']]) ? stripslashes($products_review_title[$languages[$i]['id']]) : $products_desc_fields['products_review_title']),'style="width:80%" maxlength="255"'); ?>
          </div>
          <div valign="top" class="main" style="padding: 3px; line-height:20px;">
            <b><?php echo $lng_image . '&nbsp;' . TEXT_PRODUCTS_REVIEW_TEXT; ?></b><br />
            <?php echo xtc_draw_textarea_field('products_review_text[' . $languages[$i]['id'] . ']', 'soft', '103', '10', (isset($products_review_text[$languages[$i]['id']]) ? stripslashes($products_review_text[$languages[$i]['id']]) : $products_desc_fields['products_review_text']), 'style="width:100%; height:250px;"'); ?>
          </div>



Datei admin/includes/classes/categories.php

Finde (oben):

  define('ADD_PRODUCTS_DESCRIPTION_FIELDS','products_order_description'); //products_order_description

Ergänze zu:

  define('ADD_PRODUCTS_DESCRIPTION_FIELDS','products_order_description, products_review_title, products_review_text'); //products_order_description


Die neuen Eingabefelder erscheinen ab nun:

New datefields lang106 1.png


Frontend[Bearbeiten]

Die neuen Datenfelder sollen auf der Artikeldetailseite (products_info) platziert werden.


Nun die Platzhalter für den Templategenerator definieren.
Datei includes/modules/product_info.php

Finde:

  // products name
  $info_smarty->assign('PRODUCTS_NAME', $product->data['products_name']);

Füge an:

  // products_extrafields lang
  $info_smarty->assign('PRODUCTS_REVIEW_TITLE', $product->data['products_review_title']);
  $info_smarty->assign('PRODUCTS_REVIEW_TEXT', $product->data['products_review_text']);



Datei templates/xtc4/module/product_info/product_info_v1_tabs.html
Datei templates/xtc4/module/product_info/product_info_v1.html
Datei templates/xtc4/module/product_info/product_info_v1_accordion.html


Finde:

  {$PRODUCTS_DESCRIPTION}


Füge an:

  <br />
  <strong>{$PRODUCTS_REVIEW_TITLE}</strong><br />
  {$PRODUCTS_REVIEW_TEXT}

(Namenstexte und Sprachplatzhalter siehe Teil 1: Tutorial: Zusätzliche Datenfelder Artikel (modified shop 106))

New datefields lang106 2.png