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: MegaDropDown mit Begrenzung.

    Nice_Stuff

    • Frisch an Board
    • Beiträge: 70
    • Geschlecht:
    MegaDropDown mit Begrenzung.
    am: 01. Juli 2016, 12:55:45
    Hallo Forum.

    Ich möchte mein DropDownMenu einschränken. Er soll mit nach der 5 Unterkategorie nur noch den Text "...mehr Anzeigen" mit dem Link auf die Kategorie ausgeben. Kann mir dabei jemand bitte behilflich sein.

    Beispielseite www.reuter.de

    Hier der Quellentext der class.categories.php

    Herzlichen Dank.

    Code: PHP  [Auswählen]
    <?php


    if (isset($hook->class_categories_php_html_top))(eval($hook->class_categories_php_html_top));
    class Categories {
           
            public $currentUrl;
            public $navPath = false;
           

            function __construct(){
                    $this->currentUrl = xtc_href_link(basename($_SERVER['SCRIPT_NAME']),xtc_get_all_get_params(array('XTCsid')));
                    $this->navPath = $this->getCurrentNavigationPath();
       
            }


            private function getCurrentNavigationPath(){
                    return ($GLOBALS['cPath']) ? explode('_',$GLOBALS['cPath']) : false;
            }
           
     
            private function sqlGroupCheck($tablePrefix = false){
                    if ($tablePrefix) $tablePrefix = $tablePrefix.'.';
                    return  ($tablePrefix && GROUP_CHECK == 'true') ? "and ".$tablePrefix."group_permission_".$_SESSION['customers_status']['customers_status_id']."=1 " : false;
            }
           
     
            public function getCategoriesByParentId($parentId = 0){
                    $sql = xtc_db_query("
                            SELECT 
                                    c.categories_id,
                                    c.categories_image,
                                    cd.categories_name,
                                    cd.categories_heading_title,
                                    c.parent_id
                            FROM    
                                    "
    .TABLE_CATEGORIES." c,
                                    "
    .TABLE_CATEGORIES_DESCRIPTION . " cd
                            WHERE  
                                    c.categories_status = '1'
                                    "
    .$this->sqlGroupCheck('c')."
                                    AND c.parent_id = "
    .$parentId."
                                    AND c.categories_id = cd.categories_id
                                    AND cd.language_id='"
    . (int)$_SESSION['languages_id'] ."'
                            ORDER BY
                                    sort_order, cd.categories_name
                    "
    );
                   
                    while ($arr = xtc_db_fetch_array($sql))  {
                            $categories[$arr['categories_id']] = array(    
                                    'id'                            =>      $arr['categories_id'],
                                    'image'                         =>      $arr['categories_image'],
                                    'name'                          =>      substr($arr['categories_name'],0,100),
                                    'heading'                       =>      $arr['categories_heading_title'],
                                    'parent'                        =>      $arr['parent_id'],
                                    'level'                         =>      false,
                                    'position'                      =>      false,
                                    'subcats'                       =>      $this->categoryHasSubCategories($arr['categories_id']),
                                    'link'                          =>      $this->categoryLink($arr['categories_id'],$arr['categories_name'])
                            );
                    }
                   
                    return !empty($categories) ? $categories : false;
            }
                           
     
            private function getTypeBasedHtmlTags($type){
                   
                    $elements['wrap'] = 'ul';
                    $elements['head'] = false;
                    $elements['item'] = 'li';
                   
                    switch ($type){
                            case 'def':
                                    $elements['wrap'] = 'dl';
                                    $elements['head'] = 'dt';
                                    $elements['item'] = 'dd';
                                    break;
                            case 'div':
                                    $elements['wrap'] = 'div';
                                    $elements['head'] = false;
                                    $elements['item'] = 'div';
                            break;
                    }
                   
                    return $elements;
            }
           

            private function categoryHasSubCategories($cid){
                    $childSql = xtDBquery("SELECT categories_id FROM ".TABLE_CATEGORIES." WHERE parent_id = '".$cid."' ".$this->sqlGroupCheck()." AND categories_status = '1'");
                    $hasSub = $cid && xtc_db_num_rows($childSql,true) ? true : false;
                    return $hasSub;
            }
                   
           
            private function categoryLink($cid,$cname){
                    return $cid && $cname ? xtc_href_link(FILENAME_DEFAULT,xtc_category_link(intval($cid),$cname)) : false;
            }
           

            private function isInNavigationPath($cid = false){
                    $navPath = $this->navPath;
                    $inArr = $navPath && $cid ? in_array($cid, $navPath) : false;
                    return $inArr;
            }
           
           
            private function isCurrentCategory($cid){
                    $navPath = $this->navPath;
                    $current = is_array($navPath) ? array_pop($navPath) : false;
                    return $current==$cid;
            }      
           
           
            public function getCurrentCategoryId(){
                    $navPath = $this->navPath;
                    return is_array($navPath) ? array_pop($navPath) : false;
            }      
           
           
            private function setPosition($data = false){
                    if (is_array($data)) {
                            $i=0; foreach($data as $key => $catData) { $i++;
                                    if ($i==1)
                                            $data[$key]['position'] = ' first';
                                    elseif ($i==sizeof($data))
                                            $data[$key]['position'] = ' last';
                            }
                            return $data;
                    } else {
                            return false;
                    }
                   
            }      
           
     
            private function setActiveState($data = false){
                    if ($data) {
                            if ($this->isCurrentCategory($data['id']))
                                    $activeState = ' active';
                            elseif ($this->isInNavigationPath($data['id']))
                                    $activeState = ' active active_parent';
                    }
                   
                    return $activeState ? $activeState : false;
            }
           
     
            private function allowSub($cid, $level, $maxLevel, $isNested){
                    if ( $isNested ) {
                            $allowed = ( $this->isInNavigationPath($cid) && $this->categoryHasSubCategories($cid) && $level+1 <= $maxLevel ) ? true : false;
                    } else {
                      if ( $maxLevel ) {
                              $allowed = ( $this->categoryHasSubCategories( $cid ) && $level+1 <= $maxLevel ) ? true : false;
          } else {
                              $allowed = $this->categoryHasSubCategories( $cid ) ? true : false;
          }
                    }
                   
                    return $allowed;
            }
           

            private function setCss($data = false, $level, $allow, $arr = false){
                    if ($data && is_array($data)){
                            $activeState            = $this->setActiveState($data);
                            $position                       = $arr[$data['id']]['position'];
                            $hasSub                                 = $allow ? ' has_sub' : '';
                           
                            $params = array(
                                    'subCntClass'           => 'menulevel_'.$level.$activeState,
                                    'itemClass'             => 'level_'.$level.' catid_'.$data['id'].$hasSub.$activeState.$position,
                                    'itemId'                                => 'catid_'.$data['id'],
                                    'linkClass'             => 'level_'.$level.' catid_'.$data['id'].$hasSub.$activeState,
                                    'linkId'                                => 'catid_'.$level,
                            );
                    }
                   
                    return $params ? $params : false;
            }
           
           
            public function HtmlNavigation( $config,$parent=false,$runLevel=1 ) {          
                    global $cPath_array, $hook;
                   
                   
                    if ( !$parent )
                      $parent = ($config['root']) ? $config['root'] : 0;
                    $config['nested'] = ( isset( $config['nested'] ) ) ? $config['nested'] : false;
                    $config['type']   = ( $config['type'] ) ? $config['type'] : false;
                    $config['levels'] = ( $config['levels'] ) ? $config['levels'] : false;
                    $config['items_per_row'] = ($config['items_per_row']) ? $config['items_per_row'] : false;
                   
                   
                    $data = $this->getCategoriesByParentId( $parent );
       
        if (isset($hook->class_categories_php_html_navigation_data_add))(eval($hook->class_categories_php_html_navigation_data_add));
                   
                   
                    if ( $config['show_startpage_link'] && $runLevel==1 )
                      array_unshift( $data, array( 'id'=>'0','name'=>'<span class="icon-home icon_startpage_link"></span>','heading'=>text_link_startpage,'parent'=>'0','subcats'=>false,'link'=>xtc_href_link(FILENAME_DEFAULT) ) );
                   
                    $data           = $this->setPosition( $data );
                    $tag            = $this->getTypeBasedHtmlTags( $config['type'] );
                   
                    if ( is_array( $data ) ) {
                            $i=0; $e=0; $a=0; foreach( $data as $set ) { ++$e;
                                    $allow  = $this->allowSub( $set['id'],$runLevel,$config['levels'],$config['nested'] );
           
            if (isset($hook->class_categories_php_html_navigation_process))(eval($hook->class_categories_php_html_navigation_process));
           
                                    $css    = $this->setCss( $set,$runLevel,$allow,$data );
                   
                                    if ( $runLevel==2 && $config['number_of_sunlinks'] ) $a++;
                                    if ( ++$i==1 ){
                                            if ( $runLevel==1 )
                                                    $html = '<'.$tag['wrap'].' class="' . $config['class'] . '" id="'.$config['id'].'">';
                                            elseif ($runLevel==2)
                                                    $html = '<'.$tag['wrap'].' class="submenu '.$css['subCntClass'].' '.$config['dropdown_class'].'">';
                                            else
                                                    $html = '<'.$tag['wrap'].' class="'.$css['subCntClass'].'">';
                                    }
                                   
                                    $html .= $tag['item'] ? '<'.$tag['item'].' class="'.$css['itemClass'].'">' : '';
                              $html .= '<a href="'.$set['link'].'" class="'.$css['linkClass'].'" title="'.$set['heading'].'">'.$config['link_pre'].$set['name'].$config['link_post'].'</a>';
                                   
                                    if ( $allow )
                                            $html .= $this->HtmlNavigation( $config,$set['id'],$runLevel+1 );
           
                                    $html .= $tag['item'] ? '</'.$tag['item'].'>' : '';
                                   
                                    if ( $e==$config['items_per_row'] && $runLevel > 1 ) {
                                    $html .= '<'.$tag['item'].' class="clb"></'.$tag['item'].'>';
                                    $e=0;
                                    }
                            }
                           
                    $html .= '</'.$tag['wrap'].'>';
                   
                    return $html;
                    }
                    return false;
            }
     


           
           
    }
    if (isset($hook->class_categories_php_html_bottom))(eval($hook->class_categories_php_html_bottom));
    ?>
     


    Linkback: https://www.modified-shop.org/forum/index.php?topic=35284.0

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: MegaDropDown mit Begrenzung.
    Antwort #1 am: 01. Juli 2016, 13:42:23
    Was ist den das für ein Fork, alle Hinweise auf die Quelle sowohl im geposteten PHP-Code als auch im Quellcode des verlinkten Shops fehlen und ein Backlink im Footer ist auch nicht vorhanden, so kannst du hier sicher keinen Support erwarten.

    Gruss
    Hanspeter

    Nice_Stuff

    • Frisch an Board
    • Beiträge: 70
    • Geschlecht:
    Re: MegaDropDown mit Begrenzung.
    Antwort #2 am: 01. Juli 2016, 14:39:01
    Och, das fänd ich aber sehr schade, wenn das die allgemeine Meinung ist.

    Einen Link gibt es nicht, da es sich um einen Testshop handelt und dieser nicht im Netz zu finden ist.
    Und was nun die Quelle angeht weiß ich ehrlich gesagt was das mit meiner Frage zu tun haben soll.

    Für konstruktive Hilfe und Anregung bezüglich meiner Frage bin ich sehr dankbar.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: MegaDropDown mit Begrenzung.
    Antwort #3 am: 01. Juli 2016, 15:04:59
    Kein Footer = Kein Support in diesem Forum.

    karsta.de

    • Experte
    • Beiträge: 3.157
    Re: MegaDropDown mit Begrenzung.
    Antwort #4 am: 01. Juli 2016, 15:46:07
    Ist ja hier wie auf ner abgeschlossenen Insel mit Stacheldraht drum rum.
    @Bonsai
    Er hat den Link als Beispielshop angegeben.

    Außerdem muß man mal festhalten, dass hier ein Haufen Leute sich Rat einholen, die gar nicht erst darüber nachdenken einen Link, noch einen Beispiellink, zu senden und auch nicht wirklich einen modified-shop haben.
    (wahrscheinlich weil sie wissen, dass man gleich ne Klatsche kriegt)

    Nice_Stuff

    • Frisch an Board
    • Beiträge: 70
    • Geschlecht:
    Re: MegaDropDown mit Begrenzung.
    Antwort #5 am: 01. Juli 2016, 16:19:54
    Danke kgd.

    Also wir haben einen Shop, dort ist diese Navigation in der von mir gewünschten Form aber nicht aktiv, weil es unmöglich aussieht, wenn mal 2, dann mal 15 Unterkategorien auftauchen.

    Finden tut ihr uns unter www.onlinebaufuchs.de

    Wir haben einen modified eCommerce Shopsoftware Version 1.06
    Das Template ist von  http://www.squidio.de gekauft.

    Konfiguration topnav.php

    Code: PHP  [Auswählen]
    $config = array(
              'root' => 0,
              'type' => 'list',
              'id' => 'topnavi',
              'class' => 'nav navtype_'.$navtype,
              'levels' => ( $navtype == 'mobile' ) ? false : 3,      
              'nested' => false,
              'dropdown_class' => 'dropdown',
              'items_per_row' => 4,  
              'link_pre' => '',
              'link_post' => ''
            );
     

    Die Datei hab ich anghängt ( mit Autorenverweis!!! )

    Vielleicht hat jetzt jemand lust, mir die functionen etwas näher zu bringen, weil das für mich eher Neuland ist und aus dem code den zusammenhang nicht ganz verstehe.

    Warum ich das nicht machen lasse! Ganz einfach, weil ich was lernen will und hoffe hier die Möglichkeit zu finden.

    Danke.

    Nachtrag. Hier noch ein copy vom Html Quellencode für den ersten Kategoriebaum:

    Code: XML  [Auswählen]
    <ul style="top: 57px; display: none;" class="submenu menulevel_2 dropdown">
    <li class="level_2 catid_106 has_sub first"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen:::104_106.html" class="level_2 catid_106 has_sub" title="">Armaturen &amp; Brausen</a>
    <ul class="menulevel_3">

    <li class="level_3 catid_111 first"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Duscharmaturen:::104_106_111.html" class="level_3 catid_111" title=""><span class="icon-angle-right"></span>Duscharmaturen</a></li>
    <li class="level_3 catid_112"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Duschbrausen:::104_106_112.html" class="level_3 catid_112" title=""><span class="icon-angle-right"></span>Duschbrausen</a></li>
    <li class="level_3 catid_200"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Duschsysteme:::104_106_200.html" class="level_3 catid_200" title=""><span class="icon-angle-right"></span>Duschsysteme</a></li>
    <li class="level_3 catid_113"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Wannenarmaturen:::104_106_113.html" class="level_3 catid_113" title=""><span class="icon-angle-right"></span>Wannenarmaturen</a></li>
    <li class="clb"></li>
    <li class="level_3 catid_202"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Bidetarmaturen:::104_106_202.html" class="level_3 catid_202" title=""><span class="icon-angle-right"></span>Bidetarmaturen</a></li>
    <li class="level_3 catid_114"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Waschtischarmaturen:::104_106_114.html" class="level_3 catid_114" title=""><span class="icon-angle-right"></span>Waschtischarmaturen</a></li>
    <li class="level_3 catid_196"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Armaturen-Ersatzteile:::104_106_196.html" class="level_3 catid_196" title=""><span class="icon-angle-right"></span>Armaturen-Ersatzteile</a></li>
    <li class="level_3 catid_179"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Brauseschlaeuche-Zubehoer:::104_106_179.html" class="level_3 catid_179" title=""><span class="icon-angle-right"></span>Brauseschläuche &amp; Zubehör</a></li>
    <li class="clb"></li>
    <li class="level_3 catid_986"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Cornat-Brausen:::104_106_986.html" class="level_3 catid_986" title=""><span class="icon-angle-right"></span>Cornat-Brausen</a></li>
    <li class="level_3 catid_1089 last"><a href="http://www.online-baufuchs.de/Bad-Sanitaer/Armaturen-Brausen/Einhebelmischer-Aktion:::104_106_1089.html" class="level_3 catid_1089" title=""><span class="icon-angle-right"></span>Einhebelmischer Aktion</a></li>
    </ul>
    </li>
     
    5 Antworten
    3854 Aufrufe
    04. November 2009, 00:33:21 von DokuMan
    2 Antworten
    1532 Aufrufe
    28. Juni 2015, 17:09:02 von emeredato