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?
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.
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++"
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.phpif($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), 0, 8) != '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), 0, 8) != 'advanced') include(DIR_WS_BOXES.'whats_new.php');# BOF YOOCHOOSEif ((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
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!
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 AvengerGambio GmbHhttp://www.gambio.deCopyright (c) 2012 Gambio GmbHCopyright (c) 2013 Avenger, entwicklung@powertemplate.deLimit user groups to see filters....Store as: user_classes\overloads\FilterContentView\pt_user_group_FilterContentView.inc.phpReleased 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; }}?>
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(0, 2, 3); 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.