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: zusätzliche kategoriefelder

    weskona

    • Neu im Forum
    • Beiträge: 5
    zusätzliche kategoriefelder
    am: 20. September 2012, 11:32:40
    hallo zusammen,

    ich versuche gerade anhand des tutorials https://www.modified-shop.org/wiki/Tutorial:_Zusätzliche_Datenfelder_Artikel die umsetzung für zusätzliche kategoriefelder.
    leider will es nicht ganz funktionieren. bekomme im admin bereich beim editieren der kategorie immer die fehlermeldung:

    Zitat
    Error: The TEXTAREA with id or name set to "categories_description[2]" was not found

    habe anstelle in der admin/includes/modules/new_product.php in der admin/includes/modules/new_category.php die anpassungen vorgenommen.

    Zitat
    <tr>
                <td class="main" width="184"><?php echo TEXT_EDIT_CATEGORIES_NAME; ?></td>
                <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_name($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
              </tr>

          <tr>
                <td class="main"><?php echo TEXT_EDIT_CATEGORIES_KW; ?></td>
                <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_kw[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_kw($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
              </tr>

            <tr><td colspan="2"><?php echo xtc_draw_separator('pixel_trans.gif', '1', '2'); ?></td></tr>
            <tr>
                <td class="main"><?php echo TEXT_EDIT_CATEGORIES_HEADING_TITLE; ?></td>
                <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_heading_title[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_heading_title($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
              </tr>

    leider setzt er mir hierbei den oben genannten fehler. hat vielleicht jemand einen rat an was ich scheiter? wäre sehr dankbar über einen lösungsvorschlag.

    mfg

    Linkback: https://www.modified-shop.org/forum/index.php?topic=22381.0
    Managed Server

    weskona

    • Neu im Forum
    • Beiträge: 5
    Re: zusätzliche kategoriefelder
    Antwort #1 am: 20. September 2012, 17:06:38
    nach langem testen hab ich es jetzt soweit geschafft, das ich über das neue eingabefeld den eintrag in die datenbank machen kann. wird auch abgespeichert, aber beim erneuten editieren wird der eintrag nicht aus der datenbank gelesen. folge das feld wird leer angezeigt und beim speichern auch leer abgespeichert.

    Code: PHP  [Auswählen]
    <tr>
    <td class="main" width="184"><?php echo TEXT_EDIT_CATEGORIES_KW; ?></td>
    <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_kw[' . $languages[$i]['id'] . ']');?></td>
    </tr>
     

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: zusätzliche kategoriefelder
    Antwort #2 am: 20. September 2012, 18:14:41
    Schau' dir mal die Funktion an
    /inc/xtc_draw_input_field.inc.php
    Bei dir fehlt der Parameter für 'value' ...

    Überhaupt
    - ohne zu wissen was du da an neuen Feldern generiert hast und was da übertragen wird -
    sieht dein Konstrukt etwas seltsam aus
    Code: PHP  [Auswählen]
    xtc_draw_input_field('categories_kw[' . $languages[$i]['id'] . ']')

    Gruß,
    noRiddle

    weskona

    • Neu im Forum
    • Beiträge: 5
    Re: zusätzliche kategoriefelder
    Antwort #3 am: 21. September 2012, 08:55:55
    hi noriddle,

    was meinst du mit sieht seltsam aus? den code oder den tabellennamen?
    Zitat
    Schau' dir mal die Funktion an
    /inc/xtc_draw_input_field.inc.php
    Bei dir fehlt der Parameter für 'value' ...

    sorry, da hören meine nicht vorhandenen programmierkenntnisse auf. kannst du mir das bitte erklären?

    hab mal ein paar screensshots gemacht um das ganze mal bildlich zu machen:

    so habe ich die datenbank erweitert
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    so sollte die eingabemaske aussehen
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    damit ich im frontend eine solche ausgabe bekomme
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    und so sieht der fehler aus, wenn ich die codezeile
    Code: PHP  [Auswählen]
    <tr>
    <td class="main" width="184"><?php echo TEXT_EDIT_CATEGORIES_NAME; ?></td>
    <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_name($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
    </tr>
     

    an meine bedürfnisse anpasse zb so

    Code: PHP  [Auswählen]
    <tr>
    <td class="main"><?php echo TEXT_EDIT_CATEGORIES_HUBRAUM; ?></td>
    <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_hubraum[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_hubraum($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
    </tr>
     
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    verkürze ich die vorhandene codezeile auf
    Code: PHP  [Auswählen]
    <tr>
    <td class="main" width="184"><?php echo TEXT_EDIT_CATEGORIES_HUBRAUM; ?></td>
    <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_hubraum[' . $languages[$i]['id'] . ']');?></td>
    </tr>
     

    bleibt der fehler aus, aber es wird der eintrag aus der datenbank nicht gelesen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.984
    • Geschlecht:
    Re: zusätzliche kategoriefelder
    Antwort #4 am: 22. September 2012, 02:32:05
    Hast du dir die Funktion xtc_draw_input_field() mal angeschaut ?
    Oder anders:
    Schau mal in den Quellcode mit Firebug o.Ä., mit Sicherheit ist der value="" für das input-Feld leer.
    Das liegt daran, daß du keinen angegeben hast.

    Gruß,
    noRiddle

    weskona

    • Neu im Forum
    • Beiträge: 5
    Re: zusätzliche kategoriefelder
    Antwort #5 am: 25. September 2012, 16:01:51
    ja, value ist leer. diese funktion meinst du?

    Code: PHP  [Auswählen]
    function xtc_draw_input_field($name, $value = '', $parameters = '', $type = 'text', $reinsert_value = true)

    ist damit gleich zu setzen oder?

    Code: PHP  [Auswählen]
    function xtc_draw_input_field('categories_hubraum[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_hubraum($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"')

    fehler scheint ab hier zu liegen, aber wo und warum?
    Code: PHP  [Auswählen]
    , (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_hubraum($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"')

    Candacejones

    • Neu im Forum
    • Beiträge: 2
    Re: zusätzliche kategoriefelder
    Antwort #6 am: 05. Oktober 2012, 12:24:09
    spannender Beitrag. Das interessiert mich aber auch.

    weskona

    • Neu im Forum
    • Beiträge: 5
    Re: zusätzliche kategoriefelder
    Antwort #7 am: 11. Oktober 2012, 17:07:41
    Ich habe es endlich hinbekommen und versucht es mal in eine Anleitung zu formulieren. Hoffe es ist recht verständlich und fehlerfrei vor allem  :-)

    Zusätzliche Kategoriefelder anlegen

    1. Backup vom Shop machen
    2. Datenbank erweitern
    3. Backend anpassen

    1. Komplettes Backup vom Shop und der Datenbank machen.

    2. Die Datenbank um die zusätzlichen Felder erweitern.

    Hier im Beispiel ("_platzhalter" durch Eure Bezeichnung ersetzen und beliebig erweitern):

    ALTER TABLE `categories_description`
    ADD `categories_platzhalter` VARCHAR( 80 ) NOT NULL;

    3. Backend anpassen. Folgende Dateien müssen verändert werden:
       -lang/german/admin/categories.php
       -admin/includes/modules/new_category.php
       -admin/includes/classes/categories.php
       -includes/modules/default.php
       -admin/include/function/general.php

       lang/german/admin/categories.php

       unten einfügen:
      
    Code: PHP  [Auswählen]
    define('TEXT_EDIT_CATEGORIES_PLATZHALTER', 'Platzhalter:');

       admin/includes/modules/new_category.php

       unter
      
    Code: PHP  [Auswählen]
    $categories_name = $_POST['categories_name'];

       einfügen
      
    Code: PHP  [Auswählen]
    $categories_platzhalter = $_POST['categories_platzhalter'];

       unter
      
    Code: PHP  [Auswählen]
    <tr>
       <td class="main" width="184"><?php echo TEXT_EDIT_CATEGORIES_NAME; ?></td>
       <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_name($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
       </tr>

       einfügen
      
    Code: PHP  [Auswählen]
    <tr>
       <td class="main" width="184"><?php echo TEXT_EDIT_CATEGORIES_PLATZHALTER; ?></td>
       <td class="main"><?php echo xtc_image(DIR_WS_LANGUAGES.$languages[$i]['directory'].'/admin/images/'.$languages[$i]['image']) . '&nbsp;' . xtc_draw_input_field('categories_platzhalter[' . $languages[$i]['id'] . ']', (($categories_name[$languages[$i]['id']]) ? stripslashes($categories_name[$languages[$i]['id']]) : xtc_get_categories_platzhalter($cInfo->categories_id, $languages[$i]['id'])), 'style="width: 200px"'); ?></td>
       </tr>

       admin/includes/classes/categories.php

       unter
      
    Code: PHP  [Auswählen]
    $categories_name_array = $categories_data['name'];
                $sql_data_array = array (
                'categories_name' => xtc_db_prepare_input($categories_data['categories_name'][$lang['id']]),

       einfügen
      
    Code: PHP  [Auswählen]
    'categories_platzhalter' => xtc_db_prepare_input($categories_data['categories_platzhalter'][$lang['id']]),

       unter
      
    Code: PHP  [Auswählen]
    while ($cdcopy_values = xtc_db_fetch_array($cdcopy_query)) {
                    xtDBquery("INSERT INTO ".TABLE_CATEGORIES_DESCRIPTION." (categories_id,
                                                                     language_id,
                                                                     categories_name,

       einfügen
      
    Code: PHP  [Auswählen]
    categories_platzhalter,

       unter
      
    Code: PHP  [Auswählen]
    '".addslashes($cdcopy_values['categories_name'])."' ,

       einfügen
      
    Code: PHP  [Auswählen]
    '".addslashes($cdcopy_values['categories_platzhalter'])."' ,

       includes/modules/default.php

       unter
      
    Code: PHP  [Auswählen]
    $category_query = "-- /includes/modules/default.php
                         SELECT c.categories_image,
                                c.categories_template,
                                cd.categories_name,

       einfügen
      
    Code: PHP  [Auswählen]
    cd.categories_platzhalter,

       unter
      
    Code: PHP  [Auswählen]
    $categories_query = "-- /includes/modules/default.php
                             SELECT c.categories_id,
                                    c.categories_image,
                                    c.parent_id,
                                    cd.categories_name,

       einfügen
      
    Code: PHP  [Auswählen]
    cd.categories_platzhalter,

       unter
      
    Code: PHP  [Auswählen]
    $categories_content[] = array ('CATEGORIES_NAME' => $categories['categories_name'],

       einfügen
      
    Code: PHP  [Auswählen]
    'CATEGORIES_PLATZHALTER' => $categories['categories_platzhalter'],

       unter
      
    Code: PHP  [Auswählen]
    $max_per_row = MAX_DISPLAY_CATEGORIES_PER_ROW;
       $width = $max_per_row ? intval(100 / $max_per_row).'%' : '';
       $default_smarty->assign('TR_COLS', $max_per_row);
       $default_smarty->assign('TD_WIDTH', $width);
       $default_smarty->assign('CATEGORIES_NAME', $category['categories_name']);

       einfügen
      
    Code: PHP  [Auswählen]
    $default_smarty->assign('CATEGORIES_PLATZHALTER', $category['categories_platzhalter']);

       admin/include/function/general.php

       unter
      
    Code: PHP  [Auswählen]
    /**
       * xtc_get_categories_heading_title()
       *
       * @param mixed $category_id
       * @param mixed $language_id
       * @return
       */

      function xtc_get_categories_heading_title($category_id, $language_id) {
        $category_query = xtc_db_query("select categories_heading_title from ".TABLE_CATEGORIES_DESCRIPTION." where categories_id = '".$category_id."' and language_id = '".$language_id."'");
        $category = xtc_db_fetch_array($category_query);
        return $category['categories_heading_title'];
      }

      einfügen
      
    Code: PHP  [Auswählen]
    /**
       * xtc_get_categories_platzhalter()
       *
       * @param mixed $category_id
       * @param mixed $language_id
       * @return
       */

      function xtc_get_categories_platzhalter($category_id, $language_id) {
        $category_query = xtc_db_query("select categories_platzhalter from ".TABLE_CATEGORIES_DESCRIPTION." where categories_id = '".$category_id."' and language_id = '".$language_id."'");
        $category = xtc_db_fetch_array($category_query);
        return $category['categories_platzhalter'];
      }
    Managed Server
    3 Antworten
    4493 Aufrufe
    06. März 2012, 13:52:56 von Alexander Almendinger
    0 Antworten
    1380 Aufrufe
    05. Januar 2018, 18:37:48 von hektograph
    24 Antworten
    5916 Aufrufe
    22. März 2021, 20:43:52 von xampp
    1 Antworten
    1518 Aufrufe
    06. Juni 2019, 15:46:49 von noRiddle (revilonetz)