Neue Kategorie: Alternative zu "Artikel verlinken" durch Filter-Zuweisung?

Thema wurde von Anonymous, 4. Mai 2015 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Hallo,

    Ich möchte zusätzliche Kategorien in unserem Shop einbauen um die Navigation zu Produkten zu vereinfachen.

    Nach jetzigem Erkenntnisstand müsste ich alle derzeit verfügbaren, passenden Artikel in diese Kategorien verlinken.

    Nachteile: aufwendige Pflege , Fehleranfälligkeit, unvollständigkeit etc.


    Schön wäre eine Art "intelligente Kategorie". Dort sollen nur Eigenschaften zugewiesen werden. der Inhalt bzw die Anzahl der Artikel ergibt sich aus den verfügbaren Produkten mit diesen Eigenschaften im Sortiment.

    Geht das irgendwie?
     
  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Beispiel:

    1. anlegen einer neuen Kategorie "festkochende Kartoffeln".
    2. Zuweisung des filterwertes kartoffeltyp=festlochend

    Fertig

    (Eingabe einer kategoriebeschreibung und Zuweisung von weiteren fitersets ist selbstverständlich)
     
  3. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    Moin

    das lässt sich doch einwandfrei über die Filter machen, ähnlich wie bei mir:

    (Link nur für registrierte Nutzer sichtbar.)

    Ich habe zwar auch noch die KAT's passend dazu, habe aber alles mit Filtern für den Kunden übersichtlicher gemacht (hoffe ich jedenfalls :))
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Echt, das geht? Auch wenn die Kategorie an sich keine Produkte enthält?

    Dein Shop lässt sich übrigens mit meinem iPhone nicht öffnen: leere Seite!
     
  5. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Schon richtig, nur möchte er es mit einem Kategorie-Button haben.
    Finde es eine gute Idee - wenn auch die vorgeschlagene Kategorie-Bezeichnung mir Sorgen macht! :):)
     
  6. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    Hmm, bei mir alles gut, ebenfalls Iphone. Welchen Browser benutzt Du denn?
    P.S.: Die Filter kannst Du ja aber leider sowieso nur am PC sehen.........
     
  7. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    nur weil Ihr noch keine festlochenden im Sortiment Habt :)
     
  8. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    #8 Anonymous, 4. Mai 2015
    Zuletzt bearbeitet: 4. Mai 2015
    Ah, jetzt geht die Seite plötzlich. Vielleicht ein Funkloch im ICE :).

    Aber zurück zum Thema. Sind einige deiner Kamine über mehrere Kategorien erreichbar? Und: Sind die Artikel dorthin verlinkt worden oder ist das alles mit der Filter-Funktion möglich.

    Noch was anderes: Die Filterung funktioniert bei dir ohne auf "Go" zu klicken. Ist das eine individuelle Änderung oder Gambio-Standard? (Wir hatten mal eine Lösung von Avenger implementiert, die Funktioniert in 2.2 leider nicht mehr..)
     
  9. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    :).
    Ja, ich habe die Kamine in Kategorien (siehst Du unten oder im Megadropdown) und alle Artikel mit Filtern versehen.
    Wenn ich mir das machmal so bei Piwik anschaue, werden die Filter gut genutzt.
     
  10. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    das ist alles nicht mehr Standard; hatte früher aber auch den dynamischen Filter von Avenger eingebaut, habe ja noch 2.0.18..........
     
  11. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    #11 Anonymous, 21. Mai 2015
    Zuletzt bearbeitet: 21. Mai 2015
    Yiiiihha! Machbarkeits-Prototyp abgeschlossen. Einfach und updatesicher - jetzt fehlen noch Tests und Feinschliff.

    Worum gehts?
    Neue (leere) Kategorie anlegen, Eigenschaften bzw. Keywords zuweisen. FERTIG! Keine Verlinkung passender Produkte notwendig. Kategorie füllt und leert sich automatisch je nach Verfügbarkeit spezifischer vorhandener Produkte im Shop.

    Weitere Infos Folgen....
     
  12. Wohnlichtwelten

    Wohnlichtwelten Aktives Mitglied

    Registriert seit:
    15. Juni 2012
    Beiträge:
    30
    Danke erhalten:
    3
    Danke vergeben:
    8
    Hallo humpfle,

    ich wäre wirklich sehr dankbar für ein Update zu diesem Thema. Ich möchte das gerne genauso realisieren wie du beschrieben hast.

    Viele Grüße!
     
  13. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Das ganze funktioniert wie folgt

    1. In Verzeichnis overloads/ProductListingContentControl eine Datei "Intelligent_ProductContentContentControl.inc.php" anlegen:

    Inhalt:

    PHP:
    <?php
    /*
     * --------------------------------------------------------------
     * This overload is for sub categories with products
     * @author: FHumpfle
     * ------------------------------------------------------------------
     */
    class Intelligent_ProductListingContentControl extends Intelligent_ProductListingContentControl_parent {
        public function 
    extend_proceed($p_action) {
            
    parent::extend_proceed $p_action );
            
            
    // categories available
            
    if (isset ( $this->categories_id ) && xtc_not_null $this->categories_id )) {
                
    $START_TAG "[KEYWORDS]";
                
    $END_TAG "[/KEYWORDS]";
                
                
    // select categories description
                
    $select_cat_sql " SELECT categories_description FROM " TABLE_CATEGORIES_DESCRIPTION " WHERE categories_id = " $this->categories_id " AND language_id = 2";
                
    $t_result xtc_db_query $select_cat_sql );
                
                
    $category_result xtc_db_fetch_array $t_result );
                
    $categories_description $category_result ['categories_description'];
                
    // check for '[KEYWORDS]' String
                
    $pos strpos $categories_description$START_TAG );
                
                
    // only if found, handle special
                
    if ($pos !== false) {
                    
                    
    // extract keywords between start and end tag
                    
    $result_substring explode($START_TAG$categories_description);
                    if (isset ( 
    $result_substring[1] )) {
                        
    $result_substring explode ($END_TAG$result_substring[1] );
                        
    $article_list_by_keyword $result_substring[0];
                        
    $keywords split ","$article_list_by_keyword );
                        for(
    $i 0$i count $keywords ); $i ++) {
                            
    $additional_where .= "AND (pd.products_keywords LIKE '%$keywords[$i]%' OR pd.products_name LIKE '%$keywords[$i]%') ";
                        }
                        if (
    GROUP_CHECK == 'true') {
                            
    $group_check " AND p.group_permission_" $_SESSION ['customers_status'] ['customers_status_id'] . "=1 ";
                        }
                        if (
    $_SESSION ['customers_status'] ['customers_fsk18_display'] == '0') {
                            
    $fsk_lock ' AND p.products_fsk18!=1';
                        }
                        
                        
    $this->sql_query "
                        SELECT DISTINCT
                          p.products_fsk18,
                          p.products_shippingtime,
                          p.products_model,
                          pd.products_name,
                          p.products_ean,
                          p.products_price,
                          p.products_tax_class_id,
                          p.products_quantity,
                          p.products_image,
                          p.products_weight,
                          pd.products_short_description,
                          pd.gm_alt_text,
                          pd.products_description,
                          pd.products_meta_description,
                          p.products_id,
                          p.products_price,
                          p.products_vpe,
                          p.products_vpe_status,
                          p.products_vpe_value,
                          p.products_discount_allowed
                        FROM
                          "
    TABLE_PRODUCTS_DESCRIPTION " pd, " $p2c_table TABLE_PRODUCTS " p
                          LEFT JOIN " 
    TABLE_SPECIALS " s on p.products_id = s.products_id
                        WHERE
                          p.products_status = 1 AND
                          pd.products_id = p.products_id
                          " 
    $group_check "
                          " 
    $fsk_lock " AND
                          pd.language_id = " 
    . ( int ) $_SESSION ['languages_id'] . " " $additional_where "
                        "
    ;
                        if (
    $limit) {
                            
    $listing_sql .= "
                        LIMIT " 
    $limit;
                        }
                    }
                }
            }
        }
        
        function 
    get_between($content,$start,$end){
            
    $r explode($start$content);
            if (isset(
    $r[1])){
                
    $r explode($end$r[1]);
                return 
    $r[0];
            }
            return 
    '';
        }
    }

    ?>

    2. Caches leeren

    3. Eine beliebige Kategorie anlegen. In die Kategoriebeschreibung Keywords festlegen mittels
    [KEYWORDS]Key1, Key2[/KEYWORDS]

    Fertig
     
  14. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Filter für diese Kategorien werden aktuell noch nicht unterstützt. Nach den Keywords [KEYWORDS]Key1, Key2[/KEYWORDS] kann natürlich ein gewöhnlicher Kategorietext verfasst werden.
     
  15. Wohnlichtwelten

    Wohnlichtwelten Aktives Mitglied

    Registriert seit:
    15. Juni 2012
    Beiträge:
    30
    Danke erhalten:
    3
    Danke vergeben:
    8
    Hallo,
    gibt es hier vielleicht ein Update? Ist diese Art der "intelligenten" Produktzuweisungen mittlerweile villt. in einem der neusten Gambio Updates mit eingeflossen?
    Denkbar wäre doch eine einfache "Tag-Funktion" bei der man bestimmten Produkten ein oder mehrere Tags zuweisen kann, die dann in den jeweiligen Kategorien gelistet werden.

    @humpfle: wo genau finde ich das Verzeichnis: overloads/ProductListingContentControl ... oder muss ich das auch noch anlegen? Bei mir existiert nur \system\overloads\ und user_classes\overloads\ aber kein Ordner ProductListingContentControl. Gambio Version 2.2.0.0. Update ist aber schon geplant :)
     
  16. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Das Verzeichnis muss angelegt werden.
     
  17. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    anbei eine neue Version...
    PHP:
    <?php
    class Intelligent_ProductListingContentControl extends Intelligent_ProductListingContentControl_parent {
        public function 
    extend_proceed($p_action) {
            
    parent::extend_proceed $p_action );
          
            
    // categories available
            
    if (isset ( $this->categories_id ) && xtc_not_null $this->categories_id )) {
                
    $START_TAG "[KEYWORDS]";
                
    $START_TAG_OR "[KEYWORDS_OR]";
                
    $END_TAG "[/KEYWORDS]";
              
                
    // select categories description
                
    $select_cat_sql " SELECT categories_description FROM " TABLE_CATEGORIES_DESCRIPTION " WHERE categories_id = " $this->categories_id " AND language_id = 2";
                
    $t_result xtc_db_query $select_cat_sql );
              
                
    $category_result xtc_db_fetch_array $t_result );
                
    $categories_description $category_result ['categories_description'];
              
                
    // only if [KEYWORD] or [KEYWORD_OR] start tag is found, handle special
                
    if (strpos ($categories_description$START_TAG ) !== false) {
                    
    $additional_where $this->create_additional_where($categories_description$START_TAG$END_TAG"AND");
                } else if (
    strpos ($categories_description$START_TAG_OR ) !== false) {
                    
    $additional_where $this->create_additional_where($categories_description$START_TAG$END_TAG"OR");
                }
              
                if (isset(
    $additional_where)){
                    
    $stripped_sql explode ("ptc.categories_id"$this->sql_query);
                    if (isset(
    $stripped_sql[1]) == false){
                        
    $stripped_sql explode ("ci.categories_index"$this->sql_query);  
                    }
                    
    $this->sql_query $stripped_sql[0] . ' ' $additional_where;      
                }

            }
        }
      
      
        
    // CONDITION = AND / OR
        
    function create_additional_where($categories_description,$START_TAG,$END_TAG,$CONDITION){
            
    $additional_where '';
            
    // extract keywords between start and end tag
            
    $result_substring explode($START_TAG$categories_description);
            if (isset ( 
    $result_substring[1] )) {
                
    $result_substring explode ($END_TAG$result_substring[1] );
                
    $article_list_by_keyword $result_substring[0];
                
    $keywords split ","$article_list_by_keyword );
                for(
    $i 0$i count $keywords ); $i ++) {
                    
    // first must be AND, independently of given CONDITION
                    
    if ($i == 0){
                        
    $additional_where .= " ( (pd.products_keywords LIKE '%$keywords[$i]%' OR pd.products_name LIKE '%$keywords[$i]%') ";
                    } else {
                        
    $additional_where .= $CONDITION " (pd.products_keywords LIKE '%$keywords[$i]%' OR pd.products_name LIKE '%$keywords[$i]%') ";
                    }
                  
                    
    // last element
                    
    if ($i == count($keywords)-1){
                        
    $additional_where .= " ) ";
                    }
                }      
            }
          
            return 
    $additional_where;
        }
    }

    ?>
     
  18. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    988
    Danke erhalten:
    69
    Danke vergeben:
    128
    Leider ist die Filterfunktion bei uns damit nicht lauffähig. Filteroptionen werden nicht angezeigt... Weiss jemand woran das liegen kann? Gambio?