Brak rozwijanego menu

tomaszowiaktv

Avatar: tomaszowiaktv

2015-11-25 13:50

W menu głównym próbuję wyświetlić submenu, rozwijane.

Sprawa dotyczy tej strony:
http://www.dworekdabrowa.pl

Po najechaniu na odnośnik "Oferta" powinno się ukazać rozwijane menu. Nie jest to wina złego CSSa, bo w kodzie nawet nie widać fragmentu odpowiedzialnego za wyświetlenie submenu.

menu wywołuje tym w pliku header.php:

echo $oPage->listPagesMenu1, Array( 'iDepthLimit' => ) ); 



Funkcja listPagesMenu:


public function listPagesMenu$iMenu$aParametersExt null ){
    global 
$lang$config;

    if( !isset( 
$this->aPagesParentsMenus[$iMenu] ) )
      return 
null;

    
$this->aMenuParams['iDepthLimit'] = isset( $aParametersExt['iDepthLimit'] ) ? $aParametersExt['iDepthLimit'] : 1;
    
$this->aMenuParams['bExpanded'] = isset( $aParametersExt['bExpanded'] ) ? true null;

    
$content null;
    foreach( 
$this->aPagesParentsMenus[$iMenu] as $iElement => $iPage ){
      
$aParametersExt['sSubMenu'] = ( isset( $this->aPagesChildrens[$iPage] ) && ( isset( $this->aMenuParams['bExpanded'] ) || ( isset( $config['current_page_id'] ) && ( $iPage == $config['current_page_id'] || isset( $this->aPagesAllChildrens[$iPage][$config['current_page_id']] ) ) ) ) && $this->aMenuParams['iDepthLimit'] > ) ? $this->listPagesSubMenu$iPage) : null;
      
$aParametersExt['bSelected'] = ( isset( $config['current_page_id'] ) && $config['current_page_id'] == $iPage ) ? true null;
      
$aParametersExt['iElement'] = $iElement;

      
$content .= listPagesMenuView$this->aPages[$iPage], $aParametersExt );
    } 
// end foreach
    
unset( $this->aMenuParams );

    if( isset( 
$content ) ){
      return 
'<ul>'.$content.'</ul>';
    }
  } 
// end function listPagesMenu



funkcja listPagesSubMenu:


  
public function listPagesSubMenu$iPageParent$iDepth ){
    global 
$config;

    if( isset( 
$this->aPagesChildrens[$iPageParent] ) ){

      
$content null;
      foreach( 
$this->aPagesChildrens[$iPageParent] as $iElement => $iPage ){
        
$aParametersExt['sSubMenu'] = ( isset( $this->aPagesChildrens[$iPage] ) && ( ( isset( $this->aMenuParams['bExpanded'] ) || ( isset( $config['current_page_id'] ) && ( $iPage == $config['current_page_id'] || isset( $this->aPagesAllChildrens[$iPage][$config['current_page_id']] ) ) ) ) && $this->aMenuParams['iDepthLimit'] > $iDepth ) ? $this->listPagesSubMenu$iPage$iDepth ) : null );
        
$aParametersExt['bSelected'] = ( isset( $config['current_page_id'] ) && $config['current_page_id'] == $iPage ) ? true null;
        
$aParametersExt['iElement'] = $iElement;
        
$content .= $this->aMenuParams['sFunctionView']( $this->aPages[$iPage], $aParametersExt );
      } 
// end foreach

      
if( isset( $content ) ){
        return 
'<ul>'.$content.'</ul>';
      }
    }
  } 
// end function listPagesSubMenu



funkcja listPagesMenuView:


function listPagesMenuView$aData$aParametersExt ){
  
$sClassName null;
  if( isset( 
$aParametersExt['bSelected'] ) )
    
$sClassName .= 'selected';
  return 
'<li'.( isset( $sClassName ) ? ' class="'.$sClassName.'"' null ).'><a href="'.$aData['sLinkName'].'">'.$aData['sName'].'</a>'.$aParametersExt['sSubMenu'].'</li>';
// end function listPagesMenu

» Quick.Cms v6.x

biuro@tomaszowiak.tv

pawgraf

Avatar: pawgraf

2015-11-25 14:54

iDepthLimit - przekazuje do funkcji zagłębienie w wyświetlaniu podstron w menu. Używana w funkcjach: listPagesMenu

zmień na 1 :)

Paweł

boboo

Avatar: boboo

2015-11-25 15:48

A choćby i 1000 wpisał, nie zadziała :-)

Oprócz tej "1" (czy tam ile głębokości potrzeba) trzeba jeszcze małą zmiankę wprowadzić w funkcji listPagesSubMenu
linijkę

$content .= $this->aMenuParams['sFunctionView']( $this->aPages[$iPage], $aParametersExt );


zamienić na:

$content .= listPagesMenuView$this->aPages[$iPage], $aParametersExt );


Ponieważ parametr: $this->aMenuParams['sFunctionView'] nie jest nigdzie zdefiniowany.
A potem trochę pracy w css.

boboo :-)

tomaszowiaktv

