PDA

Zobacz pełną wersję : różny wygląd niektórych stron



looooonger
22-05-2008, 15:35
Witam

Chciałbym aby w różny sposób wyświetlać niektóre podstrony. np. żeby moja głowna strona była wyświetla inaczej niż pozostałe. Najprostszy pomysł mam taki, żeby w szablonie wpisać po prostu:

if(??){
<!--styl dla strony głównej -->
}else{
<!--styl dla pozostałych stron-->
}

tylko że nie wiem w jaki sposób sprawdzić którą sekcję/kategorię/artykuł wyświetllamy, a na pewno jest funkcja która mi to sprawdzi. Poza tym może jest inne rozwiązanie?

pzdr

kurtz
22-05-2008, 17:13
jeśli inny styl strony to inna szata to przecież dla wyswietlanej pozycji mozna ustawić przypisaną szatę. i grzebanie sie w kodzie "jesli taka strona to taki styl" nie ma najmniejszego sensu.

looooonger
22-05-2008, 18:38
jeśli inny styl strony to inna szata to przecież dla wyswietlanej pozycji mozna ustawić przypisaną szatę. i grzebanie sie w kodzie "jesli taka strona to taki styl" nie ma najmniejszego sensu.


no ok tylko gdzie to się ustawia. możesz rzucić jakimś linkiem opisującym to?

pzdr

kurtz
22-05-2008, 18:53
w menu szablonów panelu admina

looooonger
22-05-2008, 19:01
w menu szablonów panelu admina

tak, ale albo coś przegapiam, albo się nie rozumiemy. tam widzę tylko opcję przypisz szablon do strony. a mi chodzi o to żeby powiedzmy sekcję z aktualnościami wyświetlić w inny sposób niż sekcję z dajmy na to prognozą pogody, i takie coś chyba trzeba zrelizować w szablonie? trzeba? przegapiłem coś?

waderski
22-05-2008, 19:43
Tak, dokładnie o to chodzi.
Łopatologicznie:
ROZSZERZENIA>SZABLONY>>klikamy w nazwę wybranej templatki,
a tam na dole jest PRZYPISANIE MENU. Wybierasz pozycję MENU po kliknięciu
której szablon ma się pojawić.
W każdej pozycji MENU można mieć inny szablon.

looooonger
22-05-2008, 20:04
Tak, dokładnie o to chodzi.
Łopatologicznie:
ROZSZERZENIA>SZABLONY>>klikamy w nazwę wybranej templatki,
a tam na dole jest PRZYPISANIE MENU. Wybierasz pozycję MENU po kliknięciu
której szablon ma się pojawić.
W każdej pozycji MENU można mieć inny szablon.

ups .. nie zauważyłem. Dzięki wielkie

pzdr

cspower
14-06-2008, 22:25
witam, podepne sie pod temat.
Zuwazylem, ze rozne szablony mozna podpinac pod rozne pozycje menu, ale jak w takim razie podpiac inny szablon podczas wyswietlania konkretnego artykulu?
Chodzi mi o to ze w menu mam tylko odnosniki do kategorii, a chcialbym miec inny szablon dla strony z lista artykulow kategorii i inny szablon juz przy wyswietleniu konkretnego artykulu (a to nie jest powiazane przeciez z menu). Jest na to jakas rada? Ewentulanie jak rozpoznac, ze czytelnik jest na poziomie artykulu, moglbym wtedy zmodyfikowac strukture szablonu jakimis if'ami.

inkos
14-06-2008, 23:42
Na extensions są:
http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,3051/Itemid,35/
http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,4252/Itemid,35/
http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,3129/Itemid,35/
http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,2130/Itemid,35/

Wystarczylo poszukac. :)

cspower
15-06-2008, 02:06
dzieki, jednak z tego co widze zaden z tych dodatkow nie jest pod wersje 1.5. No i szczerze mowiac to unikam nadmiernego rozbudowywania joomli o nowe a niewiele wnoszace komponenty, teraz generuje juz okolo 30 zapytan do bazy a chce miec dosc wydajny serwis. Czy naprawde nie da sie wychwycic, ze uzytkownik jest na poziomie artykulu? Opcja z ifem w szablonie bardzo by mi pasowala jesli nie ma innych prostych rozwiazan.

cspower
15-06-2008, 02:32
... zauwazylem ze w przypadku wyswietlania artykulu powieksza tablica $this->_metaTags['standard'] o pozycje author i title, co moze byc pewnym punktem zaczepienia do uzycia jako "IF" w szablonie, ale czy to nie za bardzo kombinowane i czy nie jest uzaleznione od ustawien systemowych? Moze jest cos prostszego? Bylbym wdzieczny za jakies podpowiedzi.

seha
18-06-2008, 19:02
Witam
Przerabiam dokładnie to samo.

