Filter nur für bestimmte Kundengruppen einblenden

Thema wurde von MikeSpike, 30. Juni 2013 erstellt.

  1. MikeSpike

    MikeSpike Erfahrener Benutzer

    Registriert seit:
    27. November 2011
    Beiträge:
    302
    Danke erhalten:
    25
    Danke vergeben:
    91
    Hallo Leute,

    gibt es eine Möglichkeit den Filter nur für bestimmte Kundengruppen anzeigen zu lassen so wie bei den Warengruppen / Artikeln über Reiter anklickbar?
     
  2. 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
    Möglich ist alles! :)

    In der Datei: "..\templates\EyeCandy\source\boxes.php" findest Du u.a. auch dies:
    PHP:
    if($coo_template_control->get_menubox_status('filter')) include(DIR_WS_BOXES.'filter.php');
    Und da die KundenGruppe auch vorhanden ist..
    PHP:
     $_SESSION['customers_status']['customers_status_id'
    ... kann sich mit eine IF-Abfrage die KD-Gruppe raussuchen, die den Filter sieht.
     
  3. MikeSpike

    MikeSpike Erfahrener Benutzer

    Registriert seit:
    27. November 2011
    Beiträge:
    302
    Danke erhalten:
    25
    Danke vergeben:
    91
    #3 MikeSpike, 30. Juni 2013
    Zuletzt bearbeitet: 30. Juni 2013
    kommt das direkt die Zeile darunter (33)?

    PHP:
     $_SESSION['customers_status']['customers_status_id'
    Bei mir schreibt er:


    Parse error: syntax error, unexpected T_IF in /var/www/web67/html/led/templates/EyeCandy/source/boxes.php on line 33

    Muss ich die Kundengruppen irgendwo im php manuell eintragen oder sind die dann per Reiter im Filter auswählbar? Ich weiss für Dummys. Aber ich lerne...


    Das hier steht bei mir unter dem ersten PHP Block in Zeile 49.

    PHP:
    if($_SESSION['style_edit_mode'] == 'edit' || $_SESSION['customers_status']['customers_status_id'] === '0' && (int)$_SESSION['customer_id'] > 0) include(DIR_WS_BOXES.'admin.php');
    Hinweis: Ich ändere das mit dem Programm "notepad++"
     
  4. MikeSpike

    MikeSpike Erfahrener Benutzer

    Registriert seit:
    27. November 2011
    Beiträge:
    302
    Danke erhalten:
    25
    Danke vergeben:
    91
    #4 MikeSpike, 30. Juni 2013
    Zuletzt bearbeitet: 30. Juni 2013
    Das ist hier die ganze Original Datei:

    PHP:
    include(DIR_WS_BOXES.'top_menu.php');

    if(
    gm_get_conf('CAT_MENU_TOP') == 'true') include(DIR_WS_BOXES.'megadropdown.php');
    if(
    gm_get_conf('GM_QUICK_SEARCH') == 'true') include(DIR_WS_BOXES.'top_search.php');
    if(
    gm_get_conf('SHOW_FOOTER') != 'true'$smarty->assign('COPYRIGHT_FOOTER'gm_get_conf('GM_FOOTER'));

    # $coo_template_control created in application_top.php
    if($coo_template_control->get_menubox_status('categories')) include(DIR_WS_BOXES.'categories.php');
    if(
    $coo_template_control->get_menubox_status('content')) include(DIR_WS_BOXES.'content.php');
    if(
    $coo_template_control->get_menubox_status('filter')) include(DIR_WS_BOXES.'filter.php');
    if(
    $coo_template_control->get_menubox_status('gm_bookmarks')) include(DIR_WS_BOXES.'gm_bookmarks.php');
    if(
    $coo_template_control->get_menubox_status('gm_counter')) include(DIR_WS_BOXES.'gm_counter.php');
    if(
    $coo_template_control->get_menubox_status('gm_ebay')) include(DIR_WS_BOXES.'gm_ebay.php');
    if(
    $coo_template_control->get_menubox_status('gm_scroller')) include(DIR_WS_BOXES.'gm_scroller.php');
    if(
    $coo_template_control->get_menubox_status('gm_trusted_shops_widget')) include(DIR_WS_BOXES.'gm_trusted_shops_widget.php');
    if(
    $coo_template_control->get_menubox_status('infobox')) include(DIR_WS_BOXES.'infobox.php');
    if(
    $coo_template_control->get_menubox_status('information')) include(DIR_WS_BOXES.'information.php');
    if(
    $coo_template_control->get_menubox_status('languages')) include(DIR_WS_BOXES.'languages.php');
    if(
    $coo_template_control->get_menubox_status('last_viewed')) include(DIR_WS_BOXES.'last_viewed.php');
    if(
    $coo_template_control->get_menubox_status('login')) include(DIR_WS_BOXES.'loginbox.php');
    if(
    $coo_template_control->get_menubox_status('manufacturers')) include(DIR_WS_BOXES.'manufacturers.php');
    if(
    $coo_template_control->get_menubox_status('newsletter')) include(DIR_WS_BOXES.'newsletter.php');
    if(
    $coo_template_control->get_menubox_status('paypal')) include(DIR_WS_BOXES.'paypal.php');
    if(
    $coo_template_control->get_menubox_status('search')) include(DIR_WS_BOXES.'search.php');
    if(
    $coo_template_control->get_menubox_status('trusted')) include(DIR_WS_BOXES.'trusted.php');
    if(
    $coo_template_control->get_menubox_status('ekomi')) include(DIR_WS_BOXES.'ekomi.php');

    if(
    $_SESSION['style_edit_mode'] == 'edit' || $_SESSION['customers_status']['customers_status_id'] === '0' && (int)$_SESSION['customer_id'] > 0) include(DIR_WS_BOXES.'admin.php');
    if(
    $coo_template_control->get_menubox_status('add_quickie')) if($_SESSION['style_edit_mode'] == 'edit' || $_SESSION['customers_status']['customers_status_show_price']!='0') include(DIR_WS_BOXES.'add_a_quickie.php');
    if(
    $coo_template_control->get_menubox_status('bestsellers')) if($_SESSION['style_edit_mode'] == 'edit' || !$product->isProduct()) include(DIR_WS_BOXES.'best_sellers.php');
    if(
    $coo_template_control->get_menubox_status('currencies')) if($_SESSION['style_edit_mode'] == 'edit' || substr(basename($PHP_SELF), 08) != 'checkout') include(DIR_WS_BOXES.'currencies.php');
    if(
    $coo_template_control->get_menubox_status('manufacturers_info')) if($_SESSION['style_edit_mode'] == 'edit' || $product->isProduct()) include(DIR_WS_BOXES.'manufacturer_info.php');
    if(
    $coo_template_control->get_menubox_status('order_history')) if($_SESSION['style_edit_mode'] == 'edit' || isset($_SESSION['customer_id'])) include(DIR_WS_BOXES.'order_history.php');
    if(
    $coo_template_control->get_menubox_status('reviews')) if($_SESSION['style_edit_mode'] == 'edit' || $_SESSION['customers_status']['customers_status_read_reviews'] == 1) include(DIR_WS_BOXES.'reviews.php');
    if(
    $coo_template_control->get_menubox_status('specials')) if($_SESSION['style_edit_mode'] == 'edit' || !$product->isProduct()) include(DIR_WS_BOXES.'specials.php');
    if(
    $coo_template_control->get_menubox_status('whatsnew')) if($_SESSION['style_edit_mode'] == 'edit' || substr(basename($PHP_SELF), 08) != 'advanced') include(DIR_WS_BOXES.'whats_new.php');

    # BOF YOOCHOOSE
    if ((defined('YOOCHOOSE_ACTIVE') && YOOCHOOSE_ACTIVE) || $_SESSION['style_edit_mode'] == 'edit') {
        if(
    $coo_template_control->get_menubox_status('yoochoose_also_clicked')) include(DIR_WS_BOXES 'yoochoose_also_clicked.php');
        if(
    $coo_template_control->get_menubox_status('yoochoose_top_selling'))  include(DIR_WS_BOXES 'yoochoose_top_selling.php');
    }
    # EOF YOOCHOOSE

    $smarty->assign('tpl_path','templates/'.CURRENT_TEMPLATE.'/');
    ?>
    Ich möchte einfach nur das der Filter auf der Startseite für folgende Kundengruppen nicht erscheint:
    - Gast
    - Freikunde
    - gesperrt
     
  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
    Das ist schon mal die beste Wahl! :)

    Also ... suche er in der boxes.php diese Zeile:
    PHP:
    if($coo_template_control->get_menubox_status('filter')) include(DIR_WS_BOXES.'filter.php');
    ... und ersetze sie hiermit:
    PHP:
    /* ++++++ BOF MBr +++++++
        0: Admin
        1: Gast
        2: Neuer Kunde
        3: Kunde
        4:
    */
    $mbr_show_filter '0,2,3'// +++ Filterbox aktiv für KD-Gruppen (Spalte: customers_status_id in Tabelle: customers_status) 
    if(strpos($mbr_show_filter$_SESSION['customers_status']['customers_status_id']) !== false)  {
        if(
    $coo_template_control->get_menubox_status('filter')) include(DIR_WS_BOXES.'filter.php');
    }
    // +++++++ EOF MBr +++++++
    Ist glaube ich selbsterklären!? Du setzt nur die KundenGrupenID derjenigen ein, die die Filterbox sehen sollen!
    KD = 0 sollte immer sein! :):)
     
  6. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Oh, oh.....

    Und wieder eine nicht updatesichere Änderung, ich krieg' Pickel!!!

    Mein Ansatz wäre, die "FilterContentView"-Klasse, die die Filter-Box generiert, zu überladen (ungetestet):

    dazu folgenden Code als "user_classes\overloads\FilterContentView\pt_user_group_FilterContentView.inc.php" speichern und Cache leeren....

    PHP:
    <?php
    /* --------------------------------------------------------------
    pt_user_group_FilterContentView.inc.php 2013-07-01 Avenger
    Gambio GmbH
    http://www.gambio.de
    Copyright (c) 2012 Gambio GmbH

    Copyright (c) 2013 Avenger, entwicklung@powertemplate.de
    Limit user groups to see filters....

    Store as: user_classes\overloads\FilterContentView\pt_user_group_FilterContentView.inc.php

    Released under the GNU General Public License (Version 2)
    [http://www.gnu.org/licenses/gpl-2.0.html]
    --------------------------------------------------------------
    */

    class pt_user_group_FilterContentView extends pt_user_group_FilterContentView_parent
    {
        function 
    get_html($p_categories_id$p_language_id$p_selected_feature_value_id_array=false$p_price_start=false$p_price_end=false)
        {
        
    /* ++++++ BOF MBr +++++++
            0: Admin
            1: Gast
            2: Neuer Kunde
            3: Kunde
            4:
        */
        
    $mbr_show_filter '0,2,3'// +++ Filterbox aktiv für KD-Gruppen (Spalte: customers_status_id in Tabelle: customers_status) 
        
    if  (strpos($mbr_show_filter$_SESSION['customers_status']['customers_status_id']) !== false)  
        {
          
    $t_html_output=parent::get_html($p_categories_id$p_language_id$p_selected_feature_value_id_array$p_price_start$p_price_end);
        }
        else
        {
          
    $t_html_output='';
        }
          return 
    $t_html_output;
        }
    }
    ?>
     
  7. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Verbesserungsvorschlag:

    statt
    PHP:
      $mbr_show_filter '0,2,3';
      if  (
    strpos($mbr_show_filter$_SESSION['customers_status']['customers_status_id']) !== false)
    lieber
    PHP:
      $mbr_show_filter = array(023);
      if(
    in_array($_SESSION['customers_status']['customers_status_id'], $mbr_show_filter) !== false)
    Die strpos()-Lösung ginge spätestens bei zweistelligen Kundengruppen-IDs in die Hose.
     
  8. MikeSpike

    MikeSpike Erfahrener Benutzer

    Registriert seit:
    27. November 2011
    Beiträge:
    302
    Danke erhalten:
    25
    Danke vergeben:
    91
    #8 MikeSpike, 4. Juli 2013
    Zuletzt bearbeitet: 4. Juli 2013
    Hallo,

    danke für die Lösung