Własne menu po lewej odpowiednie do dzialu

pilchu

Avatar: pilchu

2008-10-08 23:20

Cześć Marcin ;-) , czytam sobie Twój post i pętelke masz poza pętlą if( !isset( $bBlockPage ) , ona jest zagnieźdżona, powinno pomóc . Heh co tam u CIe odezwij sie na prv

marcinsieja

No avatar

2008-10-23 22:00

Cześć ponownie.
Sprawdzałem tą pętelkę i w środku i na zewnątrz i nie robiło to różnicy. Nie bardzo wiem, jak można to bez problemu obejść.

Codzień czegoś nowego się uczę... i tak do śmierci

pilchu

Avatar: pilchu

2008-10-29 09:22

Rzeczywiście dziwne rzeczy sie dzieją . Na Quick.Cms.Lite działa bez problemu, na Quick.Cms.Ext są jaja . jakiej wersji użuywasz

WP

marcinsieja

No avatar

2008-10-30 22:07

Wersji 2.1 i 2.2

pilchu

Avatar: pilchu

2008-10-30 23:25

Marcin, uzyskałem dzisiaj odpowiedź od Szanownych OS, nie jest to dobre rozwiązanie. i Jak potem sie okazało rozwiązanie które Oni proponują jest lepsze - DZIAŁA lepiej niż to :-).

Czysty CMS
1. default.php


if( !isset( $bBlockPage ) ){
  
$sMenu1 $oPage->throwMenu'menu_1.tpl'1$iContent);
  
$sMenu2 $oPage->throwMenu'menu_2.tpl'2$iContent);
  
$sMenuLeft $oPage->throwMenu'menu_left.tpl'$aPagesTypes[$iContent], $iContent);
}



2. lang_pl.php

$aMenuTypes[6] = 'Dodatkowa lista z lewej';
$aPagesTypes = Array( => 6=> 6=> 6=> 6=> 6)



3. oczywiście modyfikacje w container.tpl i plik menu_left.tpl

4. wrzucasz strony które chcesz mieć w menu do podmenu utworzonego w lang_pl, następnie tworzysz menu pod logo i wpisujesz jego id do lang_pl do tablicy.

5. Jak coś podeśle rozwiązanie pełne - to tak na szybko.

pzdr

Pilchu

marcinsieja

No avatar

2008-11-03 16:34

sprawdzę i dam znać, choć męczy mnie to, że jeśli będę chciał klientowi dać dostęp do admina, to on dodając kolejne podstrony nic nie zobaczy, bo sam nie będzie umiał edytować pliku lang_pl

pilchu

Avatar: pilchu

2008-11-04 14:03

W przypadku który miałeś wcześniej też nie miałeś tej możliwości,

Ja wpisuje do przodu i ukrywam strony za pomocą statusu - uzupełniam lang_pl , admin wchodzi do edycji zmienia nazwe stronki i włącza status.

Pzd

WP

janekdz1

No avatar

2009-06-22 08:02

Mam troche dziwny problem
W pliku lang_pl.php mam taki wpis

$aPagesTypes = Array( => 3=> 3,  => 3=> 3=> 4=> 4'10' => '4''11' => '4'=> 5=> 6,  );


Odpowiednie menu wyswietla sie dla wszystkich glownych dzialow strony ( stron o id 1,2,3 i 4 ) oraz dla podstrony o id 9
Dla pozostałych wpisanych podstron nie wyswietla sie wogole zadne menu...
Czy ktos ma jakis pomysl co moze byc powodem?

Ucze sie...

Makaron

Avatar: Makaron

2009-06-22 10:48

Może dlatego, że w niektórych miejscach używasz znaku ' a w innych nie.

janekdz1

No avatar

2009-06-22 14:24

zmienilem i teraz mam taki kod

$aPagesTypes = Array( '1' => '3''2' => '4''3' => '5''4' => '6''7' => '3''8' => '3''9' => '3''9' => '4''10' => '4''11' => '4',);


w tym momencie menu wyswietla sie tylko przy nadrzednych stronach...