Avatar: tomaszowiaktv

2015-11-25 16:31

Dzięki! jest postęp.

Menu rozwija się, ale tylko gdy jesteśmy w dziale "Oferta". W pozostałych przypadkach ciągle nic.

biuro@tomaszowiak.tv

boboo

Avatar: boboo

2015-11-25 17:19

Weź sobie obejrzyj jak to zrobiłem tu:
http://www.kimla.de/ponton/
Na razie mi się nie chce patrzeć w .css'a
Ściągnij go sobie i przeanalizuj.

boboo :-)

pawgraf

Avatar: pawgraf

2015-11-25 18:59

No tak racja.. przyzwyczajenia z płatnej wersji :)

Paweł

tomaszowiaktv

Avatar: tomaszowiaktv

2015-11-26 11:40

CSS miałem zrobiony już wcześniej, działa poprawnie.

Chodzi o to, że funkcja nie generuje kodu html. Generuje go tylko w przypadku gdy jesteśmy w zakładce która ma podstrony, gdy ta zakłądka jest aktywna, to submenu jest generowane. W innych przypadkach już nie.

Szybka prezentacja:

Gdy mamy aktywną "Strona główna":


<ul>
 <
li class="selected"><a href="./">Strona główna</a></li
 <
li><a href="?oferta">Oferta</a></li
 <
li><a href="?cennik">Cennik</a></li>
 <
li><a href="?o-nas">O nas</a></li>
 <
li><a href="?galeria-zdjec">Galeria zdjęć</a></li>
 <
li><a href="?kontakt">Kontakt</a></li>
</
ul>     



Gdy mamy aktywną zakładkę "Oferta" (ta zakładka ma podstrony):


<ul>
<
li><a href="./">Strona główna</a></li>
<
li class="selected"><a href="?oferta">Oferta</a>
  <
ul>
    <
li><a href="?restauracja">Restauracja</a></li>
    <
li><a href="?pokoje">Pokoje</a></li>
    <
li><a href="?wesela">Wesela</a></li>
    <
li><a href="?imprezy">Imprezy</a></li>
  </
ul>
</
li>
<
li><a href="?cennik">Cennik</a></li>
<
li><a href="?o-nas">O nas</a></li>
<
li><a href="?galeria-zdjec">Galeria zdjęć</a></li>
<
li><a href="?kontakt">Kontakt</a></li>
</
ul>



Jak widać błąd jest po stronie funkcji która nie generuje submenu.

biuro@tomaszowiak.tv

tomaszowiaktv

Avatar: tomaszowiaktv

2015-11-26 11:53

OK już sobie poradziłem, dzięki za trop Panowie!

W funkcji listPagesMenu, zmieniłem:


 $aParametersExt
['sSubMenu'] = ( isset( $this->aPagesChildrens[$iPage] ) &&  ( isset( $this->aMenuParams['bExpanded'] )


na


 $aParametersExt
['sSubMenu'] = ( isset( $this->aPagesChildrens[$iPage] ) ||  ( isset( $this->aMenuParams['bExpanded'] )



Czyli zmiana operatora logicznego && na ||. Nie wiem tylko dlaczego domyślnie jest ustawiony na taką wartość, przez to blokuje generowanie htmal submenu.

biuro@tomaszowiak.tv

boboo

Avatar: boboo

2015-11-26 12:14

Zamiast tego, może lepiej wprowadzić ten parametr (bExpanded) przy wywoływaniu tej funkcji?
W templates/default/header.php
zamienić linijkę:

<?php echo $oPage->listPagesMenu1, Array( 'iDepthLimit' => ) ); // content of top menu ?>


na:

<?php echo $oPage->listPagesMenu(1,Array('iDepthLimit'=>1,'bExpanded'=>1)); // content of top menu ?>


W ten sposób możesz sterować generowaniem submenu.
Przy sposobie, który użyłeś, będzie ono generowane zawsze (czasami niepotrzebnie).

boboo :-)

tomaszowiaktv

Avatar: tomaszowiaktv

2015-11-26 13:05

Dzięki sprawdzę to.

biuro@tomaszowiak.tv

deha

Avatar: deha

2015-11-26 15:28

Myślę, że można to też zrobić bez usuwania kodu z funkcji.

Wystarczy, że w funkcji listPagesMenu pod kodem:

$this->aMenuParams['bExpanded'] = isset( $aParametersExt['bExpanded'] ) ? true null;


dodasz:

$this->aMenuParams['sFunctionView'] =  isset( $aParametersExt['sFunctionView'] ) ? $aParametersExt['sFunctionView'] : null;



a wywołując funkcję listPagesMenu w header.php, dodasz więcej parametrów.

$oPage->listPagesMenu1, Array( 'iDepthLimit' => 1'bExpanded' => true'sFunctionView' => 'listPagesMenuView' ) )

DEHA

boboo

Avatar: boboo

2015-11-26 16:42

No widzisz :-)
parę miesięcy bez dłubania w kodzie i oczywiste oczywistości wylatują z głowy ;-)

boboo :-)

Do góry
o nas | kontakt