Extra Felder (Zusatz Felder) für Artikel GX2_V2.1.x.x bis 2.3.x.x

Thema wurde von Cyrus (LeGong), 25. Juni 2015 erstellt.

  1. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    #1 Cyrus (LeGong), 25. Juni 2015
    Zuletzt bearbeitet: 25. Juni 2015
    Der Thread zu Extra Felder für Artikel Detailansicht und Artikel Listenansicht ist ziemlich unübersichtlich geworden. Daher hat man mich gefragt diese Themen wieder neu und verständlicher zu erfassen. Zugleich habe ich die Gelegenheit genutzt diese erweiterungen passend für die Versionsreihe 2.3.x.x zu machen.
    Besonderes Dankeschön an:
    Barbara, Marco (Gambio) und Avenger, die in der Entwicklung dieser Erweiterung aktiv sehr geholfen haben.

    Zusatz-Felder Für Artikeldetailseite

    Vorwort

    Zusatzfelder sollen den Kunden Informationen zur Verfügung stellen, die über das Standard Gambio nicht vorhanden sind. Zum Beispiel der Inhalt eine Flasche Olivenöl, oder eine Flasche Parfum. Die Zusatzfelder können je nach Gestaltung bildlich, tabellarisch oder anderes dargestellt werden. Hier 2 Darstellungsbeispiele:


    extra_felder_gambio_style.png


    oder bildlich Darstellung:

    extra_felder_bildlich.png

    Ob man die Extra-Felder braucht oder nicht und wie viele Extra-Felder benötigt sind, ist von den angebotenen Produkten abhängig. Daher bevor man diese Felder einsetzt, sollte man sich im Klaren sein ob man sie braucht und wenn ja wie viele Extra-Felder man braucht.


    Im Laufe der Zeit haben mehrere Personen an die notwendigen Änderungen gearbeitet um das Ganze so effektiv und Updatessicher wie möglich zu ermöglichen. Trotz aller Mühe, da sind Elemente in dem Shopware Gambio, die nicht Updatessicher veränderbar sind. Also, wenn man die Extra-Felder braucht, dann muss man auch bei jedem Update darauf achten, dass diese Änderungen nicht beim Update verloren gehen. Im Laufe der Anleitung werden wir es erwähnen, welche Dateien Updatessicher und welche Dateien NICHT Updatessicher sind.

    Anleitung für Gambio GX_2.1.x.x und GX_2.2.x.x Versionen:

    Hier wird Schritt für Schritt die Vorgehensweise beschrieben:

    1: Planen Sie im Voraus die Zusatz-Felder, die Sie für Ihre Produkte benötigen. Wenn Sie sich nicht ganz sicher sind, lesen Sie das Ganze einmal durch, das könnte bei der Entscheidung hilfreich sein.
    2: Wenn Sie die Möglichkeit haben, machen Sie sich erst eine Testumgebung und testen Sie es da bevor Sie es auf einen Live-Shop ausüben.
    3: Legen Sie immer erst eine Sicherung des Shop-Ordners an.
    4: Eine Sicherung der Shop-Datenbank ist auch genauso wichtig wie eine Sicherung des Shop-Ordners. Die Dateien im Shop-Ordner funktionieren ohne Shop-Datenbank nicht.
    Denken Sie daran, dass wir Ihnen kein Erfolg garantieren können und akzeptieren wir keine Haftung. Sie machen alles auf Ihr eigenes Risiko. Falls Sie keine oder wenig Ahnung von Programmieren haben, lassen Sie sich dieser Vorhaben von einem fachlich Kompetenter Person ausführen. Es gibt genug Personen im Forum, die das beruflich machen, und die auch wissen was sie machen. Es kostet nicht viel.
    5: Wie immer, Sie führen die Änderungen auf eigene Risiko aus.
    Jetzt zu dem eigentlichen Vorhaben:

    Datenbank erweitern:

    1: Die Tabelle „Produkte“ in der Datenbank muss um die Zahl der benötigten Felder erweitert werden, z.B. Sie brauchen 2 Extra-Felder, die jeweils durch maximal 30 Zeichen beschrieben sind.
    In der PHPMyAdmin Ihrer Webserver oder im Shop Adminbereich unter Toolbox à SQL
    folgende Anweisung ausführen:


    Code:
     [FONT=&quot]ALTER TABLE `products`[/FONT]
      [FONT=&quot]ADD `products_inhalt`VARCHAR(30) NOT NULL, [/FONT]
      [FONT=&quot]ADD `products_herkunft` VARCHAR(30) NOT NULL;[/FONT]
      
    ACHTUNG: Der letzte „ADD“ Anweisung endet mit ( ; ).
    Die Zahl in Klammern legt die Anzahl der Zeichen fest
    VARCHAR ( 30 ) = maximal 30 Zeichen. Man kann diese Zahl je nach seinem Bedarf bis 255 Zeichen eingeben.
    Die Begriffe „inhalt und herkunft“ müssen Sie mit dem Namen Ihrer Felder ersetzen.
    DIESE ÄNDERUNG IST UPDATESSICHER UND GILT FÜR ALLE GX2 VERSIONEN:

    Sprachdateien erweitern:


    2: Nun werden die Feldbezeichnungen in Sprachdateien eingetragen. Dazu kopieren Sie die Datei lang__german__admin__categories___php.lang.inc.php, die in dem Verzeichnis /Shop-Ordner/lang/german/sections/_samples/ liegt und speichern Sie sie in dem Verzeichnis /Shop-Ordner/lang/german/sections/. Also eine Verzeichnis-Ebene höher. Nun wird die Datei wie unten beschrieben geändert und nochmals gespeichert:

    Suchen Sie sich eine beliebige Stelle in der Mitte der Datei und fügen Sie den folgenden Code ein. Dabei müssen Sie aufpassen, dass Kommas oder andere PHP-Zeichen richtig eingesetzt werden nur der Code in ROT muss eingefügt werden:
    PHP:
     // BOF products_extrafield
      
    'TEXT_PRODUCTS_INHALT' => 'Inhalt:',
      
    'TEXT_PRODUCTS_HERKUNFT' => 'Herkunft:',
      
    // EOF products_extrafield

    Nun wiederholen Sie diesen Schritt für alle anderen Sprachen.
    DIESE ÄNDERUNG IST UPDATESSICHER

    3: Nun wird die Datei:
    /SHOP-Ordner/lang/german/sections/_samples/product_info.lang.inc.php kopiert und in dem Verzeichnis /SHOP-Ordner/lang/german/sections/ gespeichert. Die gespeicherte Datei wird wie folgt geändert, nur der Code in ROT muss eingefügt werden:
    PHP:
       // BOF products_extrafield
        
    'text_products_inhalt' => 'Inhalt:',
        
    'text_products_herkunft' => 'Herkunft:',
         
    // EOF products_extrafield
      
    Nun wiederholen Sie diesen Schritt für alle anderen Sprachen.
    DIESE ÄNDERUNG IST UPDATESSICHER


    Die Artikelbearbeitung im Adminbereich um die benötigten Felder erweitern:

    4: Nun wird die Datei /SHOP-ORDNER/ admin/includes/modules/new_product.php geändert. Am Bestens vor der Änderung speichert man die Datei unter ORIGINAL_new_product.php.
    Durch diese Änderung werden die Eingabe Felder für unsere Extra-Felder in der Maske Artikelbearbeiten eingefügt.
    In dieser Datei suchen Sie nach: (Bei mir ist es ca. Zeile 920)
    HTML:
     <td><?php echo $coo_text_mgr->get_text('label_availability') ?>:</td>
                                         <td>
                                                     <?php echo xtc_draw_pull_down_menu('google_export_availability_id', $t_google_export_availability_array, $pInfo->google_export_availability_id, 'style="width: 130px"'); ?>
                                                     <small><?php echo $coo_text_mgr->get_text('label_google_export_only') ?></small>
                                         </td>
                              </tr>
                              <?php } ?>
                  </table>
                  
                              </td>
                  </tr>
      </table>
      
    und fügen Sie danach:
    HTML:
     <!-- products_extrafield beginn -->
          
          <table bgcolor="#f3f3f3" style="border:1px solid;border-color:#cccccc;margin-top:10px;" width="100%"  border="0">
            <tr>
              <td>
                <table class="main" border="0" width="100%">
                  <tr>
                    <td style="font-size:14px;font-weight:bold;">Extra-Felder<br><br></td>
                  </tr>
                  <table class="main" bgcolor="#DEDEDE" border="0" width="100%" align="left">
                    <tr>
                      <td style="font-size:14px;font-weight:bold;color:#7A7A7A;">Allgemein<br><br></td>
                    </tr>
                    <tr>
                      <td><?php echo TEXT_PRODUCTS_INHALT; ?></td>
                      <td><?php echo  xtc_draw_input_field('products_inhalt', $pInfo->products_inhalt,'style="width: 125px"') ; ?></td>
                                       </tr>
                    <tr>
                      <td><?php echo TEXT_PRODUCTS_HERKUNFT; ?></td>
                      <td><?php echo  xtc_draw_input_field('products_herkunft', $pInfo->products_herkunft,'style="width: 125px"') ; ?></td>
                                       </tr>
                  </table>
                </table>
              </td>
            </tr>
          </table>
           
           <!-- products_extrafield end -->
      
    extra_felder_artikel_bearbeiten.png

    Jetzt wenn man die Seiten Cache und Modul Cache leeren würde musste man unter AdminbereichàArtikelàArtikel/KategorienàArtikel bearbeiten seine neue Felder bereits sehen können.
    DIESE ÄNDERUNG IST LEIDER NICHT UPDATESSICHER UND DAHER DIE BETROFFENE DATEI MUSS BEI JEDER UPDATE NACH EVENTUELLE ÄNDERUNGEN KONTROLLIERT UND ANGEPASST WERDEN.

    5: Damit die Daten, die man in Extra-Felder eingibt auch gespeichert werden muss man ein neues Verzeichnis und eine neue Datei erzeugen. (Also die Datei categories.php überladen). Öffnen Sie das Verzeichnis:
    /Shop-Ordner/user_classes/overloads
    und fügen Sie ein neues Verzeichnis Namens „categories“ ein. Der Name muss in kleine Buchstaben geschrieben sein.
    In diesem Verzeichnis fügen Sie eine PHP-Datei mit dem Namen:
    „extrafield_categories.inc.php
    ein. In dieser Datei fügen Sie den folgenden Code ein:
    PHP:
     <?php
       
      
    class extrafield_categories extends extrafield_categories_parent
      
    {
                  public function 
    insert_product($products_data$dest_category_id$action 'insert')
          {
              
    $products_id parent::insert_product($products_data$dest_category_id$action);
                              
                                  
    // BOF products_extrafields
                              
                                         
    $extra_data = array('products_inhalt' => xtc_db_input($products_data['products_inhalt']),
                                         
    'products_herkunft' => xtc_db_input($products_data['products_herkunft']));
                                         
                                         
    // EOF products_extrafields
                                         
                                         
    xtc_db_perform('products'$extra_data'update''products_id = \''.(int)$products_id.'\'');
              return 
    $products_id;
                  }
                  function 
    duplicate_product($src_products_id$dest_categories_id)
                  {
                              
    $new_products_id parent::duplicate_product($src_products_id$dest_categories_id);
                              
                              
    // BOF products_extrafields
                              
                              
    $copy_extra_data_query 
                  
    'UPDATE 
                      `products` p
                  LEFT JOIN 
                      `products` psrc ON psrc.products_id = \':src_products_id\'
                  SET 
                                                     `p`.`products_inhalt`= `psrc`.`products_inhalt`,
                                                     `p`.`products_herkunft`=`psrc`.`products_herkunft`                                               
                                         WHERE
                                                     `p`.`products_id` = \':new_products_id\'
                                                     '
    ;
                              
    // EOF products_extrafield
                              
                                         
    $copy_extra_data_query strtr($copy_extra_data_query
                  array(
                      
    ':src_products_id' => (int)$src_products_id,
                      
    ':new_products_id' => (int)$new_products_id,
                  )
              );
              
    xtc_db_query($copy_extra_data_query);
       
              return 
    $new_products_id;                                 
                                         
                  }
      }
      
    Jetzt werden die Daten auch gespeichert. Diese Datei ist Updatessicher.



    6: Damit die Felder auf der Artikeldetailseite angezeigt werden können, muss man ein neues Verzeichnis und eine neue Overload-Datei erzeugen. Öffnen Sie das Verzeichnis:
    /Shop-Ordner/user_classes/overloads und fügen Sie ein neues Verzeichnis Namens „ProductInfoContentView“ ein. Bitte achten Sie auf die genaue Schreibweise.
    In diesem Verzeichnis fügen Sie eine PHP-Datei mit dem Namen:
    „extrafield_ProductInfoContentView.inc.php
    ein. In dieser Datei fügen Sie den folgenden Code ein:
    PHP:
     <?php
       
      
    class extrafield_ProductInfoContentView extends extrafield_ProductInfoContentView_parent
       
    {
                  function 
    get_html($p_coo_product$p_current_category_id 0)
                  {
                              
    // BOF products_extrafield
                              
    $this->set_content_data('PRODUCTS_INHALT'$p_coo_product->data['products_inhalt']);
                              
    $this->set_content_data('PRODUCTS_HERKUNFT'$p_coo_product->data['products_herkunft']);
                              
    // EOF products_extrafield
                              
    return parent::get_html($p_coo_product$p_current_category_id);
                  }
       }
      
    ?>
      
    Jetzt werden die Daten auch für die Artikeldetailseite zur Verfügung stehen. Diese Datei ist bis Ende der Versionsreihe: GX2_v2.2.x.x Updatessicher.

    8: Damit die Daten auch im Shop sichtbar werden müssen wir noch die Datei:
    /Shop-Ordner/templates/EyeCandy/module/product_info/standart.html
    ergänzen.

    Kopieren Sie die Datei standard.html und benennen Sie um auf „standard-USERMOD.html“ Nun suchen Sie im umbenannte Datei nach:
    HTML:
     {if $SHIPPING_NAME || $SHOW_SHIPPING_TIME}
                                                                             <dt>{$txt.text_shippingtime}</dt>
                                                                             <dd class="shipping_time">{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} <span class="products_shipping_time_value">{$SHIPPING_NAME}</span></dd>
                                                                 {/if}
                                                                 {if $PRODUCTS_QUANTITY > 0 || $SHOW_PRODUCTS_QUANTITY}
                                                                             <dt>{$txt.text_stock}</dt>
                                                                             <dd class="products_quantity"><span class="products_quantity_value">{$PRODUCTS_QUANTITY}</span> {if $PRODUCTS_QUANTITY_UNIT}{$PRODUCTS_QUANTITY_UNIT}{else}{$txt.text_pieces}{/if}</dd>
      
    danach fügen Sie den folgenden Code ein:
    HTML:
     <!-- BOF Extra-Felder -->
       
      {if $PRODUCTS_INHALT || $SHOW_PRODUCTS_INHALT}
                                                                             <dt>{$txt.text_products_inhalt}</dt>
                                                                             <dd class="products_inhalt">{$PRODUCTS_INHALT}</dd>
                                                                 {/if}
                          {if $PRODUCTS_HERKUNFT || $SHOW_PRODUCTS_HERKUNFT}
                                                                             <dt>{$txt.text_products_herkunft}</dt>
                                                                             <dd class="products_herkunft">{$PRODUCTS_HERKUNFT}</dd>
                                                                 {/if}
       
      <!-- EOF Extra-Felder -->
      
    Damit werden die Extra-Felder wie im Bild 1 dargestellt.
    Die Darstellung von Extra-Felders nach Bild 2 ist etwas komplizierter da man das Design der Artikeldetailseite ändern muss um Platz für die bildliche Darstellung zu machen. Dazu schreibe ich hier nur den Code für die bildliche Darstellung der Extra-Felder. Die Änderung des Designs lasse ich sein, da es nicht zu diesem Thema gehört.

    Möchtet man die Extra-Felder wie im Bild 2 darstellen, dann muss man den folgenden Code eingeben:
    HTML:
     {if $PRODUCTS_INHALT || $SHOW_PRODUCTS_INHALT}
                                                                             <div class="ext_etik" style="background-image:url(images/extra04.png); background-size:contain; height: 40px; width:180px; line-height: 20px; font-weight: bold; margin-top: 0px"><div class="ext_etik_innen">
      <span> {$PRODUCTS_INHALT}</span></div></div>
                                                                 {/if}
                       
                       {if $PRODUCTS_HERKUNFT || $SHOW_PRODUCTS_HERKUNFT}
          <div class="ext_etik" style="background-image:url(images/extra04.png); background-size:contain; height: 40px; width:180px; line-height: 20px; font-weight: bold; margin-top: 0px"><div class="ext_etik_innen">
      <span> {$PRODUCTS_HERKUNFT}</span></div></div>
      {/if}
      
    Damit ist die Anleitung für Extra-Felder für Artikeldetailansicht vollbracht.

    Viel Erfolg
     

    Anhänge:

  2. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    #2 Cyrus (LeGong), 25. Juni 2015
    Zuletzt bearbeitet: 10. Januar 2016
    Nun werden die Extra Felder für den Artikellistenansicht erklärt:

    Zusatz-Felder Für Artikellistenansicht
    Für Artikellistenansicht müssen, falls noch nicht geschehen, die Schritte
    1: Datenbank erweitern
    2: Sprachdateien der Kategorie
    4: Artikelbearbeitung
    5: Overload für categories.php
    genommen werden.
    Nun die restlichen Schritte:
    7: In dem Ordner „user_classes/overloads/ einen Ordner Namens „product“ erstellen. (Auf die richtige schreibweise achten). In dem Ordner „product“ eine PHP-Datei mit dem Namen „cp_product.inc.php“ und den Inhalt:
    PHP:
    <?php

    class cp_product extends cp_product_parent
    {
        function 
    buildDataArray(&$array$image 'thumbnail')
        {
            global 
    $xtPrice$main;
            
            
    $t_data_array=parent::buildDataArray($array$image);
                    
            
    //Additional info in $t_data_array
            
    $t_data_array['PRODUCTS_INHALT']=$array['products_inhalt'];
            
    $t_data_array['PRODUCTS_HERKUNFT']=$array['products_herkunft'];
            
    //Additional info in $t_data_array

            
    return $t_data_array;
            
    // EOF GM_MOD
        
    }
    }
        
    ?>
    erstellen und speichern.
    DIESE OVERLOAD IST UPDATESSICHER
    8: In dem Ordner “user_classes/overloads/ einen neuen Ordner Namens “ProductListingContentControl“ erstellen. In diesem Ordner eine PHP-Datei mit dem folgenden Inhalt erstellen und als extrafeld_ProductListingContentControl.inc.php“ speichern:
    PHP:
    <?php

    class extrafeld_ProductListingContentControl extends extrafeld_ProductListingContentControl_parent
    {

      public function 
    getSelectFields()
      {
        
    $select_fields = array('p.products_inhalt',
                               
    'p.products_herkunft');

        return 
    $select_fields;
      }

     public function 
    extend_proceed($p_action)
       {
           
    $t_sql =  $this->sql_query;

           
    $select_fields implode(",",$this->getSelectFields());

           
    $t_sql str_replace('FROM',','.$select_fields.' FROM',$t_sql);

           
    $this->sql_query $t_sql;

           
    parent::extend_proceed($p_action);
       }
    }
    DIESE OVERLOAD IST UPDATESSICHER
    9: Nun die Sprachdatei wird angelegt:
    Die Datei „lang/german/sections/_samples/product_listing.lang.inc.php“ kopieren und in dem Ordner „lang/german/sections/“ (Also eine Verzeichnisebene höher) speichern. In der Mitte Dieser Datei folgenden Code einfügen und speichern:
    PHP:
    // products_extrafield
      
    'text_products_inhalt' => 'Inhalt:',
      
    'text_products_herkunft' => 'Herkunft:',
    //EOF products_extrafield
    Diesen Schritt für alle anderen Sprachen wiederholen.
    DIESE DATEI IST UPDATESSICHER
    10: Nun werden die Templates-Dateien angepasst:
    Die Datei „templates/EyeCandy/module/product_listing/product_listing_v1.html” kopieren und in demselben Ordner als product_listing_v1-USERMOD.html speichern.
    Nun in dieser Datei nach:
    HTML:
     {if $module_data.PRODUCTS_FSK18=='true'}<img src="{$tpl_path}img/fsk18.gif" alt="fsk18.gif" title="fsk18.gif" />{/if}
                                                                                    </div>
                                                                                    <div class="article-list-item-main">
                                                                                                    <h2>
                                                                                                                    <a href="{$module_data.PRODUCTS_LINK}" class="product_link"{if $module_data.PRODUCTS_META_DESCRIPTION != ''} title="{$module_data.PRODUCTS_META_DESCRIPTION|truncate:80:"..."|replace:'"':'&quot;'}"{/if}>{$module_data.PRODUCTS_NAME}</a>
                                                                                                    </h2>
                                                                                                    <p>{$module_data.PRODUCTS_SHORT_DESCRIPTION}<br />
      
    
    suchen und danach mit folgendem Code ergänzen:
    HTML:
    <!-- BOF products_extrafield -->
                            {if $module_data.PRODUCTS_INHALT || $module_data.SHOW_PRODUCTS_INHALT}
                                {$txt.text_products_inhalt}
                                {$module_data.PRODUCTS_INHALT}
                            {/if}<br />
                            {if $module_data.PRODUCTS_HERKUNFT || $module_data.SHOW_PRODUCTS_HERKUNFT}
                                {$txt.text_products_herkunft}
                                {$module_data.PRODUCTS_HERKUNFT}
                            {/if}<br />
    <!-- EOF products_extrafield -->
    
    extra_felder_listenansicht_2.png

    Das war der „default“ Ansicht.

    11: Nun wird die „Tiled“ Ansicht ergänzt:
    Die Datei „templates/EyeCandy/objects/product_box_list.html” kopieren und in demselben Ordner mit dem Namen “product_box_list-USERMOD.html” speichern.
    Diese Datei öffnen und nach folgenden Code suchen:

    HTML:
     {/if}
                                                                     </div>
                                                                     <div class="article-list-item-text">
                                                                                    <p class="title"><a href="{$module_data.PRODUCTS_LINK}"{if $module_data.PRODUCTS_META_DESCRIPTION != ''} title="{$module_data.PRODUCTS_META_DESCRIPTION|truncate:80:"..."|replace:'"':'&quot;'}"{/if}>{$module_data.PRODUCTS_NAME|truncate:$content_data.TRUNCATE_PRODUCTS_NAME:"..."}</a></p>
      
    und mit folgendem Code erweitern:
    HTML:
     <!-- BOF products_extrafield -->
                        {if $module_data.PRODUCTS_INHALT || $module_data.SHOW_PRODUCTS_INHALT}
                               {$txt.text_products_inhalt}
                               {$module_data.PRODUCTS_INHALT}
                        {/if}<br />
                        {if $module_data.PRODUCTS_HERKUNFT || $module_data.SHOW_PRODUCTS_HERKUNFT}
                               {$txt.text_products_herkunft}
                            {$module_data.PRODUCTS_HERKUNFT}
                        {/if}<br />
    <!-- EOF products_extrafield -->
    
    extra_felder_listenansicht.png
    Den Shop Cache und den Template-Cache leeren. Nun müssen die Extra Felder in Listenansicht sichtbar sein.
    Viel Erfolg
     
  3. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    #3 Cyrus (LeGong), 25. Juni 2015
    Zuletzt bearbeitet: 27. Juli 2015
    Nun die Änderungen für die Versionsreihe V2.3.x.x

    Zusatz-Felder Für Artikeldetailseite für GX2_2.3.x.x

    Für die Artikeldetailansicht müssen die Schritte
    1: Datenbank erweitern
    4: Artikelbearbeitung
    5: Overload für categories.php
    wie oben beschrieben genommen werden.
    Nun die weitere notwendige Änderungen

    Schritt 2 für v.2.3.x.x Sprachdateien erweitern:
    Die Datei "lang/german/original_sections/product/product_info.lang.inc.php" kopieren.
    In dem Ordner "lang/german/user_sections/" einen Ordner Namens "product" erstellen und die Datei "product_info.lang.inc.php" in diesem Ordner speichern. Nun erweitern Sie diese Datei mit folgendem Code, irgendwo in der Mitte:
    [PHP]
    // BOF products_extrafield
    'text_products_inhalt' => 'Inhalt:',
    'text_products_herkunft' => 'Herkunft:',
    // EOF products_extrafield
    [/PHP][FONT=&quot][FONT=&quot]Den selben Schritt für die andere Sprachdateien wiederholen.
    [/FONT][/FONT]
    Schritt 3 für v.2.3.x.x Sprachdateien der Kategorie erweitern:
    In dem Ordner "lang/german/user_sections/" einen Ordner Namens "admin" erstellen. In diesem Ordner einen Ordner Namens "product" erstellen. Die Datei "lang/german/original_sections/admin/product/categories.lang.inc.php" kopieren und in dem erstellte "product" Ordner speichern. Diese Datei irgendwo in der Mitte folgendermaßen erweitern:
    PHP:
    // BOF products_extrafield
        
    'TEXT_PRODUCTS_INHALT' => 'Inhalt:',
        
    'TEXT_PRODUCTS_HERKUNFT' => 'Herkunft:',
        
    // EOF products_extrafield
    Nun sind die Sprachdateien fertig.

    [FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][B]Schritt [FONT=&quot]6[/FONT] für v.2.3.x.x ProductInfoContentView [FONT=&quot]überladen:[/FONT][/B][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT]
    Damit die Felder auf der Artikeldetailseite angezeigt werden können, muss man ein neues Verzeichnis und eine neue Overload-Datei erzeugen. Öffnen Sie das Verzeichnis:
    /Shop-Ordner/user_classes/overloads und fügen Sie ein neues Verzeichnis Namens „ProductInfoContentView“ ein. Bitte achten Sie auf die genaue Schreibweise.
    In diesem Verzeichnis fügen Sie eine PHP-Datei mit dem Namen:
    „extrafield_ProductInfoContentView.inc.php
    ein. In dieser Datei fügen Sie den folgenden Code ein:
    PHP:
    <?php
    /* --------------------------------------------------------------
       extrafields_ProductsInfoContentView.inc.php 2015.06.24 Cyrus
       Micronix TCT
       info@micronix.de
       Released under the GNU General Public License (Version 2)
       [http://www.gnu.org/licenses/gpl-2.0.html]
       
       based on:
       main.php
       Gambio OHG
       http://www.gambio.de
       Copyright (c) 2008 Gambio OHG
       Released under the GNU General Public License (Version 2)
       [http://www.gnu.org/licenses/gpl-2.0.html]
       --------------------------------------------------------------


       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(Coding Standards); www.oscommerce.com
       (c) 2005 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: main.php 1286 2005-10-07 10:10:18Z mz $)

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/

     
    class extrafield_ProductInfoContentView extends extrafield_ProductInfoContentView_parent
     
    {
        function 
    _assignProductData()
        {
            
            
            
    $this->_assignExtrafields();
                    
            return 
    parent::_assignProductData();
        }
        
        
    // assign new fields called Inhalt and Herkunft
        
    public function _assignExtrafields()
        {
            
    $this->set_content_data('PRODUCTS_INHALT'$this->product->data['products_inhalt']);            
        
            
    $this->set_content_data('PRODUCTS_HERKUNFT'$this->product->data['products_herkunft']);        
        }
        
     }
        
        
    ?>
    [FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][FONT=&quot][B]Schritt [FONT=&quot]7[/FONT] für v.2.3.x.x standard[FONT=&quot].html[FONT=&quot] als USERMOD überladen[/FONT][/FONT][FONT=&quot]:[/FONT][/B][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT]
    Die Datei "templates/EyeCandy/module/product_info/standard.html" kopieren und als "standard-USERMOD.html" speicher. In dieser Datei nach folgenden Code suchen:
    HTML:
    {if $SHIPPING_NAME || $SHOW_SHIPPING_TIME}
                            <dt>{$txt.text_shippingtime}</dt>
                            <dd class="shipping_time">{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} <span class="products_shipping_time_value">{$SHIPPING_NAME}</span>{if $ABROAD_SHIPPING_INFO_LINK_ACTIVE} <a class="abroad_shipping_info_link lightbox_iframe" href="popup_content.php?coID={$smarty.const.SHIPPING_INFOS}&amp;lightbox_mode=1">({$txt.text_abroad_shipping_info})</a>{/if}</dd>
                        {/if}
                        {if $PRODUCTS_QUANTITY || $SHOW_PRODUCTS_QUANTITY}
                            <dt>{$txt.text_stock}</dt>
                            <dd class="products_quantity"><span class="products_quantity_value">{$PRODUCTS_QUANTITY}</span> {if $PRODUCTS_QUANTITY_UNIT}{$PRODUCTS_QUANTITY_UNIT}{else}{$txt.text_pieces}{/if}</dd>
                        {/if}
    
    und danach folgenden Code einfügen:
    HTML:
    <!-- BOF products_extrafield -->
                        {if $PRODUCTS_INHALT || $SHOW_PRODUCTS_INHALT}
                               <dt>{$txt.text_products_inhalt}</dt>
                               <dd class="products_quantity">{$PRODUCTS_INHALT}</dd>
                        {/if}
                        {if $PRODUCTS_HERKUNFT || $SHOW_PRODUCTS_HERKUNFT}
                               <dt>{$txt.text_products_herkunft}</dt>
                               <dd class="products_quantity">{$PRODUCTS_HERKUNFT}</dd>
                        {/if}
                        
                        <!-- EOF products_extrafield -->
    
    Nun Müssen im Adminbereich die Caches für Texte, seitenausgabe und Modulinformationen geleert werden.
    das war es.

    Viel Erfolg
     
  4. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    #4 Cyrus (LeGong), 25. Juni 2015
    Zuletzt bearbeitet: 25. Juni 2015
    Für den Artikellistenansicht in der Version 2.3.x.x müssen lediglich nur die Sprachdateien angepasst werden.
    Also in dem Ordner "lang/german/original_sections/product/" befindet sich die Datei "product_listing.lang.inc.php" Diese Datei kopieren und in dem Ordner "lang/german/user_sections/product" anlegen. Dann diese Datei in der Mitte mit folgendem Code ergänzen:
    PHP:
     // BOF products_extrafield
          
    'text_products_inhalt' => 'Inhalt:',
          
    'text_products_herkunft' => 'Herkunft:',
    // EOF products_extrafield
    Die Caches für Texte, Seitenausgabe und Modulinformation leeren.
    Das war es.
    Viel Erfolg
     
  5. MP Solution

    MP Solution Erfahrener Benutzer

    Registriert seit:
    2. Oktober 2013
    Beiträge:
    2.945
    Danke erhalten:
    456
    Danke vergeben:
    93
    Hallo Cyrus,

    ich habe mal dieses schicke Modell bei mir Testhalber eingebaut. Alles soweit in Ordnung... bis auf eine Kleinigkeit.
    PHP:
    USER ERROR(256): "SQL Error"
    Fehlerlog:
    PHP:
    inc/xtc_db_error.inc.php:24 (Details)
        
    Code:
    │    line 22:     $coo_logger LogControl::get_instance(); │    line 23:     $coo_logger->notice($p_error'error_handler''errors''notice''SQL ERROR'$p_errno'Query:' "\r\n" trim($p_query)); ├─    line 24:     trigger_error('SQL Error'E_USER_ERROR); │    line 25: }
    [
    PHP]inc/xtc_db_query.inc.php:77 (Details)
        
    Code:
    │    line 75:         # ALL OTHER RUN MODES │    line 76:         # execute query ├─    line 77:         $result = mysql_query($p_query, $$link) or xtc_db_error($p_query, mysql_errno(), mysql_error());         │    line 78:     } │    line 79:     
    [PHP]inc/xtc_db_perform.inc.php:147 (Details)
        
    Code:
    │    line 145:     if(empty($t_sql) == false│    line 146:     { ├─    line 147:         $t_result xtc_db_query($t_sql$p_link); │    line 148:     }     │    line 149:     
    [
    PHP]admin/includes/classes/categories.php:2481 (Details)
        
    Code:
    │    line 2479:     function wrapped_db_perform($p_called_from$p_table$p_data_array = array(), $p_action 'insert'$p_parameters ''$p_link 'db_link'$p_quoted_values true│    line 2480:     { ├─    line 2481:         return xtc_db_perform($p_table$p_data_array$p_action$p_parameters$p_link$p_quoted_values); │    line 2482:     } │    line 2483
    [
    PHP]admin/includes/classes/categories.php:1234 (Details)
        
    Code:
    │    line 1232:         { │    line 1233:             $sql_data_array['products_last_modified'] = 'now()'├─    line 1234:             $this->wrapped_db_perform(__FUNCTION__TABLE_PRODUCTS$sql_data_array'update''products_id = \'' . (int)$products_id '\''); │    line 1235:  │    line 1236:             // manage teaser slider for product
    [PHP]user_classes/overloads/categories/extrafield_categories.inc.php:(Details)
        
    Code:
    │    line 5:               public function insert_product($products_data$dest_category_id$action 'insert'│    line 6:       { ├─    line 7:           $products_id parent::insert_product($products_data$dest_category_id$action); │    line 8:                            │    line 9:                               // BOF products_extrafields
    [PHP]admin/categories.php:181 (Details)
        
    Code:
    │    line 179:             if($_SESSION['coo_page_token']->is_valid($_POST['page_token'])) │    line 180:             { ├─    line 181:                 $t_products_id $catfunc->insert_product($_POST'''update'); │    line 182:             } │    line 183:             break;

    Nach mehmaliger Durchsicht habe ich wohl einen Denkfehler oder in der [COLOR=darkred]extrafield_categories.inc.php[/COLORfehlt etwas.
     
  6. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Hallo MP Solution,
    an welche Version hast du es getestet?
     
  7. MP Solution

    MP Solution Erfahrener Benutzer

    Registriert seit:
    2. Oktober 2013
    Beiträge:
    2.945
    Danke erhalten:
    456
    Danke vergeben:
    93
    Oh Sorry...Version 2.2.1.3
     
  8. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Ich benutze diese auch in der Version 2.2.1.3. Ich habe 20 extra Felder. Hier die Dateien. bei mir kommt es zu keiner Fehlermeldung. Vieleicht ist da ein Tippfehler irgendwo eingeschlichen.

    Probiere mal die beigefügte Dateien.
     

    Anhänge:

  9. MP Solution

    MP Solution Erfahrener Benutzer

    Registriert seit:
    2. Oktober 2013
    Beiträge:
    2.945
    Danke erhalten:
    456
    Danke vergeben:
    93
    Danke Dir Cyrus,

    hattest Recht, habe einen Tippfehler gemacht in der Feldbeschreibung. Etwas langsamer getippelt und es war alles schick.:cool:

    Och...und nun auch das Modul von Dir...:rolleyes:
     
  10. ammann-world

    ammann-world Aktives Mitglied

    Registriert seit:
    24. Januar 2015
    Beiträge:
    31
    Danke erhalten:
    0
    Danke vergeben:
    6
    #10 ammann-world, 26. Juni 2015
    Zuletzt bearbeitet: 26. Juni 2015
    Hallo Cyrus


    Habe nun zusätzlich noch Zusatz-Felder Für Artikellistenansicht eingebaut, alles soweit ok nur kann ich mich auf der Seite nicht mehr einloggen und auch die Menus gehen nicht mehr auf. Komme also nicht mehr in den Admin Bereich.


    Es kommt noch schlimmer, man kann auch keinen neuen Account mehr anlegen. Es gibt auch keine Fehlermeldung, einfach nichts.


    Und noch mehr, auch der Warenkorb funktioniert nicht mehr, kann keine Artikel mehr in den Warenkorb legen.



    An was kann dies liegen?
     
  11. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo ammann-world,

    Cyrus hat hier die Anleitungen für 2 Shopversionen gepostet. Welche Shopversion nutzt Du?
    Hast Du die richtige Anleitung genommen?
    Cache geleert?
     
  12. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    An user_classes/overloads/product/cp_product.inc.php, würde ich sagen, Zeile 22. Da ist eine Ausgabe, die da nicht hingehört, und dadurch geht dein Javascript kaputt.
     
  13. ammann-world

    ammann-world Aktives Mitglied

    Registriert seit:
    24. Januar 2015
    Beiträge:
    31
    Danke erhalten:
    0
    Danke vergeben:
    6
    Hallo Barbara


    Ich verwende die Gambio Version: v2.1.4.1 und die Extrafelder funktionieren auch, jedoch funktioniert diverses andere nicht mehr. Cache wurde geleert.


    - Kann mich nicht mehr einloggen, sprich ich komme schon gar nicht mehr in den Adminbereich
    - Sämtliche Menus klappen beim rüberfahren nicht mehr auf
    - Beim klicken auf den Warenkorb, keine Reaktion
    - Artikel können nicht mehr in den Warenkorb gelegt werden


    Seltsam ist auch das keinerlei Fehlermeldungen angezeigt werden, z.B. beim klicken auf "Anmelden" passiert einfach nichts.


    Hier mal meine Shop-Adresse www.ammann-world.ch .


    Das wichtigste wäre mal das ich wieder in den Admin-Bereich komme, bin für jede Hilfe mehr als dankbar.


    Gruss Marcel
     
  14. ammann-world

    ammann-world Aktives Mitglied

    Registriert seit:
    24. Januar 2015
    Beiträge:
    31
    Danke erhalten:
    0
    Danke vergeben:
    6
    #14 ammann-world, 26. Juni 2015
    Zuletzt bearbeitet: 26. Juni 2015
    Hallo Marco


    Bei der user_classes/overloads/product/cp_product.inc.php in der Zeile 22 steht bei mir ?>


    Was ist daran falsch?


    Gruss Marcel
     
  15. MP Solution

    MP Solution Erfahrener Benutzer

    Registriert seit:
    2. Oktober 2013
    Beiträge:
    2.945
    Danke erhalten:
    456
    Danke vergeben:
    93
    @Cyrus

    standard-USERMOD.html BOF MX QUANTITY Check

    nachdem diese aus der Usermod entfernt wurde, läuft alles wie es soll. Sollte der BOF MX QUANTITY Check beibehalten werden, verschwindet der Warenkorb Button und es wird Sold angezeigt.
     
  16. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    @MP Solution,
    da könntest du recht haben. Das kommt daher, dass ich dir die dateien geschickt habe, die auch für eine andere Erweiterung geschrieben worden sind. BOF MX QUANTITY Check braucht sonst die folgende Dateien.
     

    Anhänge:

  17. MP Solution

    MP Solution Erfahrener Benutzer

    Registriert seit:
    2. Oktober 2013
    Beiträge:
    2.945
    Danke erhalten:
    456
    Danke vergeben:
    93
    @Cyrus
    Ist das ein wichtiger Bestandteil der Notwendig ist? Überlege gerade ob ich dies noch mit hinein nehmen sollte.
     
  18. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Hallo Marco,
    welche Ausgabe sollte es dann sein?
    An Zeile 22 der beschreibung oben steht gar kein Code. Die Datei endet bei Zeile 21. Und an Zeile 22 der Datei als ZIP für MP Solution, da steht:
    PHP:
        $t_data_array['PRODUCTS_MATURITY']=$array['products_maturity'];
    hast du eventuell eine andere Datei gemeint?

    @ ammann World
    Was hast du genau ausgeführt? Ich habe diese Dateien schon seit längere Zeit im Live Shops sowohl wie im Test Shops. Komplett ohne Fehlermeldung.
     
  19. ammann-world

    ammann-world Aktives Mitglied

    Registriert seit:
    24. Januar 2015
    Beiträge:
    31
    Danke erhalten:
    0
    Danke vergeben:
    6
    @Cyrus
    Habe jetzt die Erweiterung für Artikellistenansicht wieder rückgängig gemacht und jetzt funktioniert wieder alles. Also wie bereits Marco erwähnt hat, muss es noch einen Fehler enthalten welcher das Javascript lahm legt, ich finde aber nicht an was dies liegen kann. Es wurde in der Artikelansicht auch alles wie gewünscht angezeigt.


    Hast Du eine Idee?
     
  20. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Hallo MP Solution,
    Ich weiß nicht ob du diese Funktion brauchst oder nicht? Das musst du wissen. Wenn man es nicht braucht, dann muss man das Teil für die Funktion Soldout auskommentieren. Eine Beschreibung der Funktion liegt doch in der ZIP-Datei.