uzywam quick.cms v2.4 do tej pory zmienilem jedynie gorne menu na obrazkowe, przeskalowalem strone na inna rozdzielczosc, doinstalowalem fckeditor 2.6.4
czy ktores z w/w czynnosci mogly spowodowac, ze menu nie wyswietla sie na podstronach?
Mnie sie wydaje, ze raczej nie powinny miec nic wspolnego, ale wole sie upewnic, gdyz jestem jeszcze calkiem poczatkujacy

ktos ma jeszcze jakies pomysly?

Ucze sie...

natanael

Avatar: natanael

2010-09-16 13:56

ostatnio próbowałem rozwiązać problem różnych menu na stronach i zauważyłem że problem dwucyfrowych id znika, gdy funkcja

<?phpif( isset( $aMenuTypes[$iContent] ) )
$sMenuLeft $oPage->throwMenu'menu_left.tpl'$aPagesTypes[$iContent], $iContent);?>



powinna mieć postać

<?phpif( isset( $aPagesTypes[$iContent] ) )
$sMenuLeft $oPage->throwMenu'menu_left.tpl'$aPagesTypes[$iContent], $iContent);?>

serwis

Avatar: serwis

2011-02-22 16:46

Witam, wykorzystałam na mojej stronie opcję z pionowym menu stworzonym z podstron podpiętych do poszczególnych działów, tak jak 'Makaron' pisze w ostatnim wpisie tego wątku, ale mam problem - nie wiem, w jaki sposób ustawić opcję class="selected" dla linków w tym menu. Próbowałam wykorzystać opcję $aData[sSelected] z szablonu dla menu w szablonie 'pages_default.tpl' ale bezskutecznie. W jaki sposób mogę ustawić dla tych linków tą opcję? Będę wdzięczna za odpowiedź.

pxl666

Avatar: pxl666

2011-02-23 09:08

hm a nie prosciej byloby zmodyfikowac liste podstron zeby wygladala jak menu boczne?

serwis

Avatar: serwis

2011-02-23 12:20

Właśnie tak zrobiłam - kolejne tytuły podstron ustawiłam jako menu boczne - ale tera nie działa zaznaczanie wybranych pozycji w tym menu jako 'selected' tak, jak jest to w zwykłym menu... I o to właśnie pytam - jak ustawić ten element dla aktywnej pozycji w bocznym menu, stworzonym z listy podstron? Próbowałam ustawić dla tych linków w szablonie page_default.tpl opcję $aData[sSelected] tak, jak jest to ustawione w szablonach z menu dla poszczególnych linków w menu, ale to nie działa...
Może jeszcze coś trzeba gdzieś przestawić, ale od wczoraj nad tym siedzę, i nie mogę dojść do rozwiązania... Może ktoś wie, jak to zrobić?
Z góry dzięki za pomoc...

serwis

Avatar: serwis

2011-02-27 15:31

Proszę o pomoc w ustaleniu, w jaki sposób można ustawić opcję class="selected" dla wybranego linku do podstrony tak, jak jest to zrobione dla menu. Boczne menu na stronie zostało utworzone z linków do podstron i teraz jest problem z zaznaczaniem linków właśnie otwartych. Z góry dzięki za pomoc.

Makaron

Avatar: Makaron

2011-02-28 14:28

Przejrzyj sobie funkcje throwMenu() i listSubpages() w pliku core/pages.php.
Za zaznaczanie aktywnego elementu odpowiada ta linia:

$aData['sSelected'] = ( $aData['iPage'] == $iPageCurrent ) ? $oTpl->tbHtml$sFile'SELECTED' ) : null;


Podobnie można zrobić w funkcji listSubpages() a utworzoną zmienną $aData[sSelected] umieścić w szablonie templates/pages_default.tpl w bloku odpowiedzialnym za listowanie podstron.

Mak-Web.pl - Modyfikacje skryptów Q.Cart i Q.Cms

serwis

Avatar: serwis

2011-02-28 18:22

