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: Year Make Model Fahrzeug-Filter von OSC nach XTC konvertieren

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Naja, ruhig bleiben.
    Die Box müsste ja schonmal da sein.
    Mach doch mal eine Testausgabe in der HTML-Datei der BOX à la
    Code: XML  [Auswählen]
    <div>
    <p style="font-size:18px">TEST</p>
    </div>

    P.S. vom "Meister" bin ich weit entfernt ;-)

    Das funktioniert ja auch, ich bin nach dieser Wiki-Anleitung https://www.modified-shop.org/wiki/Tutorial:_Erstellung_Box vorgegangen, alles wunderbar.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Nimm vielleicht mal die manufacturers.php in source als Vorbild, da sind auch die nötigen Funktionen bereits includet.
    Du mußt doch nur das $info_box_contents array in ein Smarty speichern, die Funktionen hast du ja, wie gesagt bereits angepasst.

    Gruß,
    noRiddle

    digiti09

    • Neu im Forum
    • Beiträge: 22
    ... das $info_box_contents array in ein Smarty speichern, ...

    Ich glaub meine Hirnmasse reicht dafür nicht mehr aus...

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Och nööö,
    ich will mich aber gerade nich' mit deinem Code beschäftigen, den ich auch nicht raffe ohne intensivere Beschäftigung damit, da ich die Erweiterung nicht kenne.

    Geht das denn nicht so ?
    Code: PHP  [Auswählen]
     if ($box_content != '')
          $box_smarty->assign('BOX_CONTENT', $info_box_contents);
      }

    Nach Vorbild der manufacturers.php wo halt statt dem hier
    Code: PHP  [Auswählen]
    $manufacturers_query = "select distinct m.manufacturers_id, m.manufacturers_name from ".TABLE_MANUFACTURERS." as m, ".TABLE_PRODUCTS." as p where m.manufacturers_id=p.manufacturers_id order by m.manufacturers_name";
        $manufacturers_query = xtDBquery($manufacturers_query);
        if (xtc_db_num_rows($manufacturers_query, true) <= MAX_DISPLAY_MANUFACTURERS_IN_A_LIST) {
          // Display a list
          $manufacturers_list = '';
          while ($manufacturers = xtc_db_fetch_array($manufacturers_query, true)) {
            $manufacturers_name = ((strlen($manufacturers['manufacturers_name']) > MAX_DISPLAY_MANUFACTURER_NAME_LEN) ? substr($manufacturers['manufacturers_name'], 0, MAX_DISPLAY_MANUFACTURER_NAME_LEN).'..' : $manufacturers['manufacturers_name']);
            if (isset ($_GET['manufacturers_id']) && ($_GET['manufacturers_id'] == $manufacturers['manufacturers_id'])) {
              $manufacturers_name = '<strong>'.$manufacturers_name.'</strong>';
            }
            $manufacturers_list .= '<a href="'.xtc_href_link(DIR_WS_CATALOG . FILENAME_DEFAULT, 'manufacturers_id='.$manufacturers['manufacturers_id']).'">'.$manufacturers_name.'</a><br />'; //DokuMan - 2010-09-30 - added DIR_WS_CATALOG for manufacturer_dropdown to work properly
          }
          $box_content = $manufacturers_list;
        } else {
          // Display a drop-down
          $manufacturers_array = array ();
          if (MAX_MANUFACTURERS_LIST < 2) {
            $manufacturers_array[] = array ('id' => '', 'text' => PULL_DOWN_DEFAULT);
          }
          while ($manufacturers = xtc_db_fetch_array($manufacturers_query, true)) {
            $manufacturers_name = ((strlen($manufacturers['manufacturers_name']) > MAX_DISPLAY_MANUFACTURER_NAME_LEN) ? substr($manufacturers['manufacturers_name'], 0, MAX_DISPLAY_MANUFACTURER_NAME_LEN).'..' : $manufacturers['manufacturers_name']);
            $manufacturers_array[] = array ('id' => xtc_href_link(FILENAME_DEFAULT,xtc_manufacturer_link($manufacturers['manufacturers_id'],$manufacturers['manufacturers_name'])), 'text' => $manufacturers_name);
          }
          //BOF - h-h-h - 2011-05-16 - fix view selected manufacturers
          //$box_content = xtc_draw_form('manufacturers', xtc_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'get').xtc_draw_pull_down_menu('manufacturers_id', $manufacturers_array, isset($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : '', 'onchange="if (form.manufacturers_id.selectedIndex != 0) location = form.manufacturers_id.options[form.manufacturers_id.selectedIndex].value;" size="'.MAX_MANUFACTURERS_LIST.'" style="width: 100%;"').xtc_hide_session_id().'</form>';
          $box_content = xtc_draw_form('manufacturers', xtc_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'get').xtc_draw_pull_down_menu('manufacturers_id', $manufacturers_array, isset($_GET['manufacturers_id']) ? xtc_href_link(FILENAME_DEFAULT,xtc_manufacturer_link($_GET['manufacturers_id'], isset($_GET['manufacturers_name']) ? $_GET['manufacturers_name'] : '')) : '', 'onchange="if (form.manufacturers_id.selectedIndex != 0) location = form.manufacturers_id.options[form.manufacturers_id.selectedIndex].value;" size="'.MAX_MANUFACTURERS_LIST.'" style="width: 100%;"').xtc_hide_session_id().'</form>';
          //EOF - h-h-h - 2011-05-16 - fix view selected manufacturers
        }

    dein Code mit den angepassten Funtionen steht, darüber halt was da jetzt auch steht, nur angepasst auf den Namen deiner Box und darunter was ich gerade gepostet habe und der restliche Code eben auch angepasst auf deine Box
    (ohne das hier natürlich: new infoBox($info_box_contents); ).

    Ansonsten:
    Mach doch mal 'ne Support-Anfrage, das kann doch nich' so teuer sein und ist doch für einen der Entwickler der den Shop fast auswendig kennt kein Problem.
    Frag mal h-h-h oder web28.

    Gruß,
    noRiddle

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Das habe ich mittlerweile auch so versucht, leider erscheint nur die Box mit der Header-Überschrift und ohne Content/Inhalt, als ob da nichts drin steht.

    Ich werde mal web28 anschreiben, bei dem hab ich auch schon easypopulate bekommen.

    Danke bis hier hin.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Lösung würde mich auch mal interessieren, auch wenn ich das Ding nicht brauche,
    nur interessehalber, ob es doch einfach zu sehen war und ich nur zu blind war...

    Poste mal bitte die komplette PHP-Datei aus source, so wie du's probiert hast.

    Gruß,
    noRiddle

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Bitte schön....

    (Das Contrib ist dazu da, um z.B. die Artikel in den Kategorien nach dem jeweiligen - bei mir sinds Fahrzeuge - Suchbegriff einzugrenzen. Du wählst hier z.B. zuerst AUDI, danach A4 und dann das Baujahr. Dann erscheinen im Shop nur noch Artikel, die zu diesem Fahrzeug passen. Vorausgesetzt sind Einstellungen im Admin Bereich, die vorher bei jedem Artikel gemacht werden müssen....)

    Ich bin mir sicher, dass jeder 5. Shop das gebrauchen könnte, der folgendes verkauft:
    z.B. Tintenpatronen, Autoteile, Mode & Klamotten, Fahrradteile....

    Also lt. folgendem Code erscheint nur die Box mit Überschrift, Inhalt ist leer:

    Code: PHP  [Auswählen]
    <?php
      /* -----------------------------------------------------------------------------------------
       $Id: year_make_model.php 2081 2011-08-03 09:06:48Z

       modified eCommerce Shopsoftware - community made shopping
       http://www.modified eCommerce Shopsoftware.org

       Copyright (c) 2010 modified eCommerce Shopsoftware
       -----------------------------------------------------------------------------------------


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

      $box_smarty = new smarty;
      $box_content = '';

      $box_smarty->assign('language', $_SESSION['language']);
      // set cache ID
      if (!CacheCheck()) {
        $cache = false;
        $box_smarty->caching = 0;
      } else {
        $cache = true;
        $box_smarty->caching = 1;
        $box_smarty->cache_lifetime = CACHE_LIFETIME;
        $box_smarty->cache_modified_check = CACHE_CHECK;
        $cache_id = $_SESSION['language'];

      if (!$box_smarty->is_cached(CURRENT_TEMPLATE.'/boxes/box_year_make_model.html', $cache_id) || !$cache) {

        $box_smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
       
        // include needed funtions
        require_once (DIR_FS_INC.'xtc_hide_session_id.inc.php');
        require_once (DIR_FS_INC.'xtc_draw_form.inc.php');
        require_once (DIR_FS_INC.'xtc_draw_pull_down_menu.inc.php');

        $Make_Model_Year_query = "select distinct products_car_make, products_car_model, products_car_year_bof, products_car_year_eof from products_ymm where products_car_make != '' and  products_car_model != '' and products_car_year_bof !=0 and products_car_year_eof != 0 order by products_car_make, products_car_model, products_car_year_bof, products_car_year_eof";
        $Make_Model_Year_query = xtDBquery($Make_Model_Year_query);
           
            if ($number_of_rows = xtc_db_num_rows($Make_Model_Year_query)) {


    // Display a drop-down

            $Make_array[] = array('id' => 'all', 'text' => 'Choose Vehicle');
                    $Model_array[] = array('id' => 'all', 'text' => 'Choose Model');
                    $Year_array[] = array('id' => 0, 'text' => 'Choose Year');

       $javascript = '<script language="javascript" type="text/javascript">
    var a = new Array();
    var b = new Array();
    var c = new Array();'
    ;

            $y = array();
            $M_a = array();
            $products_car_make_old = '';
            $products_car_model_old = '';
            while ($Makes = xtc_db_fetch_array($Make_Model_Year_query)) {
                   
                            if (!isset($M_a [$Makes['products_car_make']]))
                                    $Make_array[] = array('id' => $Makes['products_car_make'], 'text' => $Makes['products_car_make']);

                                                   
                            if (!isset($M_a [$Makes['products_car_make']][$Makes['products_car_model']]) && count($y) > 0){
                                    $M_a [$products_car_make_old][$products_car_model_old]=$y;
                                    $y = array();
                            }
                           
                            if ($Makes['products_car_year_bof'] != 0 && $Makes['products_car_year_eof'] != 0){
                                    if ($Makes['products_car_year_bof']  == $Makes['products_car_year_eof']){
                                            $y [$Makes['products_car_year_bof']] = 1;
                                    } elseif ($Makes['products_car_year_bof']  < $Makes['products_car_year_eof']){ 
                                            while ($Makes['products_car_year_bof'] <= $Makes['products_car_year_eof']){
                                                    $y [$Makes['products_car_year_bof']] = 1;
                                                    $Makes['products_car_year_bof']++;
                                            }
                                    }
                            }
                            $products_car_make_old = $Makes['products_car_make'];
                            $products_car_model_old = $Makes['products_car_model'];
                            $M_a [$Makes['products_car_make']][$Makes['products_car_model']] = array();
            }

            $M_a [$products_car_make_old][$products_car_model_old]=$y;
                   

                   
            $i = 0;
            foreach ($M_a as $k =>$v){
                    $javascript .= 'a['.$i.']="'.$k.'";b['.$i.']=new Array(';
                            $ii = 0;
                            $s = '';
                            foreach ($M_a[$k] as $kk =>$vv){
                                    $javascript .= ($ii != 0 ? ',' : '').'"'.$kk.'"';
                                    $ss = '';
                                    $iii = 0;
                                    foreach ($M_a[$k][$kk] as $kkk => $vvv){
                                            $ss .= ($iii != 0 ? ',' : '').$kkk;
                                            $iii++;
                                    }
                                    if ($iii == 1)
                                            $ss = '"'.$ss.'"';
                                    $s .= 'c['.$i.']['.$ii.']=new Array('.$ss.');';
                                    $ii++; 
                            }
                    $javascript .= ');c['.$i.']=new Array();'.$s;  
                    $i++;  
            }      
           
          $javascript .= '
    function pop_model(){
           
            var o ="<select name=\"Model\" onChange=\"pop_year();\" style=\"width: 100%\"><option value=\"all\">Choose Model</option>";    
            var sv = document.make_model_year.Make.value;
            if(sv != "all"){
                    var v = a.length;
                    while(v--) if(sv == a[v]) break;
                    for(var i = 0; i < b[v].length; i++)
                      o+="<option value=\""+b[v][i]+"\">"+b[v][i]+"</option>";
            }
            o+="</select>";
            document.getElementById("model_select").innerHTML= o;
        document.getElementById("year_select").innerHTML= "<select name=\"Year\" style=\"width: 100%\"><option value=\"0\">Choose Year</option></select>";
    }
    function pop_year(){
           
            var o ="<select name=\"Year\" style=\"width: 100%\" onChange=\"document.make_model_year.submit();\"><option value=\"0\">Choose Year</option>";
            var sv = document.make_model_year.Make.value;
            if(sv != "all"){
                    var v = a.length;
                    while(v--) if(sv == a[v]) break;
                    var sv2 = document.make_model_year.Model.value;
                            if(sv2 != "all"){
                                    var v2 = b[v].length;
                                    while(v2--) if(sv2 == b[v][v2]) break; 
                                    for(var i = 0; i < c[v][v2].length; i++)
                                            o+="<option value=\""+c[v][v2][i]+"\">"+c[v][v2][i]+"</option>";
                            }
            }
            o+="</select>";
            document.getElementById("year_select").innerHTML= o;
    }
    </script>'
    ;

        if (isset($Make_selected_var) && isset($M_a[$Make_selected_var])){
          foreach ($M_a[$Make_selected_var] as $k => $v)
                    $Model_array[] = array('id' => $k, 'text' => $k);}
            if (isset($Make_selected_var) && isset($Model_selected_var) && isset($M_a[$Make_selected_var][$Model_selected_var]))
          foreach ($M_a[$Make_selected_var][$Model_selected_var] as $k => $v)
                    $Year_array[] = array('id' => $k, 'text' => $k);
                   
              $script = basename($_SERVER['SCRIPT_NAME']);
                           
                    if ($script == 'index.php' && (!isset($cPath)  || $cPath == '')){
                            if (defined('FILENAME_ALLPRODS_SEO') && ALL_PRODUCTS_SEO == 'true'){
                                    $script = FILENAME_ALLPRODS_SEO ;
                            } elseif (defined('ALL_PRODUCTS') && ALL_PRODUCTS == 'true'){
                                    $script = FILENAME_ALLPRODS ;  
                            }      
                    }
                           
           
                           
                           
              $hidden_get_variables = '';
              $keys = Array('Year','Make','Model',xtc_session_name(),'x','y');

            if ($script == 'product_info.php'){
                    if(isset($cPath)  || $cPath != ''){
                            $HTTP_GET_VARS['cPath'] = $cPath;
                            $link = 'index.php?cPath='.$cPath.'&Make=all&Model=all&Year=0';                
                    } else {
                            $link = 'index.php?Make=all&Model=all&Year=0';                 
                    }                              
                    $action = 'index.php';
                    $keys [] = 'products_id';      
            } elseif (SEO_ENABLED == 'true' && basename($PHP_SELF) != FILENAME_ADVANCED_SEARCH_RESULT){
                    $action = xtc_href_link($script, xtc_get_all_get_params(array('Make','Model','Year')), 'NONSSL', false);
                    $link = xtc_href_link($script, xtc_get_all_get_params(array('Make','Model','Year')).'Make=all&Model=all&Year=0', 'NONSSL', false);
                    $keys [] = 'cPath';
                    $keys [] = 'products_id';      
                    $keys [] = 'manufacturers_id';                 
            } else {
                    $action = $script;                     
                    $link = $script.'?'.xtc_get_all_get_params(array('Make','Model','Year')).'Make=all&Model=all&Year=0';                  
            }
                   
              reset($HTTP_GET_VARS);
              while (list($key, $value) = each($HTTP_GET_VARS)) {
                    if (!in_array($key,$keys))
                      $hidden_get_variables .= xtc_draw_hidden_field($key, $value);
              }            
                   
                   
           
            $box_content[] = array("text"  => $javascript);
            $box_content[] = array('form' => xtc_draw_form('make_model_year', $action, 'get'),
                                       'text' =>  xtc_draw_pull_down_menu('Make', $Make_array, (isset($Make_selected_var) ? $Make_selected_var : ''), 'onChange="pop_model();"  style="width: 100%"') .'<br><br>'.
                                                                        '<span id="model_select">'.xtc_draw_pull_down_menu('Model', $Model_array, (isset($Model_selected_var) ? $Model_selected_var : ''), 'onChange="pop_year();" style="width: 100%"') .'</span><br><br>'.
                                                                        '<span id="year_select">'.xtc_draw_pull_down_menu('Year', $Year_array, (isset($Year_selected_var) ? $Year_selected_var : ''), 'onChange="document.make_model_year.submit();" style="width: 100%"') .'</span><br><br>'.
                                                                            $hidden_get_variables . xtc_hide_session_id() .
                                                                            '<input type="submit" value="Go">&nbsp;&nbsp;&nbsp;<a href="'.$link.'">Clear Vehicle</a>');  

                            }
            }
        if ($box_content != '')
          $box_smarty->assign('BOX_CONTENT', $box_content);
      }
      // set cache ID
      if (!$cache) {
        $box_year_make_model = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_year_make_model.html');
      } else {
        $box_year_make_model = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_year_make_model.html', $cache_id);
      }
      $smarty->assign('box_YEAR_MAKE_MODEL', $box_year_make_model);
    ?>

    Nachtrag:
    Nicht, dass da Befehle stehen, die es nicht im XTC gibt sondern nur im OSC?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Habe mir das Teil jetzt mal runtergeladen um es mir anzuschauen.
    Ich sehe, daß man da einiges anpassen müsste.
    Allein schon in der install.xml sind 'zig Anpassungen notwendig.

    Wie hast du denn die Datenbankeinträge gemacht.
    Das Ding hat doch einen Autoinstaller und der kann ohne die genannten Anpassungen ja gar nicht funktioniert haben ?

    Da du mich überzeugt hast, daß das Teil ganz interessant für diverse Shops sein könnte, sehe ich mir das mal genauer an, beizeiten.

    Kann man sich das Teil mal irgendwo implementiert life ansehen ?

    Gruß,
    noRiddle

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Ich hab die Datenbankeinträge natürlich geändert, nicht alle Felder gibt es bei XTC, die es bei OSC gibt...

    Live hab ich es mal gehabt -> mit dem OSC Shop....

    Es funktioniert in etwa wie hier:
    http://www.autoteile-outletstore.de/tecdoc_kba_fahrzeugsuche.php

    Die install.xml habe natürlich manuell ausgeführt und erstmal den ADMIN Teil liegen gelassen, da dort mehr Arbeit drin steckt, also erstmal das Frontend aufbauen, um zu sehen, ob es überhaupt funktioniert...

    Habe die Tabelle products_ymm auch mit Daten gefüttert.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Aha, das ist doch ein modified eCommerce Shopsoftware-Shop.
    Schreib' den doch mal an, der hat's ja wohl angepasst an modified eCommerce Shopsoftware.
    Bis ich dazu komme mir das genauer anzuschauen...

    Gruß,
    noRiddle

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Aha, das ist doch ein modified eCommerce Shopsoftware-Shop.
    Schreib' den doch mal an, der hat's ja wohl angepasst an modified eCommerce Shopsoftware.
    Bis ich dazu komme mir das genauer anzuschauen...

    Gruß,
    noRiddle

    Das scheint aber ein anderes Contrib zu sein, aber schaden kanns ja nicht....

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Aha, das ist doch ein modified eCommerce Shopsoftware-Shop.
    Schreib' den doch mal an, der hat's ja wohl angepasst an modified eCommerce Shopsoftware.
    Bis ich dazu komme mir das genauer anzuschauen...

    Gruß,
    noRiddle

    Das scheint aber ein anderes Contrib zu sein, aber schaden kanns ja nicht....

    Habe gesehen, dass es sich nicht um ein Contrib handelt, sondern um eine Schnittstelle zu TECDOC.
    Bringt mir also nichts....

    web0null

    • Experte
    • Beiträge: 1.998
    Hi, digiti09.

    Das interessiert mich auch, kannst du mal alles in ein Zip packen was du schon geändert hast, damit ich das mal untersuchen kann. Wenn geht mit einer Einbauanleitung (falls du schon eine hast).

    Gruß web0null

    digiti09

    • Neu im Forum
    • Beiträge: 22
    Hi, digiti09.

    Das interessiert mich auch, kannst du mal alles in ein Zip packen was du schon geändert hast, damit ich das mal untersuchen kann. Wenn geht mit einer Einbauanleitung (falls du schon eine hast).

    Gruß web0null

    In den anderen Dateien ist immer nur eine Zeile geändert, das kann jeder, wäre jetzt hier zu aufwendig alles zu posten.

    Wenn ich diese Box hinkriegen würde, wäre das Frontend schonmal fertig, dann folgt das Backend insbesondere categories.php (wobei es bei OSC nur 1x categories.php gibt)

    Erst wenn ich komplett fertig bin stelle ich es mal hier rein. Ansonsten guck dir das Contrib doch von der OSC Seite mal an.

    1 Antworten
    3087 Aufrufe
    23. Februar 2014, 22:22:20 von dmun
    0 Antworten
    2358 Aufrufe
    31. Dezember 2014, 12:03:24 von manne35
    4 Antworten
    2848 Aufrufe
    25. Januar 2015, 14:57:44 von dertobinator
               
    anything