Przypisywanie templatek raczej się u mnie nie sprawdzi, było by ich sporo a późniejsze ew. zmiany były by męczące, lepiej mieć jedna skórkę a więcej plików css.

Mój układ strony wygląda mniej więcej tak:

http://img68.imageshack.us/img68/6999/97631381kk6.gif

kilka stron głównych, każda potrzebuje innego css'a następnie każda z tych stron ma pod strony które również wyglądają inaczej.

Udało Ci się cspower to zrobić na if'ach? bo ja siedzę i wymyślić nie mogę :/

cspower
18-06-2008, 23:16
Wydaje mi sie, ze nasze problemy sa troche inne, ja potrzebowalem zmiany struktury layoutu na poziomie artykulu niezaleznie od pozycji menu czego nie mozna zrobic standardowym "Template managerem", i moje rozwiazanie jest takie:

if($this->_metaTags['standard']['author'] or $this->_metaTags['standard']['title'])
{
require_once($this->params['directory']."/".$this->template."/_index_a.php");
}
else
{
require_once($this->params['directory']."/".$this->template."/_index_k.php");
}

ale powyzszy if ma za zadanie tylko wychwycenie ze uzytkownik jest na poziomie artykulu i przypisanie wtedy odpowiednich nowych plikow z templatkami, u Ciebie jednak chodzi chyba o cos innego, bo nie wiem od czego chcesz uzaleznic te rozne szablony, proponuje zobaczyc standardowa templatke joomli "rhuk_milkyway", tam chyba jest zrobiona funkcjonalnosc jakiej potrzebujesz a dokladnie jest ona w index.php przy pozycjach:

<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/rhuk_milkyway/css/<?php echo $this->params->get('colorVariation'); ?>.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/rhuk_milkyway/css/<?php echo $this->params->get('backgroundVariation'); ?>_bg.css" type="text/css" />

seha
19-06-2008, 01:21
$this->params->get ma zgoła inny cel, to admin ustala w opcjach skórki jaki wygląd będzie miała strona, a ja chcę by wygląd zmieniał się bez jakiejkolwiek ingerencji. Wydaje mi się że chodzi nam dokładnie o to samo tylko że u mnie po za zmianą wyglądu artykułu/ów z danej kategorii dochodzą też strony główne które też muszą mieć różne wygłady.

Najprościej zobrazować to tak że masz stronę która np ma menu: Auta, Motory, Samochody itd w zależności na co klikniesz to innych wygląd, a na tych stronach spisy artów które będą miały też trochę inny wygląd.



nie wiem od czego chcesz uzaleznic te rozne szablony

No właśnie tu mam ten problem bo nie bardzo mam pod co się podpiąć, jak na razie złapałem się za Itemid. Spełnia swoje zadnie ale każdy dodany art musiał bym też uwzględniać w warunkach w pliku index.php a chciałbym tego unikać.

Na eng forum joomli znalem to, już po moich poprawkach:



<?php
$whole=$_SERVER['QUERY_STRING'];

$iid=strstr($whole, 'Itemid=');
$length=strlen($iid);
if ($length==8) {
$digits = substr($iid,7,1);
}
elseif ($length==9) {
$digits = substr ($iid,7,2);
}

$document =& JFactory::getDocument();

if ($digits == 1 || $digits == 2) {
$document->addStyleSheet( 'templates/skorka/css/start.css');
}
elseif ($digits == 3) {
$document->addStyleSheet( 'templates/skorka/css/kontakt.css');
}
else {
$document->addStyleSheet( 'templates/skorka/css/domyslny.css');
}
?>

Wyciąga numer Itemid i w zależności od niego dodaje do head odpowiedni link, mógłbym tak zrobić te strony główne bo one będą zrobione raz i nie ruszane. Problem leży z artykułami, mogę za pomocą tego samego skryptu wyciągnąć ich id ale to mi nic nie daje. Ideałem by było gdyby się dało wyciągnąć numer id kategorii artykułu wyświetlanego w <jdoc:include type="component" />, wtedy cała dana kategoria miała by dany styl i do tego dążę.
Zastanawia mnie też czy ten skrypcik będzie działał jak odpalę przyjazne adresy, ale to później.

Musze jeszcze twój skrypcik przeanalizować bo może zamiast kategorii użył bym autora artykułu jako id, dając go takiego samego dla artów z danej kategorii.

Jeśli ktoś się połapie o co mi chodzi to moje uznanie :), co ciekawe w ogóle nie miałem tego robić w joomla tylko siedząc pomysłem czy dało by się to zrobić, a teraz głupio by było się poddać :P.


--------------------

Kurcze przecież da się wyciągnąć kategorie w której jest artykuł tym skryptem, więc można powiedzieć że już jestem w ogródku i witam się gąska :), ale teraz czas spać, bo myslenie coś słabo mi idzie.

