NAVIGATION
Einsetzbar ab CMS Version 1.4.7 r403
Erweitert um Benutzer CSS-Klassen für jede Seitenebene und die Artikelschalter FA, PA, FPA.
Forum: NLU_FF_AC_QD [update v.1.5]
<?php /****************************************************************** * NLU_FF_AC_QD for phpwcms --> r403 v1.4.7+ * Date: Nov. 28, 2010 * * SUMMARY: * Works like NAV_LIST_UL but displays the number of articles * --> of each site level. Example ==> Products (17) * * AUTHOR [virt.]: Jensensen * INSPIRED by Knut Heermann aka flip-flop * FUNCTION by Oliver Georgi * README: Forum * http://forum.phpwcms.org/viewtopic.php?p=100208#p100208 * http://forum.phpwcms.org/viewtopic.php?f=8&t=17891 * * README: Wiki * http://www.phpwcms-howto.de/wiki/doku.php/english/phpwcms_replacer_rts/frontend_render/nav_list_ul-article-count * http://www.phpwcms-howto.de/wiki/doku.php/deutsch/ersetzer_rts/frontend_render/nav_list_ul-article-count * * TAG: {NLU_FF_AC_QD:F,0....} * Use it in your templates, CPs or elsewhere. * * VERSION: 1.5 * CONDITION: FREE || leckmichandefurtoderscheissdiewandan; * LICENCE: ∀ |∀| ∀ * * LOCATION: /template/inc_script/frontend_render/rt_NLU_FF_AC_QD_1.5.php * REQUIREMENT: $phpwcms['allow_ext_render'] = 1; //SEE: conf.inc.php * * NAV_LIST_UL basics: http://forum.phpwcms.org/viewtopic.php?t=12165 * * ****************************************************************/ // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } /****************************************************************** * ### PARAMETER SET UP ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ### ******************************************************************/ // Article Count Wrapper $acw_before = " <span>("; $acw_after = ")</span>"; /****************************************************************** * ### !!!!!!!!!!! ### NO NEED TO EDIT BELOW ### !!!!!!!!!!!!!!! ### ******************************************************************/ // original funtion buildCascadingMenu in /include/inc_front/front.func.inc.php function buildCascMenuCountArticles($parameter='', $counter=0, $param='string') { // @string $parameter = "menu_type, start_id, max_level_depth, class_path, class_active, // ul_id_name, wrap_ul_div(0 = off, 1 = <div>, 2 = <div id="">, 3 = <div class="navLevel-0">), // wrap_link_text(<em>|</em>, articlemenu_start_level)" if($param == 'string') { $parameter = explode(',', $parameter); $menu_type = empty($parameter[0]) ? '' : strtoupper(trim($parameter[0])); $unfold = 'all'; $ie_patch = false; // unused at the moment $create_css = false; $parent = false; // do not show parent link $articlemenu = false; // do not show category's article titles as menu entry switch($menu_type) { // show parent level too case 'PA': $articlemenu = true; case 'P': $parent = true; break; // vertical, active path unfolded case 'FPA': $articlemenu = true; case 'FP': $parent = true; case 'F': $unfold = 'active_path'; break; case 'FA': $articlemenu = true; $unfold = 'active_path'; break; // horizontal, all levels unfolded, add special code for horizontal flyout menu case 'HCSSP': $parent = true; case 'HCSS': $create_css = true; break; // horizontal, all levels unfolded, add special code for vertical flyout menu case 'VCSSP': $parent = true; case 'VCSS': $create_css = true; break; } $start_id = empty($parameter[1]) ? 0 : intval($parameter[1]); $max_depth = empty($parameter[2]) ? 0 : intval($parameter[2]); $path_class = empty($parameter[3]) ? '' : trim($parameter[3]); $active_class = empty($parameter[4]) ? '' : trim($parameter[4]); $level_id_name = empty($parameter[5]) ? '' : trim($parameter[5]); $wrap_ul_div = empty($parameter[6]) ? 0 : intval($parameter[6]); if($wrap_ul_div > 3) { $wrap_ul_div = 2; } elseif($wrap_ul_div < 0) { $wrap_ul_div = 0; } $wrap_link_text = empty($parameter[7]) ? array(0 => '', 1 => '') : explode('|', trim($parameter[7]), 2); if(empty($wrap_link_text[1])) { $wrap_link_text[1] = ''; } $amenu_level = empty($parameter[8]) ? 0 : intval($parameter[8]); $parameter = array( 0 => $menu_type, 1 => $start_id, 2 => $max_depth, 3 => $path_class, 4 => $active_class, 5 => $level_id_name, 6 => $wrap_ul_div, 7 => $wrap_link_text, 8 => $unfold, 9 => $ie_patch, 10 => $create_css, 11 => $amenu_level, 12 => array('articlemenu' => $articlemenu, 'level_id' => $start_id) ); if($articlemenu) { $parameter[12]['class_active'] = $active_class; $parameter[12]['wrap_title_prefix'] = $wrap_link_text[0]; $parameter[12]['wrap_title_suffix'] = $wrap_link_text[1]; $parameter[12]['item_prefix'] = "\t"; $parameter[12]['item_suffix'] = ''; $parameter[12]['sort'] = 'level'; $parameter[12]['item_tag'] = 'li'; $parameter[12]['wrap_tag'] = ''; $parameter[12]['attribute_wrap_tag'] = ''; $parameter[12]['class_item_tag'] = 'asub_no'; $parameter[12]['class_first_item_tag'] = 'asub_first'; $parameter[12]['class_last_item_tag'] = 'asub_last'; $parameter[12]['return_format'] = 'array'; } } else { $menu_type = $parameter[0]; $start_id = $parameter[1]; $max_depth = $parameter[2]; $path_class = $parameter[3]; $active_class = $parameter[4]; $level_id_name = $parameter[5]; $wrap_ul_div = $parameter[6]; $wrap_link_text = $parameter[7]; $unfold = $parameter[8]; $ie_patch = $parameter[9]; $create_css = $parameter[10]; $amenu_level = $parameter[11]; $parent = false; // do not show parent link } $li = ''; $ul = ''; $TAB = str_repeat(' ', $counter); $_menu_type = strtolower($menu_type); $max_depth = ($max_depth == 0 || $max_depth-1 > $counter) ? true : false; $x = 0; foreach($GLOBALS['content']['struct'] as $key => $value) { // -------------------------------------- WORKING ----------------- // thank you OG // count number of articles in each category level $sql = "SELECT COUNT(*) "; $sql .= "FROM ".DB_PREPEND."phpwcms_article "; $sql .= 'WHERE article_cid=' . $key . ' AND article_deleted=0 AND article_public=1 '; $sql .= 'AND article_aktiv=1 AND article_begin<NOW() AND '; $sql .= 'IF(article_archive_status=1, 1, article_end>NOW())'; // ---------------------------------------------------------------- // thank you flip-flop $how_many_articles = _dbCount($sql); if( _getStructureLevelDisplayStatus($key, $start_id) ) { $li_ul = ''; $li_ie = ''; $li_a_title = html_specialchars($GLOBALS['content']['struct'][$key]['acat_name']); $li_a = get_level_ahref($key, ' title="'.$li_a_title.'"'); $li_a .= $wrap_link_text[0] . $li_a_title . $wrap_link_text[1]; if($max_depth && ($unfold == 'all' || ($unfold == 'active_path' && isset($GLOBALS['LEVEL_KEY'][$key]))) ) { $parameter[1] = $key; // $li_ul = buildCascadingMenu($parameter, $counter+1, 'param_is_array'); $li_ul = buildCascMenuCountArticles($parameter, $counter+1, 'param_is_array'); // jensensen } $li .= $TAB.' <li'; if($level_id_name) { $li .= ' id="li_'.$level_id_name.'_'.$key.'"'; } $li_class = ($li_ul) ? 'sub_ul' : (getHasSubStructureStatus($key) ? 'sub_no sub_ul_true' : 'sub_no'); if($path_class != '' && isset($GLOBALS['LEVEL_KEY'][$key])) { $li_class = trim($li_class.' '.$path_class); } if($active_class != '' && $key == $GLOBALS['aktion'][0]) { $li_class = trim($li_class.' '.$active_class); } if($x==0) { $li_class .= ' sub_first'; } $li .= ' class="' . trim($li_class . ' ' . $GLOBALS['content']['struct'][$key]['acat_class']) .'"'; // $li .= '>' . $li_a . '</a>'; $li .= '>' . $li_a . $GLOBALS['acw_before'] . $how_many_articles . $GLOBALS['acw_after'] . '</a>'; // jensensen $li .= $li_ul.'</li>'.LF; // remove $li_ul from this line of code if $ie_patch is used $x++; } } // show article menu if($parameter[12]['articlemenu'] && $amenu_level <= $counter) { $parameter[12]['level_id'] = $start_id; $parameter[12]['item_prefix'] = $TAB; $ali = getArticleMenu( $parameter[12] ); if(count($ali) > 1) { $li .= implode(LF, $ali) . LF; } } // also check if $parent if($li || ($parent && isset($GLOBALS['content']['struct'][$start_id]))) { switch($wrap_ul_div) { case 1: $ul = LF.$TAB.'<div>'; $close_wrap_ul = '</div>'.LF.$TAB; break; case 2: $ul = LF.$TAB.'<div id="ul_div_'.$start_id.'">'; $close_wrap_ul = '</div>'.LF.$TAB; break; case 3: $ul = LF.$TAB.'<div class="navLevel-'.$counter.'">'; $close_wrap_ul = '</div>'.LF.$TAB; break; default: $ul = ''; $close_wrap_ul = ''; } $ul .= LF.$TAB.'<ul'; if($level_id_name) { $ul .= ' id="'.$level_id_name.'_'.$start_id.'"'; } if(isset($GLOBALS['LEVEL_KEY'][$start_id]) && $path_class) { $ul .= ' class="'.$path_class.'"'; } $ul .= '>'.LF; if($parent && isset($GLOBALS['content']['struct'][$start_id])) { $ul .= LF; $ul .= $TAB.' <li'; if($level_id_name) { $ul .= ' id="li_'.$level_id_name.'_'.$start_id.'"'; } $li_class = 'sub_parent'; if($active_class != '' && $start_id == $GLOBALS['aktion'][0]) { $li_class = trim($li_class.' '.$active_class); } $ul .= ' class="'.trim($li_class.' '.$GLOBALS['content']['struct'][$start_id]['acat_class']).'">'; $link_text = html_specialchars($GLOBALS['content']['struct'][$start_id]['acat_name']); $ul .= get_level_ahref($start_id, ' title="'.$link_text.'"'); $ul .= $wrap_link_text[0] . $link_text . $wrap_link_text[1]; $ul .= '</a></li>'.LF; } $ul .= $li; $ul .= $TAB . '</ul>' . LF . $TAB . $close_wrap_ul; if($create_css && empty($GLOBALS['block']['custom_htmlhead'][$menu_type][$counter])) { if($counter) { $tmp_css = ' .'.$_menu_type.'_menu ul li:hover '.str_repeat('ul ', $counter) .'ul { display: none; }'.LF; $tmp_css .= ' .'.$_menu_type.'_menu ul '.str_repeat('ul ', $counter) .'li:hover ul { display: block; }'; $GLOBALS['block']['custom_htmlhead'][$menu_type][$counter] = $tmp_css; } else { //if($counter == 0) { $GLOBALS['block']['custom_htmlhead'][$menu_type][-9] = LF.' <style type="text/css">'.LF.SCRIPT_CDATA_START; $GLOBALS['block']['custom_htmlhead'][$menu_type][-8] = ' @import url("'.TEMPLATE_PATH.'inc_css/specific/nav_list_ul_'.$_menu_type.'.css");'; $GLOBALS['block']['custom_htmlhead'][$menu_type][-5] = ' .'.$_menu_type.'_menu ul ul { display: none; }'; $GLOBALS['block']['custom_htmlhead'][$menu_type][-4] = ' .'.$_menu_type.'_menu ul li:hover ul { display: block; }'; ksort($GLOBALS['block']['custom_htmlhead'][$menu_type]); $GLOBALS['block']['custom_htmlhead'][$menu_type][] = SCRIPT_CDATA_END.LF.' </style>'; $GLOBALS['block']['custom_htmlhead'][$menu_type] = implode(LF, $GLOBALS['block']['custom_htmlhead'][$menu_type]); $ul = '<div class="'.$_menu_type.'_menu">'.$ul.'</div>'; } } } return $ul; } if(!empty($content["all"]) && !(strpos($content["all"],'{NLU_FF_AC_QD:')===false)) { $content["all"] = preg_replace('/\{NLU_FF_AC_QD:(.*?)\}/e', 'buildCascMenuCountArticles("$1");', $content["all"]); } ?>