PDA

Zobacz pełną wersję : zmiana koloru tła w zależności od sekcji



slawek19x
11-10-2012, 19:42
Witam, chciałbym zmienić kolor tła na podany w zależności od sekcji w joomla 1.5

na stronie
http://joomla.jogger.pl/2010/03/09/zmiana-tla-strony-w-zaleznosci-od-podstrony/
znalazłem coś takiego


<?php // tablica powiązań Itemid
<-> grafika tła $bg_images = array(
"53" => "1.jpg",
"54" => "2.jpg",
"default" => "3.jpg" // grafika domyślna );
$itemID_value = JRequest::getCmd('Itemid');
$bg_image = (isset($bg_images[$itemID_value])) ? $bg_images[$itemID_value] : $bg_images["default"];
$url =& JURI::getInstance(); ?>
<style type="text/css">
body{background:#fff url('<?php echo $url->root(); ?>templates/<?php echo $this->template; ?>/images/backgrounds/<?php echo $bg_image; ?>') center 0!important;}
</style>


Czy da się to zmodyfikować, żeby kolor tła lub obraz tła zmieniał się w zależności od sekcji a nie artykułu?

Rzast
17-10-2012, 15:35
Też jestem ciekawy, tylko zależałoby mi na kolorowaniu tła artykułów, ze względu na nadrzędną kategorię (a nie sekcję, jak kolega powyżej błędnie napisał).
Jak to u mnie wygląda:
Kategoria główna
|-Kategoria st1 1
| |-Kategoria st2 1
| | \-Artykuł 1
| |-Kategoria st2 2
| \- Artykuł 2 (Kategorii St1)
|-Kategoria st1 2
| |-Kategoria st2 1
| |-Kategoria st2 2
|-Kategoria st1 3

... i chodziłoby o wyłuskanie Kategorii stopnia 1
Jest w kodzie templatki odwołanie do $this->item i jest tak m.in. (dla Artykułu 1):
category_route - ścieżka aliasów kategorii do danego artykułu, czyli: kategoria-glowna/kategoria-st1-1/kategoria-st2-1
parent_route - ścieżka aliasów kategorii do danej kategorii, czyli: kategoria-glowna/kategoria-st1-1
Ale dla Artykułu 2 jest:
category_route - ścieżka aliasów kategorii do danego artykułu, czyli: kategoria-glowna/kategoria-st1-1
parent_route - ścieżka aliasów kategorii do danej kategorii, czyli: kategoria-glowna

I teraz tak: jak rozpoznawać kategorie stopnia 1? a jak się zmieni alias? nie ma takiego czegoś (w znaczeniu _route) po nr id, jest tylko parent_id, czyli kategoria nadrzędna.
Potrzebuję to do strony Zespołu Szkół (dla rozróżnienia artykułów ze Szkoły Podstawowej, Gimnazjum i Hali Sportowej) i raczej nie będzie artykułów kategorii głównej.

Dziudek
18-10-2012, 07:55
Jeżeli chodzi o kolorowanie tła artykułów to proponowałbym wykorzystać istniejące w Joomla! rozwiązanie tzn. mechanizm nadawania klas dla poszczególnych pozycji menu - wtedy można się odwołać do danej klasy w selektorze CSS i zmienić tło artykułu np.


.kategoriaX .selektorArtykułu { background: #ffa; }

Rzast
18-10-2012, 08:54
Dziudek
Chyba mnie nie zrozumiałeś. Chodzi mi o to, że jak w menu klikam na kategorię główną (w tym wypadku Zespół Szkół) to mam artykuły ze wszystkich kategorii w postaci bloga. I właśnie tam chcę podkolorowane: Szkoła na niebiesko, Gimnazjum na żółto a Hala na zielono - taka jakby tablica korkowa z kolorowymi karteczkami. Tylko jak to wyłapać, co gdzie należy?

Dziudek
18-10-2012, 10:20
Hmm, w tym wypadku to chyba jedyne wyjście to rozbić category_route poprzez explode z użyciem "/" jako separatora i policzyć ile jest elementów - jeżeli są dwa to kategoria jest pierwszego poziomu - takie IMHO najszybsze rozwiązanie jakie mi się nasuwa.

Rzast
18-10-2012, 10:34
... albo wyrażenia regularne (Twoja metoda szybsza).
Ale mnie bardziej chodzi o id niż o aliasa, id będzie (mam nadzieję) niezmienne, a z aliasem różnie bywa...
Chyba w takim razie zostaje bezpośrednie odwołanie do MySQL'a :-(

Dziudek
18-10-2012, 10:45
Ewentualnie jeżeli chodzi o stylowanie CSS można pokombinować z układem klas CSS tak by np. poprzez selektory typu:

A.class + B
A.class + B + C

i kolorować odpowiednio kategorie - wtedy jedyne co może mieć wpływ na zmianę kolorowania to kolejność kategorii.

Bazyl
18-10-2012, 11:20
Hej,

A nie można dać w szablonie warunku, który dodaje klasę css w zależności od kategorii artykułu?

Dziudek
18-10-2012, 11:23
Ale tu się właśnie rozchodzi o to jak ten warunek rozpoznać ;)

Rzast
18-10-2012, 12:16
Właśnie, bo z resztą (php, html, css) sobie poradzę...

Rzast
19-10-2012, 11:47
Dobra. Na razie wpiszę to w ten sposób, że zrobię
$styl=explode('/',$this->item->category_route);, sprawdzę, czy jest drugi element, wezmę jego nazwę do switcha i ustawię odpowiednią klasę w divie (z warunkiem default oczywiście) :-). A jak wpadnę na pomysła, jak to poprawić, to usunę tę protezę i pochwalę się w tym temacie ;-)

Dziudek
19-10-2012, 11:52
Pamiętaj tylko, że zapis powinien wyglądać następująco:


explode('/',$this->item->category_route);

;)