cspower
19-06-2008, 02:28
na Twoim miejscu zrobilbym to chyba tak, ze jednak pozycje menu: Auta, motory itp, podpial bym jako osobne szablony Template managerem, a dopiero w tych poszczegolnych szablonach uzyl czegos takiego jak te moje ify z autorem i tytulem, zeby poszczegolny szablon rozpoznawal czy jest na poziomie artykulu i wtedy dodatkowo robil odpowiednie zmiany szablonu dla artykulu.

seha
19-06-2008, 13:19
Done, tak jak chciałem, poprawiłem trochę skrypcik teraz wygląda to tak:



<?php
$whole=$_SERVER['QUERY_STRING'];

$iid=strstr($whole, 'catid=');

if (is_string($iid)) {

$length = strpos($iid,':');

if ($length==7) {
$kategoria = substr($iid,6,1);
}
elseif ($length==8) {
$kategoria = substr ($iid,6,2);
}

$document =& JFactory::getDocument();
if ($kategoria == 7 ) {
$document->addStyleSheet( 'templates/urszula/css/kat7.css');
}
elseif ($kategoria == 5) {
$document->addStyleSheet( 'templates/urszula/css/kat5.css');
}
elseif ($kategoria == 8) {
$document->addStyleSheet( 'templates/urszula/css/kat8.css');
}
else {
$document->addStyleSheet( 'templates/urszula/css/domyslny_art.css');
}

}

else {

$iid=strstr($whole, 'Itemid=');
$length=strlen($iid);

if ($length==8) {
$Itemid = substr($iid,7,1);
}
elseif ($length==9) {
$Itemid = substr ($iid,7,2);
}

$document =& JFactory::getDocument();
if ($Itemid == 1 || $Itemid== 2) {
$document->addStyleSheet( 'templates/urszula/css/styl1.css');
}
elseif ($Itemid == 5) {
$document->addStyleSheet( 'templates/urszula/css/styl2.css');
}
elseif ($Itemid == 8) {
$document->addStyleSheet( 'templates/urszula/css/styl3.css');
}
else {
$document->addStyleSheet( 'templates/urszula/css/styl1.css');
}
}
?>

Przy pomocy niego i ew. małych modyfikacji możemy zmienić wygląd dowolnej strony w joomla czy wygląd artykułów z danej kategorii.

Możemy użyć wszystko co wypluwa nam joomla w pasku adresu,
Całość działa również gdy używamy „przyjazne adresy”.

Na upartego cspower można użyć w twoim przypadku czegoś takiego:


if($Itemid == 5) czy if($kategoria == 5)
{
require_once($this->params['directory']."/".$this->template."/_index_a.php");
}
else
{
require_once($this->params['directory']."/".$this->template."/_index_k.php");
}

Ja osobiście mam małe zmiany więc zostawiłem wszytko w jednym pliku np:


<?php
if ($Itemid == 5) {
?>
<div id="kontakt_box">
<jdoc:include type="modules" name="kontakt_box" />
</div>
<?php
}
?>

Aha dlaczego nie użyłem dla każdej strony innego szablonu? Po prostu przy późniejszych zmianach musiał bym się bawić w kopiowanie plików css bo 3/4 jak nie więcej mam tych samych parametrów we wszystkich wyglądach które chce użyć. Więc akurat w moimi przypadku w/w skrypt ma sens.

Mam nadzieje że jeszcze komuś się to przyda. Pozdro.

cspower
24-06-2008, 15:36
Jasne, wlaczylem sobie przyjazne adresy i w ogole nie zauwazylem, ze wszysko przychodzi przez $_GET. Takze moje kombinacje mozna juz wyrzucic do kosza. :)

seha
25-06-2008, 11:48
U mnie na szczęście działa bez problemu, jeszcze dodałem sobie różne favicony dla rożnych stron :).

Jest też mały błąd w kodzie wyżej który wyszedł w praniu.


Linie


$length = strpos($iid,':');w pierwszej pętli trzeba zastąpić tym:


if (strstr($iid, '%') == is_string($iid)) { $znak = '%';} else { $znak = ':';}
$length = strpos($iid, $znak);Artykuły na które wejdziemy przez linki z np. modułów "popularne" i innych mają po numerze kategorii(itcat) "%" a nie ":" więc trzeba było to uwzglednic.

Pozdro

svobod
18-07-2008, 12:37
Tak, dokładnie o to chodzi.
Łopatologicznie:
ROZSZERZENIA>SZABLONY>>klikamy w nazwę wybranej templatki,
a tam na dole jest PRZYPISANIE MENU. Wybierasz pozycję MENU po kliknięciu
której szablon ma się pojawić.
W każdej pozycji MENU można mieć inny szablon.

odswieze temat bo nie moge znalezc rozwiazania:

