Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen

    karsta.de

    • Experte
    • Beiträge: 3.074
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #30 am: 19. Juli 2016, 14:55:06
    @Bonsai,
    Hää, habe ich was nicht mitbekommen, der Link den du hier angibst bezieht sich darauf Module bzw. Erweiterungen zu entwickeln, die dann über admin > Module > System installierbar wären.
    Neue Datenbankfelder zum Artikel anlegen über Module installieren???

    [...]
    Ich versuche den Wert Zustand (products_zustand) zu integrieren. [...]

    Im Übrigen hätte ich auch gerne mal dafür ein konkretes Beispiel und nicht immer einfach irgendwelche Links vor die Füße geworfen bekommen.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #31 am: 19. Juli 2016, 16:55:00
    Wenn ich mich richtig erinnere ging das Anlegen von Datenbankfeldern auch im Modul. Ich hatte da mal was für eine 2.0 gebastelt. Müsste ich nochmal raussuchen.

    Dass ich hier nur einen Link werfe und keine aussagekräftige Antwort schreibe liegt am Input:

    [...]
    Ich bin am verzweifeln.
    Ich versuche den Wert Zustand (products_zustand) zu integrieren. Optimal wäre es mit einem dropdown menu für die Werte "neu", "gebraucht" & "refurbished".

    Egal ob ich etwas versuche in new_product.php oder in add_db_fields.php zu ändern.
    Das Auswahlfeld wird mir einfach nie angezeigt.
    Kann mir hier jemand weiterhelfen. Es dürfte ja eigentlich nicht so schwer sein.
    [...]

    EVA Prinzip: Eingabe -> Verarbeitung -> Ausgabe.

    Wenn Eingabe Mist ist, also die Frage so formuliert ist, dass man eine  :glaskugel: braucht, klappt die Verarbeitung nicht wirklich und dann kann die Ausgabe auch nur Mist sein.

    Ich habe jetzt noch mal rumgesucht, es gibt da einen Ordner:
    admin/includes/extra/modules/add_db_fields/

    Schau Dir die Datei an:
    admin/includes/add_db_fields.php

    Da steht:
    Code: PHP  [Auswählen]
    //CUSTOM ADDS
    //autoload new product addons
    require_once(DIR_FS_INC.'auto_include.inc.php');
    foreach(auto_include(DIR_FS_ADMIN.'includes/extra/modules/add_db_fields/','php') as $file) require ($file);

    define('ADD_PRODUCTS_FIELDS', implode(',',$add_products_fields) );
     
    Was bedeutet, Du müsstest dem Array $add_products_fields die Namen der neuen Felder anhängen
    Neue Datei:
    /admin/includes/extra/modules/add_db_fields/00_my_fields.php
    Code: PHP  [Auswählen]
    <?php
    $add_products_fields[] = 'products_author';
    $add_products_fields[] = 'products_isbn';
    ?>
    Und schon versucht der Shop die 2 neuen Felder auszulesen

    Die Felder selbst sind manuell in der DB anzulegen, oder Du baust das mit ins Modul ein. Entweder als installierbares Modul, wie in meinem Link, oder als Abfrage .... Wenn DB Feld nicht existiert -> Anlegen
    Da das Modul im Backend läuft und nur aktiv wird, wenn Du Produkte bearbeitest, ist das für die Performance unerheblich, wenn jedes mal geprüft wird, ob das Feld da ist.

    Damit die Felder auch angezeigt werden, nimm den hookpiont in der new_product.php
    /admin/includes/extra/modules/new_product
    Da einfach eine php Datei reinlegen, die die Felder anzeigt. Das Funktioniert Analog zur Anleitung für die 1.06. Ich meine den Abschnitt:
    Code: PHP  [Auswählen]
          <!-- products_extrafield beginn -->
          <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); ?></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); ?></span></td>
          </tr>
          <!-- products_extrafield end -->

    Vergiss die Sprachkonstanten für die Beschriftung der Felder nicht! Die gehören in eine neue Datei in dem Ordner:
    /lang/german/extra/admin

    Der Rest ist dann Frontend, also andere Baustelle.

    Habe gerade keine 2.0er Installation am laufen, deshalb gibt es jetzt kein komplettes Beispiel mit Frontend. Und der Code hier ist nicht getestet! Error Reporting an, damit man eventuelle Tippfehler meinerseits sieht!!!

    Edit: Wenn das Feld im Backend an einer anderen Stelle gewünscht ist, einfach mit JQuery wegschieben. Das hatte ich hier mal erwähnt: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen

    karsta.de

    • Experte
    • Beiträge: 3.074
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #32 am: 19. Juli 2016, 17:25:31
    Danke Bonsai für die ausführliche Bescheibung. Jetzt habe ich endlich verstanden wie ich das mit den add_db_fields-Dateien machen muß. (mit dem Teil hatte ich bisher ne totale Blockade)

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #33 am: 21. Juli 2016, 15:19:25
    Ab Shopversion 2.0.0.0 rev 9678 ist das wesentlich einfacher geworden.
    Vor allem kann man das updatesicher realisieren.

    Beispiel anhand products_author und products_isbn

    Datenbank erweitern

    Die Datenbanktabelle products wird um 2 Text-Datenfelder erweitert.

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

    Mit phpmyadmin folgende SQL-Anweisung ausführen:

    Code: SQL  [Auswählen]
    ALTER TABLE `products`
    ADD `products_isbn` VARCHAR( 30 ) NOT NULL ,
    ADD `products_author` VARCHAR( 80 ) NOT NULL;

    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:

    Code: PHP  [Auswählen]
    <?php
    $add_products_fields[] = 'products_author';
    $add_products_fields[] = 'products_isbn';
    ?>

    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:

    Code: PHP  [Auswählen]
    <?php

    ?>

    <!-- 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>

    Autoloader Verzeichnis für die Sprachkonstanten:

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

    Hier jeweils neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:

    Code: PHP  [Auswählen]
    <?php
    define('TEXT_PRODUCTS_AUTHOR','Autor');
    define('TEXT_PRODUCTS_ISBN',  'ISBN');
    ?>

    Für jede weitere Sprache  entsprechend

    Autoloader Verzeichnis für Datenbank-Auslesefunktionen
    includes/extra/define_add_select/

    Hier neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:

    Code: PHP  [Auswählen]
    <?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;

    ?>

    Zugriff in Templates:

    product_info....html

    Code: XML  [Auswählen]
    {* 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

    Code: XML  [Auswählen]
    {* 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 setzten.
    Damit wird verhindert das man sich versehentlich Dateien überschreibt.
    Eine Datei in ein falsches Verzeichnis hochzuladen ist schnell passiert.

    Gruss Web28

    [EDIT Web28 22.07.2016: $smarty.const korrigiert.]
    [EDIT Tomcraft 08.08.2016: Anleitung in Wiki übernommen: Tutorial: Zusätzliche Datenfelder Artikel ab Shopversion 2.x]

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #34 am: 21. Juli 2016, 21:04:00
    Hallo web28,

    die Anleitung funktioniert super für neue Felder in der Produkt. Ich würde gerne auch ein neues Feld in der Produktbeschreibung hinter Produktname hinzufügen. Das geht wahrscheinlich auf änhlicher Weise oder?

    Mit freundlichen Grüssen
    Christina

    TrueSlide

    • Schreiberling
    • Beiträge: 397
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #35 am: 22. Juli 2016, 03:10:46
    Soweit klappt das bei mir auch alles. Fast alles ...
    Im Frontend werden bei mir zwar die Daten angezeigt, die ich im entsprechenden Feld im Backend eintrage (auch da wird alles richtig angezeigt etc.), allerdings wird davor lediglich ein ":" angezeigt.

    Eigentlich sollte da "Alterseinstufung" auftauchen (so wie im Backend), davon ist aber weit und breit nichts zu finden.  :-?

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #36 am: 22. Juli 2016, 11:30:44
    @TrueSlide:

    lang files für Front- und Backend sind 2 unterschiedliche.
    Zitat von: web28
    Autoloader Verzeichnis für die Sprachkonstanten:

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

    Hier jeweils neue PHP Datei (Dateiname beliebig) hochladen mit diesem Inhalt:

    @maidofkent:
    Ja, ist etwas komplizierter weil noch die Sprache dazukommt .... Eingabefelder und Tabelle ist mehrsprachig. Habe leider gerade keine Zeit das genauer zu erklären

    @web28: Vielen Dank fürs erweitern der Anleitung! Ein Wiki Eintrag wäre gut

    TrueSlide

    • Schreiberling
    • Beiträge: 397
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #37 am: 22. Juli 2016, 11:52:20
    @ Bonsai

    In beiden Ordnern habe ich die Dateien hinterlegt und sogar überprüft.
    Entweder war ich wirklich total dusselig, oder irgendwo anders hapert es.

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #38 am: 22. Juli 2016, 12:05:46
    @TrueSlide
    Welches Template nutzt Du? Und welche Smarty-Version? 2.x oder 3.x?

    Bei 2.x kann es notwendig sein die Sprach-Dateien nicht in german/extra/ zu speichern sondern nur in german/

    TrueSlide

    • Schreiberling
    • Beiträge: 397
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #39 am: 22. Juli 2016, 13:26:12
    Benutze das neue 2.0 Template.
    Smarty-Version? Gut Frage, glaube das ist schon eine 3.x Version  :-?

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #40 am: 22. Juli 2016, 13:39:20
    Die Smarty Version ist bei den Konstanten egal

    Man kann immer mit {$smarty.const.KONSTANTENNAMEN} darauf zugreifen. Groß/Kleinschreibung ist hier zu beachten, also genauso schreiben wie in den defines.

    Sehe gerade: Bei den $smarty.const fehlte das Wort TEXT_.
    Habe ich jetzt korrigiert.

    TrueSlide

    • Schreiberling
    • Beiträge: 397
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #41 am: 22. Juli 2016, 13:51:10
    Das wird es wohl gewesen sein ...
    Hätte ich auch selber drauf kommen können, zumal ich das zwischenzeitlich sogar im Blick hatte.  :oops:

    TrueSlide

    • Schreiberling
    • Beiträge: 397
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #42 am: 22. Juli 2016, 18:12:37
    So, jetzt hat alles geklappt.
    Allerdings ist bei der Anleitung wohl noch ein kleiner Fehler.
    Hier wurde 2 mal der Pfad admin/includes/extra/modules/add_db_fields/ angegeben. Ich behaupte mal, dass beim zweiten eher admin/includes/extra/modules/new_product/ stehen müsste.

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #43 am: 22. Juli 2016, 18:19:20
    Stimmt, habe ich jetzt korigiert.

    Gruss Web28

    ShopNix

    • Viel Schreiber
    • Beiträge: 1.208
    Re: Shopversion 2.0.0.0 - Neue Datenbankfelder anlegen
    Antwort #44 am: 23. Juli 2016, 21:43:11
    Ich lese nun schon eine Weile mit, aber hier muss ich nun wirklich eingreifen.

    Das Wort "korrigiert" enthält im Standard den Buchstaben "r" nicht zwei, sondern drei mal! ;)

    Davon abgesehen: Well done!

    Die Erweiterung der DB-Felder funktioniert auch für products_description wunderbar, sowohl im Front-, als auch im Backend. Für meinen Zweck ist allerdings der Autoloader an einer recht unpraktischen Stelle, so dass ich letztendlich doch wieder in den Sourcecode eingreifen musste. Eine Erleichterung ist es allemal.

    Man kann's eben, auch beim besten Willen, nicht allen recht machen.  :nixweiss:
    4 Antworten
    2087 Aufrufe
    23. April 2018, 17:32:07 von Onlineshopper
    4 Antworten
    3131 Aufrufe
    02. Februar 2013, 00:32:31 von TeeBlume
    2 Antworten
    1464 Aufrufe
    04. April 2017, 17:19:30 von maidofkent
    0 Antworten
    1375 Aufrufe
    18. Mai 2018, 12:27:25 von StefanGold
               
    anything