Bardzo dziękuję za pomoc, choć po wdrożeniu rozwiązania wybrane linki nie są oznaczone jako 'selected'. Tak, jak pisałeś, wstawiłam w pliku core/pages.php linijkę kodu odpowiadającego za nadawanie atrybutu

class="selected"

i oczywiście umieściłam w pliku templates/pages_default.tpl zmienną

$aData['sSelected']

oraz linijkę

<!-- BEGIN SELECTED -->class="selected"<!-- END SELECTED -->

pod każdym blokiem definiującym listę linków podstron, z których stworzone jest menu boczne.
Być może powinnam coś zmienić w tej linijce kodu:

$aData['sSelected'] = ( $aData['iPage'] == $iPageCurrent ) ? $oTpl->tbHtml( $sFile, 'SELECTED' ) : null;

Jeśli ktośma jakiś pomysł, będę wdzięczna za pomoc.

Makaron

Avatar: Makaron

2011-03-01 13:41

W funkcji listującej podstrony nie ma zmiennej $iPageCurrent. Zamiast niej chyba należy umieścić $iPage. Nie wiem dokładnie jak masz skonstruowaną tą funkcję.

Mak-Web.pl - Modyfikacje skryptów Q.Cart i Q.Cms

serwis

Avatar: serwis

2011-03-01 16:28

Dzięki za pomoc - próbowałam zmienić zmienną $iPageCurrent na zmienną $ iPage - bez większych sukcesów.

Poniżej funkcja 'listSubpages' umieszczona w pliku 'core/pages.php':

public function listSubpages( $iPage, $sFile, $iType){

if( isset( $this->aPagesChildrens[$iPage] ) ){
if( $iType > 1 ){
$oFile = Files::getInstance( );
}

$iCount = count( $this->aPagesChildrens[$iPage] );
$content= null;
$oTpl = TplParser::getInstance( );

for( $i = 0; $i < $iCount; $i++ ){
$aData = $this->aPages[$this->aPagesChildrens[$iPage][$i]];
$aData['iStyle'] = ( $i % 2 ) ? 0: 1;
$aData['sStyle'] = ( $i == ( $iCount - 1 ) ) ? 'L': $i + 1;
$aData['sSelected'] = ( $aData['iPage'] == $iPage ) ? $oTpl->tbHtml( $sFile, 'SELECTED' ) : null;

if( !empty( $aData['sDescriptionShort'] ) ){
$aData['sDescriptionShort'] = changeTxt( $aData['sDescriptionShort'], 'nlNds' );
$oTpl->setVariables( 'aData', $aData );
$aData['sDescriptionShort'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_DESCRIPTION_'.$iType );
}

$oTpl->setVariables( 'aData', $aData );

if( isset( $oFile ) && isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){
$aDataImage = $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]];
$oTpl->setVariables( 'aDataImage', $aDataImage );
$aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_IMAGE_'.$iType );
}
else{
if( $iType > 1 ){
$aData['sImage'] = $oTpl->tbHtml( $sFile, 'SUBPAGES_NO_IMAGE_'.$iType );
}
}

$oTpl->setVariables( 'aData', $aData );
$content .= $oTpl->tbHtml( $sFile, 'SUBPAGES_LIST_'.$iType );
} // end for

if( isset( $content ) ){
return $oTpl->tbHtml( $sFile, 'SUBPAGES_HEAD_'.$iType ).$content.$oTpl->tbHtml( $sFile, 'SUBPAGES_FOOT_'.$iType );
}
}
} // end function listSubpages


A tutaj fragment z szablonu 'pages_default.tpl":

<!-- BEGIN SUBPAGES_LIST_1 --><li class="l$aData[sStyle]"><h2><a href="$aData[sLinkName]" $aData[sSelected] >&laquo; $aData[sName]</a></h2>$aData[sDescriptionShort] </li><!-- END SUBPAGES_LIST_1 -->
<!-- BEGIN SUBPAGES_HEAD_1 --><ul class="subpagesList" id="subList1"><!-- END SUBPAGES_HEAD_1 -->
<!-- BEGIN SUBPAGES_FOOT_1 --></ul><!-- END SUBPAGES_FOOT_1 -->
<!-- BEGIN SELECTED -->class="selected"<!-- END SELECTED -->

