Programmierung & Softwareentwicklung für Modified-Shop*
*ehemaliger Projektname: xtcModified

Modified-Shop Version 2.0.0.0 - Neue Artikel-Datenbankfelder anlegen

Sie können uns mit den notwendigen Änderungen auch gerne beauftragen: Anfrage

Ab Shopversion 2.00 ist das Anlegen von neuen Artikel-Datenbankfeldern wesentlich einfacher geworden. Vor allem kann man das updatesicher realisieren.

Ein Beispiel anhand products_author und products_isbn

1. Datenbank erweitern

Die Datenbanktabelle products wird um 2 Text-Datenfelder erweitert.

products_isbn (varchar, 30 Zeichen) products_author (varchar, 80 Zeichen)

/admin/backups/

Hier neue SQL Datei (Dateiendung .sql, Dateiname beliebig) hochladen mit diesem Inhalt:
ALTER TABLE `products` ADD `products_isbn` VARCHAR( 30 ) NOT NULL, 
ADD `products_author` VARCHAR( 80 ) NOT NULL;

Anschließend im Backend beim Datenbankmanager diese Datei auswählen und den Wiederherstellungsvorgang ausführen. Danach die Datei löschen.

2. Autoloader Verzeichnis für die zusätzlichen DB Felder:

/admin/includes/extra/modules/add_db_fields/

Hier neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:
<?php
$add_products_fields[] = 'products_author'; 
$add_products_fields[] = 'products_isbn'; 
?>

3. Autoloader Verzeichnis für die Eingabefelder bei Artikel anlegen/bearbeiten:

admin/includes/extra/modules/new_product/

Hier neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:
<?php
//nothing
?>

<!-- products_extrafield beginn -->
<table>
      <tr>
        <td><span class="main"><?php echo TEXT_PRODUCTS_AUTHOR; ?></span></td>
        <td><span class="main"><?php echo  xtc_draw_input_field('products_author', $pInfo->products_author, 'style="width: 155px"'); ?></span></td>
      </tr>
      <tr>
        <td><span class="main"><?php echo TEXT_PRODUCTS_ISBN; ?></span></td>
        <td><span class="main"><?php echo  xtc_draw_input_field('products_isbn', $pInfo->products_isbn, 'style="width: 155px"'); ?></span></td>
      </tr>

</table>
<!-- products_extrafield end -->

<script>
/* Eingabefelder dynamisch verschieben */
/*$("[name='feldname_des_zu_verschiebenden_feldes']").closest("tr").detach().insertAfter($("[name='feldname_des_feldes_hinter_das_das_andere_soll']").closest("tr"));*/
$( document ).ready(function() {
  $("[name='products_author']").closest("tr").detach().insertAfter($("[name='products_ean']").closest("tr"));
  $("[name='products_isbn']").closest("tr").detach().insertAfter($("[name='products_author']").closest("tr"));
});
</script>

Hinweis: Das Verschieben der Eingabefelder per jQuery Script ist optional. Oft ist eine eigene Gruppierung der neuen Felder sinnvoller.

4. Autoloader Verzeichnis für die Sprachkonstanten:
(für jede weitere Sprache entsprechend)

/lang/german/extra/admin/ und
/lang/german/extra/

Hier neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:
<?php
define('TEXT_PRODUCTS_AUTHOR','Autor');
define('TEXT_PRODUCTS_ISBN',  'ISBN');
?>

5. Autoloader Verzeichnis für Datenbank-Auslesefunktionen:

includes/extra/define_add_select/

Hier neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:
<?php
$add_select_product[] = 'p.products_author';
$add_select_product[] = 'p.products_isbn';

$add_where_search = $add_select_product;

$add_select_default = $add_select_search = $add_select_cart = $add_select_product;

?>

6. Template anpassen:

product_info....html:
{* products_extrafields *}
      <p class="extrafields"><strong>{$smarty.const.TEXT_PRODUCTS_AUTHOR}: </strong>{$PRODUCTS_AUTHOR}</p>
      <p class="extrafields"><strong>{$smarty.const.TEXT_PRODUCTS_ISBN}: </strong>{$PRODUCTS_ISBN}</p>
product_listing....html:
{* products_extrafields *}
      <p class="extrafields"><strong>{$smarty.const.TEXT_PRODUCTS_AUTHOR}: </strong>{$module_data.PRODUCTS_AUTHOR}</p>
      <p class="extrafields"><strong>{$smarty.const.TEXT_PRODUCTS_ISBN}: </strong>{$module_data.PRODUCTS_ISBN}</p>

Fertig.

Die neuen Dateinamen sollte man sinnvoll benennen.
Es hat sich auch bewährt, in dem Dateinamen ein Kürzel des Verzeichnisses zu setzen.
Damit wird verhindert das man versehentlich Dateien überschreibt.
Eine Datei in ein falsches Verzeichnis hochzuladen ist schnell passiert.