zrobilem wlasny szablon, chce ustawic rozne jego wersje zaleznie od wybranej pozycji menu ale pole "Przypisanie menu" mam puste...
mianowicie:

"Pozycje menu: Nie można przypisać domyślnego szablonu"

jak dodac pozycje menu do wyboru akurat przy robionym przeze mnie szablonie bo zglupialem?

z gory dzieki za info, pozdrawiam

svobod
21-07-2008, 15:01
Odwoluje moje poprzednie pytanie. Bylo tak durne ze az mi wstyd... Chyba rzeczywiscie zglupialem, na szczescie tylko na chwile ;-)

Ale poniewaz ciagle bawie sie roznymi wygladami stron dla roznych pozycji menu i dla roznych artykulow to mam kolejne pytanie, tym razem chyba troche madrzejsze.

Kiedy na stronie: http://freedom.pdg.pl/joomla/index.php klikamy w gorne logo po lewej lub prawej stronie ("Joanna Joy" albo "fotografie") to wchodzimy do jednej z pozycji menu "TopMenu", dla ktorej ustalilem inny szablon - pojawia sie po lewej stronie "TopMenu" a po prawej tresc artykulu.

Jak uzyskac taki sam efekt, po kliknieciu na tytul artykulu po prawej stronie lub "Read more"? Chodzi mi o to ze szablon sie zmienia i tak powinno byc - jest ustawiony domyslnie i tylko dla pozycji Home w MainMenu mam inny szablon. Porblem polega na tym ze TopMenu wyswietla mi sie tylko po kliknieciu na jedna z jego pozycji (jedna na stale przypisalem pod linki w logo - "Joanna Joy" i "fotografie") Kiedy wyswietle artykul klikajac na jego tytul lub "Read more" nie wyswietla sie TopMenu, ktore powinno byc po lewej stronie...

Macie jakis pomysl? Z gory dzieki za pomoc

Rybik
21-07-2008, 15:15
wyłącz SEF URL, przyjrzyj sie adresom bloga i artykułu, skojarz z $_REQUEST :)

svobod
21-07-2008, 16:13
wyłącz SEF URL, przyjrzyj sie adresom bloga i artykułu, skojarz z $_REQUEST :)


hiehie... dzieki Rybik za podpowiedz ;-)

na szczescie nie trzeba sie bawic z REQUESTAMI i przyjaznymi URL

odnosnik w moim TopMenu po prostu powinien wskazywac na artykul, do ktorego jest link w blogu na FrontPage. jedyny klopot to dodawanie z kazdym nowym artykulem kolejnej opcji do menu ale takie byly zalozenia dzialania witryny, tak ze wszystko w porzadku

pozdrawiam i dziekuje za szybka reakcje i pomoc ;-)

QkiZ
27-10-2009, 11:40
Odwoluje moje poprzednie pytanie. Bylo tak durne ze az mi wstyd... Chyba rzeczywiscie zglupialem, na szczescie tylko na chwile ;-)

Ale poniewaz ciagle bawie sie roznymi wygladami stron dla roznych pozycji menu i dla roznych artykulow to mam kolejne pytanie, tym razem chyba troche madrzejsze.

Kiedy na stronie: http://freedom.pdg.pl/joomla/index.php klikamy w gorne logo po lewej lub prawej stronie ("Joanna Joy" albo "fotografie") to wchodzimy do jednej z pozycji menu "TopMenu", dla ktorej ustalilem inny szablon - pojawia sie po lewej stronie "TopMenu" a po prawej tresc artykulu.

Jak uzyskac taki sam efekt, po kliknieciu na tytul artykulu po prawej stronie lub "Read more"? Chodzi mi o to ze szablon sie zmienia i tak powinno byc - jest ustawiony domyslnie i tylko dla pozycji Home w MainMenu mam inny szablon. Porblem polega na tym ze TopMenu wyswietla mi sie tylko po kliknieciu na jedna z jego pozycji (jedna na stale przypisalem pod linki w logo - "Joanna Joy" i "fotografie") Kiedy wyswietle artykul klikajac na jego tytul lub "Read more" nie wyswietla sie TopMenu, ktore powinno byc po lewej stronie...

Macie jakis pomysl? Z gory dzieki za pomoc
Jak udało Ci się rozwiązać ten problem? Ja też zrobiłem swój szablon i też nie mogę zmienić przypisania jego do konkretnego miejsca w menu.

svobod
27-10-2009, 12:05
Juz nie pamietam czy udalo mi sie rozwiazac ten problem - porzucilem projekt a raczej klientka z niego zrezygnowala ;) Tak czy inaczej od tamtej pory nie mialem do czynienia z joomlą

Przykro mi ze nie moglem pomoc

Pozdrowienia i powodzenia :)

QkiZ
27-10-2009, 12:17
A pisałem szablon pod Joomle 1.0 czy 1.5 :?: