’Tło w kategoriach’ – zgaduj zgadula co dokładnie masz na myśli. Ogólnie, najłatwiej by było zrobić tak, że jakiś element który ma tło, ma jakieś id czy kasę, będzie dostawał dodatkową klasę związaną z kategorią, np, z jej nazwą czy z ID, i potem będziesz mógł w plikach css kombinować z różnymi tłami – i dziedziczenie załatwi sprawę pobierania dwóch różnych obrazków tła. Lektura która Ci się powinna przydać do tego:
http://codex.wordpress.org/Function_Reference/is_category
http://codex.wordpress.org/Function_Reference/single_cat_title
Thread Starter
edrol
(@edrol)
w pliku style.css mam cos takiego:
body {
background: #000 url( hxxp://mysite.com/costam.jpg ) top left repeat-x;
background-attachment: fixed;
}
Dzieki temu cala strona ma tło. Ale jak ustawić is_category w css tak aby wybrana kategoria miała inne tło niż hxxp://mysite.com/costam.jpg
?
is_category() to jest funkcja WP, napisana w php, i zadziała tylko w kodzie strony, a nie w kodzie css – wstawiasz ją w pliku header.php
Thread Starter
edrol
(@edrol)
Znalazłem taki i podobne kody jak poniżej, dostosowałem go aby dla kategorii 467 i 900 pokazywane było inne tło na stronie. Jednak gdy wstawiam go na końcu header.php strona zgłasza błąd.
<?php if (is_category('467')) { ?>
<?php background url(http://images29.fotosik.pl/15/ed9bba73eb739549.jpg) top left repeat-x; background-attachment: fixed; ?>
<?php } elseif (is_category('900')) { ?>
<?php background url(http://images29.fotosik.pl/15/ed9bba73eb739549.jpg) top left repeat-x; background-attachment: fixed; ?>
<?php } else { ?>
<?php background url(http://img715.imageshack.us/img715/1065/backgrounduks.jpg) top left repeat-x; background-attachment: fixed; ?>
<?php } ?>
Próbowałem jeszcze wstawiać body {
<?php if (is_category('467')) <strong>body</strong> { ?>
<?php background url(http://images29.fotosik.pl/15/ed9bba73eb739549.jpg) top left repeat-x; background-attachment: fixed; ?>
ale to tez nie jest to. Kod ciągle nie działa. Czy mógłbyś mnie poprawić co robię źle?
Hmm, nie znasz podstawowej składni php. Podaj adres strony, oraz linki do różnych obrazków tła – już przygotowanych.
Thread Starter
edrol
(@edrol)
adres strony to hxxp://eziny.net
a tło dla głównej strony to :
hxxp://img715.imageshack.us/img715/1065/backgrounduks.jpg
a dla kategorii:
hxxp://img218.imageshack.us/img218/8751/thewestbackground1.jpg
A więc to będzie mniej więcej taki kod:
<body id="cos_tam" class="xxx<?php if(is_category(467)){ echo " category_467"; } ?>">
I w css jeszcze coś takiego:
.category_467 {
background: url('img/thewestbackground1.jpg') !important;
}
Oczywiście plik tła musi być na tym samym serwerze co strona, najlepiej w katalogu z szablonem, a nie na zewnętrznym serwerze.
Thread Starter
edrol
(@edrol)
W header.php mam:
<body <?php body_class() ?> id="bp-default">
zmieniam to na:
<body id="bp-default" class="xxx<?php if(is_category(467)){ echo " category_467" } ?>">
i dostaje taki błąd:
Parse error: syntax error, unexpected '}', expecting ',' or ';' in .../header.php on line 42
jaki może być tego powód?
Możesz też to zrobić w ten sposób (działa na pewno). WordPress będzie za każdym razem sprawdzał czy aktualna strona jest kategorią, jeżeli jest to doda klasę np. 'category_2′ do znacznika <body>. Tak jak wcześniej było napisane do CSS musisz napisać jeszcze regułę: .category_2 {}
<?php
if (is_category()) {
$cat_obj = $wp_query->get_queried_object();
$cat_id = $cat_obj->term_id;
$cat = 'category_' . $cat_id;
}
?>
<body id="bp-default" class="<?php echo $cat; ?>">
Mój błąd, nie zauważyłem że zapomniałem ;
za echo. Ale to nawet dobrze, gdyż od razu zapoznałem się z funkcją body_class()
– jest genialna do tego co potrzebujesz 😉 , więc ją zostaw, dokładnie tak jak było. Wtedy przykładowe klasy jakie ma <body>
:
archive category category-thewestporadniki
dla linka:
eziny.net/category/thewest/thewest_poradniki/
Więc zostaje tylko dopisać dany kod do css, w tym przypadku, zmiana tła dla tej kategorii, to:
.category-thewestporadniki {
background: url('img/thewestbackground1.jpg') !important;
}
Thread Starter
edrol
(@edrol)
Dzięki chłopaki za pomoc! Oba sposoby działają bardzo dobrze. Zdecydowałem się zastosować do porady amistad18 i oprzeć css na body_class(), ponieważ jest najmniej „inwazyjny”.
Miałem tylko problem z umiejscowieniem grafiki na background. Z jakiegoś powodu img/thewestbackground1.jpg
nie działał. Ale gry wrzuciłem grafikę do głównego katalogu z szablonem tzn. thewestbackground1.jpg
działa bez problemu.
Thread Starter
edrol
(@edrol)
Jednak za szybko pochwaliłem body_class()
, ponieważ okazuje się, że występuje problem z tłem w podkategoriach.