<!-- BEGIN SUBPAGES_LIST_2 --><li class="l$aData[sStyle]">$aData[sImage]<h2><a href="$aData[sLinkName]" $aData[sSelected] >&laquo; $aData[sName]</a></h2>$aData[sDescriptionShort]</li><!-- END SUBPAGES_LIST_2 -->
<!-- BEGIN SUBPAGES_IMAGE_2 --><div class="photo"><a href="$aData[sLinkName]"><img src="$config[dir_files]$aDataImage[iSizeValue1]/$aDataImage[sFileName]" alt="$aDataImage[sDescription]" /></a></div><!-- END SUBPAGES_IMAGE_2 -->
<!-- BEGIN SUBPAGES_NO_IMAGE_2 --><!-- END SUBPAGES_NO_IMAGE_2 -->
<!-- BEGIN SUBPAGES_HEAD_2 --><ul class="subpagesList" id="subList2"><!-- END SUBPAGES_HEAD_2 -->
<!-- BEGIN SUBPAGES_FOOT_2 --></ul><!-- END SUBPAGES_FOOT_2 -->
<!-- BEGIN SELECTED -->class="selected"<!-- END SELECTED -->

Może ktoś wie, co powinnam zmienić w tych kodach, żeby opcja 'selected' pojawiała się w wybranych linkach podstron??? Z góry dzięki za pomoc.

boboo

Avatar: boboo

2011-03-01 23:27

Złe podejście do $iPage przekazywanej jako parametr funkcji listSubpages($iPage).
Jak zapewne wiesz, strony w QC mają unikatowe numery. I szukając w podzbiorze substron danej strony, nigdy nie znajdziesz w niej jej numeru.
Jeśli skanujesz array $aPagesChildrens (zbiór dzieci danej strony), to niestety - matki w nim nie znajdziesz. Dlatego pytanie podczas skanowania listy jej podstron (pętla "for") o to, czy dana substrona ma przekazany numer "matki" mija się z celem.
Musisz uporać się z dwoma problemami:
1. Klikając na daną podstronę, jej równorzędne siostry nie są w jej podzbiorze, więc nie będą na liście subpages i znikają.
2. Wyłowić "matkę" z jej własnego podzbioru.

Ad. 1:
Zasugeruj przy kliknięciu na podstronę, że robi to jej "matka". W ten sposób siostry tej podstrony będą normalnie wyświetlone.
Pod deklaracją funkcji:
function listSubpages($iPage,$sFile,$iType){
wpisz:
if(isset($this->aPagesParents[$iPage]))
$iPage=$this->aPagesParents[$iPage];
Tym wpisem mówisz funkcji: jeśli mam matkę, to skanuj JĄ i wyświetl mnie razem z listą rodzeństwa.
Tu chodzi o wyświetlenie listy. Zawartość/treść (pod)strony robiona jest gdzie indziej.
To byłby punkt pierwszy.
Teraz trzeba tylko dać tej podstronce "selected".

Ad. 2:
Jak widzisz, ta nieszczęsna podstrona albo nie ma samej siebie w swoim podzbiorze, albo zaraz pod deklaracją funkcji podmieniamy jej numer na matczyny. Nic to - będziemy cwańsi ;-)
Przechwycimy ten numer, zanim dojdzie do jakichkolwiek zmian.
Pod deklaracją funkcji wpisz:
$iChild=$iPage;
Czyli pierwsze 4 linijki funkcji listSubpages wyglądają tak:
function listSubpages($iPage,$sFile,$iType){
$iChild=$iPage;
if(isset($this->aPagesParents[$iPage]))
$iPage=$this->aPagesParents[$iPage];

i zmień:
$aData['sSelected']=($aData['iPage']==$iPage)?$oTpl->tbHtml($sFile,'SELECTED'):null;
na:
$aData['sSelected']=($aData['iPage']==$iChild)?$oTpl->tbHtml( $sFile,'SELECTED'):null;

http://it-service.kimla.de

Do góry
o nas | kontakt