Tutorial: Zusätzliche Datenfelder Artikel ab Shopversion 2.x

Aus Wiki | modified eCommerce Shopsoftware
Zur Navigation springenZur Suche springen

Quelle: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen

Ab Shopversion 2.0.0.0 rev 9678 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

Datenbank erweitern[Bearbeiten]

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.

Autoloader Verzeichnis für die zusätzlichen Datenbank-Felder[Bearbeiten]

/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';
?>

Autoloader Verzeichnis für die Eingabefelder bei Artikel anlegen/bearbeiten[Bearbeiten]

admin/includes/extra/modules/new_product/ Hier neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:

<?php
//nothing
?>

<!-- products_extrafield beginn -->
<table class="tableInput border0">
  <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.

Autoloader Verzeichnis für die Sprachkonstanten[Bearbeiten]

(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');
?>

Autoloader Verzeichnis für Datenbank-Auslesefunktionen[Bearbeiten]

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;

?>

Template anpassen[Bearbeiten]

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.

           
anything