Jakiś czas temu, przy okazji pisania mojej pierwszej serii kursów dotyczących tworzenia i modyfikacji szablonów do WordPress opisywałem, jak dodać do motywu jeden dynamiczny sidebar, do którego można dodawać widgety z poziomu panelu administracyjnego.
Ostatnio tworzyłem szablon do WordPress, w którym koniecznie był potrzebny także drugi sidebar. No i dlatego dzisiaj pójdziemy o krok dalej i dodamy kolejne sidebary.
Specjalnie na tę okazję przygotowałem sobie rysunek poglądowy w dokumentach Google, na podstawie którego wyjaśnię, co chcę osiągnąć i w jaki sposób. Zapraszam.
Dynamiczny sidebar razy 3
Tak! Będą 3 dynamiczne sidebary. Ale jeszcze zanim cokolwiek zaczniemy robić przydałoby się zakreślić plan działania i zakreślić wszystkie cele. 🙂
W pierwszej kolejności należy zastanowić się, co w danych sidebarach ma się mieścić. Akurat w tym przykładzie, chcę mieć dwa pionowe sidebary i jeden poziomy. Warto także rozważyć, jak zorganizujemy poziomy sidebar – czy każdy widget będzie oddzielną kolumną, a może warto z każdej kolumny w poziomym rzędzie zrobić oddzielne sidebary? Osobiście skłaniałbym się ku drugiemu rozwiązaniu ponieważ tak zbudowana stopka jest dużo bardziej elastyczna. Jeżeli jeden widget w kolumnie będzie za niski, to może dziwnie to wyglądać. Dlatego lepiej mieć nad tym kontrolę.
Sidebar jako stopka, może wydawać się trochę na siłę, ale czego nie robi się dla dobra nauki…
Jeden sidebar czy dwa?
Zacznijmy od pytania, czy tworzysz od nowa szablon do WordPressa, czy edytujesz istniejący. Pierwszy przypadek jest trochę łatwiejszy – znamy swój kod, wiemy co w nim mamy, czego nie i w tym przypadku najczęściej tylko dodajemy kod. W przeciwnym wypadku trzeba będzie odnaleźć kod starego sidebara, odszukać funkcję go rejestrującą i tak dalej.
Tworzenie wielu sidebarów w nowym motywie
W pierwszym przypadku sprawdzamy najpierw, czy mamy już plik functions.php
w katalogu głównym naszego motywu. Jeżeli tak, to otwieramy do edycji, jeżeli nie – tworzymy nowy plik.
Najprostsze użycie funkcji register_sidebars()
wygląda następująco:
function wpa_widgets_init() { register_sidebars(); } add_action( 'widgets_init', 'wpa_widgets_init' );
Jeżeli zostawimy to w taki sposób, zostanie utworzony jeden sidebar z domyślnymi ustawieniami:
<?php $args = array( 'name' => sprintf(__('Sidebar %d'), $i ), 'id' => "sidebar-$i", 'before_widget' => '<li id="%1$s">', 'after_widget' => '</li>', 'before_title' => '<h2>', 'after_title' => '</h2>' ); ?>
Nas to oczywiście nie satysfakcjonuje, bo potrzebujemy trzech sidebarów. Aby utworzyć wspomniane trzy sidebary wystarczy w argumencie funkcji wpisać liczbę potrzebnych sidebarów:
<?php function wpa_widgets_init() { register_sidebars(3); } add_action( 'widgets_init', 'wpa_widgets_init' ); ?>
ja dodatkowo chcę trochę zmodyfikować domyślne ustawienia, więc do pliku functions.php
ostatecznie dodaję tak zdefiniowaną funkcję:
<?php function wpa_widgets_init() { register_sidebars(3, array( 'before_widget' => '<div class="wp-widget" id="%1$s">', 'after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>') ); } add_action( 'widgets_init', 'wpa_widgets_init' ); ?>
Niezależnie od tego, który sposób wybraliśmy przy definiowaniu sidebarów, to już teraz w Panelu administracyjnym → Wygląd → Widgety powinny pojawić się sidebary z możliwością dodawania do nich widgetów. To jeszcze nie koniec, bo WordPress w tym momencie nie wie, gdzie który sidebar wyświetlić.
Teraz w kodzie naszej strony należy znaleźć odpowiednie miejsca, w których sidebary mają się wyświetlać. Gdy już takie miejsce znajdziemy, wklejamy tam poniższy kod:
<?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(1)): ?> <h4>Treść komunikatu, który będzie się pojawiał jeżeli żaden widget nie znajduje się w sidebarze.</h4> <?php endif; ?>
Szczególną uwagę należy zwrócić na fragment w pierwszej linijce:
(...) !dynamic_sidebar(1): ?>
Argument funkcji – 1
, to identyfikator przypisany do sidebara. Oznacza to, że w tym miejscu będą pojawiać się widgety „wsadzone” do Panelu bocznego nr 1
. Postępując analogicznie dla kolejnych sidebarów, wstawiamy ten sam kod w kolejnych miejscach szablonu pamiętając o zmienianiu wskazanego parametru funkcji.
Dla drugiego sidebara kod wygląda tak:
<?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(2)): ?> <h4>Treść komunikatu, który będzie się pojawiał jeżeli żaden widget nie znajduje się w sidebarze numer 2.</h4> <?php endif; ?>
I dla trzeciego:
<?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(3)): ?> <h4>Treść komunikatu, który będzie się pojawiał jeżeli żaden widget nie znajduje się w sidebarze numer 3.</h4> <?php endif; ?>
Zapisujemy zmiany w plikach, na których pracowaliśmy. Po odświeżeniu strony widgety powinny się już wyświetlać (albo odpowiedni komunikat, jeżeli nie dodaliśmy jeszcze żadnych widgetów).
Dodanie kolejnego sidebara w istniejącym motywie
W tym przypadku sprawa nie jest dużo bardziej skomplikowana. Najpierw trzeba odszukać obecny kod, który rejestruje sidebar, a następnie trochę go zmodyfikować.
Obecnie bardzo trudno spotkać szablon, który posiada tylko jeden sidebar, dlatego w większości przypadków wystarczy tylko jedna drobna zmiana. Dla przykładu weźmy szablon Twenty Eleven, czyli ten który obecnie instaluje się zawsze z WordPressem. Po jego włączeniu, w Panelu administracyjnym → Wygląd → Widgety dokładnie widać że ma aż 5 sidebarów, które rejestrowane są w następujący sposób:
register_sidebar( array( 'name' => __( 'Main Sidebar', 'twentyeleven' ), 'id' => 'sidebar-1', 'before_widget' => '<aside id="%1$s">', 'after_widget' => "</aside>", 'before_title' => '<h3>', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Showcase Sidebar', 'twentyeleven' ), 'id' => 'sidebar-2', 'description' => __( 'The sidebar for the optional Showcase Template', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s">', 'after_widget' => "</aside>", 'before_title' => '<h3>', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Area One', 'twentyeleven' ), 'id' => 'sidebar-3', 'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s">', 'after_widget' => "</aside>", 'before_title' => '<h3>', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Area Two', 'twentyeleven' ), 'id' => 'sidebar-4', 'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s">', 'after_widget' => "</aside>", 'before_title' => '<h3>', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Area Three', 'twentyeleven' ), 'id' => 'sidebar-5', 'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ), 'before_widget' => '<aside id="%1$s">', 'after_widget' => "</aside>", 'before_title' => '<h3>', 'after_title' => '</h3>', ) );
Czyli w sposób, który opisywałem dla pojedynczego sidebara. Plus tego rozwiązania jest taki, że możemy określić dokładną nazwę sidebara (której później musimy się dokładnie trzymać), i dla konkretnego przypadku ustawić inne klasy, identyfikatory i nagłówki otaczające elementy widgetów. Minus – kod strasznie się wydłuża.
Dodanie w tym przypadku kolejnego sidebara to skopiowanie, albo dodanie kolejnej funkcji register_sidebar()
w functions.php
, a następnie w miejscu, w którym panel ma się pojawić:
<?php if ( is_active_sidebar( 'sidebar-5' ) ) : ?> <?php dynamic_sidebar( 'sidebar-5' ); ?> <?php endif; ?>
Jest to kod wyświetlający widgety dla sidebara o identyfikatorze sidebar-5
. Dla kolejnego sidebara w miejsce „sidebar-5” należy wpisać identyfikator, który nadany został podczas rejestrowaniu nowego sidebara w poprzednim kroku. Warto zwrócić tutaj uwagę na funkcję is_active_sidebar()
, która sprawdza, czy w tym konkretnym sidebarze znajdują się widgety i odpowiednio albo je wyświetla albo nie.
W razie pytań dotyczących rejestrowania i wyświetlania widgetów/sidebarów/widget area zapraszam do sekcji komentarzy.
Aktualizacja 2017-07-11
Wpis doczekał się aktualizacji. Usunąłem dość potężny akapit, który tak na prawdę nie wiele wnosił do artykułu. Mam nadzieję, że w takiej postaci będzie jeszcze bardziej pomocny. 🙂
Witam, właśnie walczę z dodaniem drugiego sidebar’a do gotowego już motywu. O ile temu zadnaiu podołałem, stanąłem przed kolejnym problemem. Otóż zależy mi, aby ten drugi sidebar był TYLKO na stronie głównej. Po przejściu do kategorii czy jakimkolwiek myszkowaniu na stronie poza głowną, chciałbym, aby już go nie było. W jaki sposób mogę osiągnąć ten cel? Serdecznie pozdrawiam i dziękuję za tego bloga 🙂 bardzo mi pomaga.
Dziękuję za miłe słowa! Jeżeli chodzi o Twój problem to albo coś takiego:
http://codex.wordpress.org/Function_Reference/is_home
Albo ogólnie conditional tags:
http://codex.wordpress.org/Category:Conditional_Tags
Pozdrawiam
Dziękuję za linki! Będę testował tą drogę 🙂
Mam jeszcze taką trudność: zarejestrowałem sidebar i jest widoczny w panelu administracyjnym, natomiast nie wiem gdzie go wcisnąć, aby był wyświetlany na mojej stronie. Znalazłem porady, że chodzi o plik index.php ale tam też nie znajduję odpowiednich komend dot sidebar. Czy mogę prosić o pomoc? 🙂
Tak naprawdę może, ale nie musi chodzić o plik index.php. Wszystko zależy od tego jak motyw jest zbudowany, bo przykładowo dla prostych szablonów czasem nie ma potrzeby rozbijania kodu na pliki, a czasem w motywie jest nawet po kilka plików nagłówka, sidebara, czy stopki.
Jeżeli sidebar jest zarejestrowany i pojawia się w kokpicie to właściwie połowa sukcesu, teraz wystarczy tylko w odpowiednim miejscu umieścić funkcję która wygeneruje kod html widgetów. Jeżeli chcesz, aby sidebar pojawiał się tylko na stronie głównej to faktycznie będzie to index.php, ale pod warunkiem że twoją stroną główną jest lista ostatnich wpisów (wypisów), no i istnieją inne pliki dla pojedynczego wpisu (single.php) strony statycznej (page.php) itd. w przeciwnym wypadku plik może być użyty do wyświetlenia zawartości jak w tym przykładzie wpisu czy strony.
Zabezpieczyć się możesz korzystając właśnie z conditional tags WordPressa. Możesz zrobić np. coś takiego:
Powyższe, sprawdza czy wyświetlana jest strona główna (może zależeć od tego czy masz ustawione w opcjach stronę główna jako ostatnie posty, czy stronę statryczną). Drugi, wewnętrzny if sprawdza czy sidebar nie jest pusty (czy są umieszczone na nim jakieś widgety) i jeżeli tak to wyświetli sidebar.
W razie pytań pisz śmiało, chętnie pomogę.
Witam, jak zrobić, aby jeden sidebar wyświetlał się na wszystkich stronach statycznych, a na jednej stronie (nie chodzi mi o stronę główną) i jej podstronach wyświetlał się inny sidebar?
Można to zrobić przy pomocy conditional tags WordPressa… Trochę mało informacji, aby dokładnie określić o co chodzi i dobrać najłatwiejsze rozwiązanie, ale spróbujmy… 🙂 Powiedzmy, że w pliku page.php (czyli główny plik odpowiedzialny za generowanie stron statycznych) zastosujemy taką konstrukcję:
Dla skrócenia i uproszczenia kodu zamiast funkcji wyświetlających dany sidebar, wczytuje je z plików (tutaj sidebar.php i sidebar-drugi.php).
Zakładam, że strona dla której chcesz wczytywać inny sidebar posiada swoją nazwę więc można to zrobić tak:
Dla wybranej pojedynczej strony czy kilku prosto, dla wszystkich podstron już trzeba trochę kombinować, znalazłem coś takiego i nie sprawdzałem czy działa, ale w sumie powinno:
http://wordpress.org/support/topic/is-page-child-grandchild-etc?replies=6#post-1512527
http://codex.wordpress.org/Function_Reference/is_page
PS W bardziej rozbudowanych motywach może być więcej szablonów(Page Templates), których można użyć do stworzenia strony statycznej. Rozwiązanie odnosi się i będzie działać tylko w stosunku do stron w 'standardowym’ szablonie, chyba, że konstrukcję przeniesiemy również do tamtych. 🙂
Dziękuję za podpowiedź, jednak nie jestem zbyt biegła w tym temacie, aby sama to ogarnąć.
W pliku page.php mam taki zapis:
W pliku sidebar.php :
layout, array(1,3,6) ) )
get_sidebar(’right’);
if ( !in_array($SMTheme->layout, array(1,2) ) )
get_sidebar(’left’);
if ( $SMTheme->layout == 6 ) {
get_sidebar(’right’);
}
?>
W pliku sidebar-left:
layout, array(4,3,6) ) ) $style=” style=’float:left'”; else $style=”;?>
<div class='sidebar left clearfix'>
Left sidebar
Natomiast w pliku sidebar-fight:
layout == 6 ) $style=” style=’float:left'”; else $style=”;?>
<div class='sidebar right clearfix'>
Nie wiem gdzie mam dokonać zmiany i jakiej, aby było dobrze. Chciałabym sidebar-left mieć na wszystkich stronach, a sidebar-right tylko na jednej i na jej podstronach.
Co z powyższego kodu moge/muszę wyrzucić, a co zostawić i co dopisać, aby było dobrze? Gdy wprowadzałam zmiany w tych plikach według Twoich wskazówek, to albo nic się nie zmieniało, albo znikała cała treść na stronie 🙁
Ty nie jesteś biegła, a ja mam za mało informacji i muszę zgadywać… Poproszę o nazwę tego motywu, i/lub link do Twojej strony, bo motyw jest bardziej rozbudowany.
Po tym fragmencie sądząc (bo poucinało Twój kod i ciężko coś tutaj znaleźć, kod lepiej wrzucać na pastebin.com a w komentarzu tylko linka), najlepiej będzie edytować page.php (który nie wiem jak wygląda).
Zacznij od tego:
1. Utwórz w motywie zupełnie nowy plik, nazwij go np.
sidebar-drugi.php
.2. W środku tego pliku dodaj taki kod:
W miejscu
id-sidebara
trzeba wstawić swoją nazwę, tę którą użyłaś do zarejestrowania sidebara.3. Teraz najtrudniejsze… (dużo zależy od kontekstu, oraz od tego czy sidebar jest wczytywany w ten sposób czy korzysta z jakiejś „customowej” funkcji, albo dodatkowych argumentów, bez kodu nie jestem w stanie tego stwierdzić) w pliku page.php powinnaś odszukać funkcję get_sidebar(); jeżeli nie ma to patrz nawias i tutaj więcej nie pomogę.
4. Jeżeli jest to super… Możesz zrobić to, o czym pisałem w poprzednim komentarzu i wkleić poniższy kod ZAMIAST starego
get_sidebar();
Powyższy kod musisz poprawić sama:
No i na koniec uprzedzam, że bez nazwy szablonu i zerknięcia w kod źródłowy wszystko jest zrobione „na czuja”. 🙂
Motyw nazywa się TechWorld. Faktycznie ucięło kod page.php, mam nadzieję, że teraz będzie ok http://pastebin.com/BQA3Cc5p
Najprostsze rozwiązanie:
Zrób pierwsze dwa punkty z poprzedniego komentarza. Następnie otwórz sobie plik
functions.php
i dodaj kod rejestrujący sidebar (najlepiej w 87 linijce):Zapisz, zamknij i otwórz plik
sidebar.php
. Teraz zastąp wszystko tym kodem:Zapisać i powinno działać.
PS w miejscu 1085 musisz podać identyfikator dla której strony ma to działać, tak jak pisałem ostatnio.
Pozdrawiam
Niestety nie udało mi się zarejestrować sidebara. Pojawia mi się komunikat o błędzie w pliku funtions.php w lini 201 lub 211 (w zależności w którym miejscu wkleiłam rejestrację sidebara)
Mój plik functions.php:
http://pastebin.com/XDtJpLSC#
201 lub 2011 linijka jest daleko. Czy błąd pojawia się tylko jak wklejasz ten mój fragment? Kod który podałem działał i działa bez zarzutu. Twój kod natomiast ma problem z headerem (headers already sent) i pokazuje 21 linijkę – trzeba usunąć spacje i entery przed
<?php
a reszta powinna być ok.Udało mi się zarejestrować sidebar, ale nadal się nie pojawia na oczekiwanej stronie 🙁
sidebar.php http://pastebin.com/Mhwx2Mvu
sidebar-drugi.php http://pastebin.com/si6150cd
A 'normalny’ sidebar się pojawia? Może na stronie której chcesz to zrobić nie masz żadnego sidebara i plik
sidebar.php
nie jest w ogóle wczytywany. Jeżeli da się to ustawić w motywie, to trzeba ustawić którykolwiek a warunek zrobi resztę.0. Jeżeli nie wiesz czy się da, możesz zrobić prosty test: do pliku
sidebar.php
w pierwszej linijce (przed wszystkim) dodaj jakiś tekst i zobacz czy się wyświetli na stronie.Nie wiem gdzie u Ciebie tkwi problem, więc zacznijmy od początku:
1. Jeżeli sidebar jest zarejestrowany prawidłowo, to powinien pojawić się w kokpicie (sprawdź czy jest i dodaj jakiś testowy widget np. i najlepiej na początku tekstowy z jakimś tekstem).
2. Teraz spróbuj wyświetlić ten sidebar na stronie, stwierdzisz w ten sposób czy sidebar jest zarejestrowany prawidłowo, czy zgadza się jego identyfikator i czy w ogóle wyświetla widgety.
Możesz to zrobić kopiując linijkę
get_sidebar('drugi');
na początek plikusidebar.php
(za linijkę<?php
– przepraszam za to jeżeli jesteś na wyższym 'poziomie’ :D). Oczekiwany rezultat tego kroku to wyświetlenie testowego widgetu tekstowego utworzonego w pierwszym kroku. Jeżeli wszystko jest ok i pokaże się ten testowy tekst to znaczy że jest dobrze i możesz usunąć dodaną linijkę i przejść dalej, jeżeli nie to najpewniej oznacza, że podane są błędne nazwy i/lub identyfikatory (musisz to dokładnie posprawdzać i doprowadzić do tego żeby się pojawił).3. Teraz trzeba sprawdzić czy warunek jest poprawny. Teraz jeżeli przejdziesz pod stronę z ID 1053, i wszystko do tej pory zrobiłaś dobrze, to plik z drugim sidebarem powinien zostać wczytany i w miejscu sidebara zobaczysz ten testowy widget, który dodałaś na początku. W innym przypadku podane id strony jest niepoprawne, wtedy WordPress powinien wczytać oryginalny sidebar z motywu.
Gdy dodałam get_sidebar(’drugi’); na początku sidebar.php, to zniknęła cała zawartość strony z treścią i sidebarami.
Czy to wina motywu, czyżby motyw nie pozwalał na modyfikację opcji wyświetlania sidebarów?
Dodam jeszcze, że w edycji stron mam możliwość wyboru content layout, czy chcę prawy, lewy, czy żadnych sidebarów, ale bez względu co bym nie wybrała, to i tak wyświetla się tylko ten sidebar, który wybiorę poprzez layout w motywie.
Biała strona oznacza błąd w składni PHP. Ala znowu nie pokazałaś ani jak to zrobiłaś, ani nie ma treści kodu błędu. Zasadniczo napisałaś tylko że nie działa i koniec. Za mało informacji.
To nie jest wina motywu, bo specjalnie pobrałem ten sam motyw, który mi podałaś, najpierw doprowadziłem do stanu w którym wszystko działało, a potem opisałem tutaj wszystko co i jak. Na 100% jest to dobre rozwiązanie, tylko coś pomijasz…
To nie była biała strona z komunikatem błędu, ale pusta strona z prawidłowym nagłówkiem i stopką, ale bez treści strony i sidebarów i bez jakiegokolwiek komunikatu.
W każdym razie udało mi się uzyskać pożądany efekt w inny sposób. Zainstalowałam sobie wtyczkę jonradio Multiple Themes. Skopiowałam zawartość motywu, którego używam i utworzyłam nowy motyw na jego bazie. Dzięki tej wtyczce ustawiłam, że na danej stronie będzie wyświetlał się ten nowy motyw. W nowym motywie zmieniłam plik sidebar, tak że przy ustawieniu layout w głównym motywie, gdy powinien się wyświetlać lewy sidebar, to w nowym motywie będzie wyświetlał się prawy. Czyli na wszystkich stronach wyświetla się lewy, a na tej jednej wyświetla się prawy, tak jak chciałam.
Dziękuję za poświęcony czas i wszystkie wskazówki, choć mi się nie udało to może komuś innemu uda się otrzymać pożądany efekt, na ich podstawie, a może ktoś skorzysta z mojego sposobu.
Jeszcze raz dziękuję i pozdrawiam!
Dzięki. Właśnie dzięki tobie dodałem sidebar którego brakowało mi w szablonie.
Mam jeden sidebar po lewej stronie. Dodałem drugi sidebar „Plakat” id = sidebar-2. Jak mam zrobić zeby ten byl po prawej stronie ? ;<
To gdzie sidebar się znajduje zależy od umiejscowienia w kodzie i od CSS, a tak ogólnie to za mało informacji żeby w ogóle coś doradzić.
Czesc!
Skorka, ktora modyfikuje (F8 lite) ma sidebary na dole. Chce dodac jeden sidebar z prawej strony wyswietlanych tresci. Udalo mi sie zarejestrowac sidebar w Functions.php. Dodawanie kodu wyswietlajacego sidebar w header.php skutkuje bledami, dlatego postanowilem dodac go w post.php i page.php. Udalo sie…. ale sidebar wyswietla mi sie przed trescia. Chcialbym by byl po lewej lub po prawej stronie tresci. Poradzisz mi cos? 🙂
PS:goraco przepraszam za brak polskich znakow, pisze z angielskiego komputera
Rewelacyjny poradnik od dłuższego czasu męczyłem się z dodaniem sidebaru a tu wszystko podane jak na tacy dzięki 🙂
A jak dodać drugi sidebar w motywie, który posiada osobny do tego plik? (sidebar.php). Motyw gridster-lite
Utwórz nowy plik, albo skopiuj
sidebar.php
i w nazwie pliku dodaj postfix, np.sidebar-custom.php
.W motywie, w miejscu gdzie chcesz wczytać swój nowy sidebar skorzystaj z metody
get_sidebar()
, ale z parametrem (ten wcześniej ustawiony postfix), np. tak:get_sidebar( 'custom' );
Reszta, tj. fragment z
functions.php
, czyli rejestrowanie sidebara, już tak jak w artykule.Pozdrawiam
Witam
Czy ktoś jeszcze tu zagląda, potrzebuję pomocy.
Pozdrawiam
Co to znaczy jeszcze? Domena świeża, ostatni wpis z wczoraj. Właściwie ze wszystkim tutaj jesteśmy na bieżąco. 🙂
Pomocy z czym?
Witam
Mam pasek boczny na stronie głównej ale chciałbym by był bardziej z prawej niż jest w tej chwili a konkretnie na tym szarym tle , z prawej lub lewej strony. Twórca szablonu napisał mi że się da ale nie jst to takie proste i zaproponował płatne wsparcie :/. Czy jest możliwość że zrobię to sam z Państwa pomocą? Strona http://www.uszczelnianie.com.pl
no teraz to na zielonym tle 😉
Witam,
po tym komentarzu trochę ciężko jest mi zorientować się o co dokładnie chodzi, więc muszę się upewnić… czy chodzi o przeniesienie widgetu koszyk koło banera z logiem w górnej części strony?
po prawej stronie widgetu koszyk jest pole z zielonym tłem i chciałbym ten widget umieścić właśnie na tym zielonym tle czyli dokładnie na prawo od jego obecnej pozycji
Moim zdaniem jest to kiepski pomysł. Na dużym ekranie monitora wygląda tak jak wygląda, jeżeli ten sidebar przeniesiemy na zielone tło, to wszystkie pozostałe elementy strony będą się wydawać strasznie szerokie – proszę sobie wyobrazić te dwie linijki tekstu ciągnące się od lewej strony monitora, do prawej… 🙂 Z kolei na mniejszych ekranach taka zmiana nic nowego nie wniesie.
W zasadzie nie jest to trudne do zrobienia i może Pan to sobie przetestować, ewentualnie jak będzie kiepsko wyglądać przywrócić starą wartość. Więc w
style.css
należy odnaleźć klasę.container
, powinna być tam zdefiniowana reguławidth: 1280px;
. Zamiast1280px
, proponuję wpisać np.1680px
. Należy pamiętać o wyczyszczeniu cache, aby zobaczyć zmiany.ale ja chciałbym żeby tej wielkości prostokącik po prostu był bardziej z prawej, nie chcę żeby ciągnął się od lewej do prawej..
Ale będzie jeśli skasujemy obecny sidebar…
OK. Inne rozwiązanie, znowu w CSS, tym razem na końcu proszę dodać:
Aby usunąć miejsce po starym sidebarze, dodajemy również to:
Uprzedzam, że nie jest to eleganckie rozwiązanie, w tym przypadku należałoby zajrzeć do kodu php i zmienić układ bloków, aby lepiej to działało i strona była wyśrodkowana. Zastosowane media queries powinny dopilnować, aby ten sidebar „wyskakiwał” tylko przy wysokich rozdzielczościach, w niższych powinno wyglądać po staremu.
Dziękuję to faktycznie działa tak mniej więcej jakbym chciał. Proszę mi jeszcze powiedzieć, czy jest możliwość zamiast takiego widgetu dodania jakiegoś okienka z tekstem na tym zielonym polu? coś w stylu ogłoszenia, reklamy czy informacji?
Powinien Pan sprawdzić, czy w Kokpicie → Wygląd → Widgety znajduje się sidebar z „wsadzonym” widgetem koszyka. Jeżeli jest, to dalej z górki, wystarczy dodać do niego widget „Tekst”, dodać tekst i również powinien pokazać się w nowym miejscu, pod koszykiem.
Sprwdziłem to o czym Pan pisał,ale mnie nie chodzi o poszerzenie tego białego pola tekstowego, ja chciałbym żeby widget się wyświetlał obok tego pola
Hej, mam problem z dodaniem opisu „o blogu/ o sobie”. Od razu przyznam, że dopiero raczkuję w temacie wordpressa i nie do końca jeszcze ogarniam jego tajniki 🙂 Założyłam bloga i mam stronę główną i po prawej stronie panel boczny, gdzie dodałam nowy widget/sidebar z własnego menu „o blogu” i chciałabym dodać tam wpis i zdjęcie o blogu i o sobie. Pytanie, jak to zrobić? Oprócz tego sidebaru mam również „kategorie”, archiwum” i tagi. I te sidebary udało mi się ogarnąć, natomiast nie mam pojęcia jak dodać cokolwiek do „o blogu”. Finalnie zalezy mi na tym, aby po wejściu na stronę była strona główna a po prawej w panelu bocznym było „o blogu”, pod napisem zdjęcie i żeby po kliknięciu na zdjęcie wyświetlał się opis o blogu i o mnie. Tylko jak to zrobić? Jest szansa na pomoc?
Hej, próbowałaś skorzystać z widgetu Tekst? Tekst wiadomo dodajesz jaki potrzebujesz, a obrazek wstawisz normalnym tagiem html – img. Dodaj do biblioteki mediów obrazek, a następnie skopiuj jego Adres URL. Do poniższego tagu, w zaznaczonym miejscu, wklej wcześniej skopiowany Adres URL obrazka. Zmodyfikowany tag wklej do widgetu tekstowego, zapisz i gotowe. Tekst alternatywny, to tekst, który wyświetli się jeżeli obrazka nie uda się wczytać – błędna ścieżka, lub nieistniejący zasób.
<img src="adres_url" alt="Tekst alternatywny">
Aby obrazek był klikalny i po kliknięciu przenosił do innej strony, trzeba go opakować w kolejny tag – a:
<a href="adres_do_strony"><img src="adres_url_obrazka" alt="Tekst alternatywny"></a>
W zaznaczonym miejscu, czyli adres_do_strony, wklejasz adres strony do której ma ten obrazek przenosić.
Przykład:
<a href="http://wpadmin.pl"><img src="http://wpadmin.pl/wp-content/themes/wpadmin/img/wpadmin-logo.png" alt="WPAdmin.pl logo"></a>
Dziękuję i!!! 🙂
A może pomożesz mi jeszcze w jednym problemie? Co zrobić, jak znacznik „czytaj dalej” nie działa? Umieściłam w połowie wpisu znacznik „czytaj dalej”, ale jak klikam „podejrzyj wpis” to pojawia się cały wpis i na blogu nie ikonki „czytaj dalej”. Co powinnam zrobić? Mogę liczyć na Twoją pomoc? 🙂
No bo „podejrzyj wpis” służy do podejrzenia wpisu, całego. Guzik powinnaś zobaczyć na stronie, na której wyświetlasz listę wpisów.
Wszystko działa idealnie, bardzo dziękuję za fachową pomoc i szybkie odp.
pozdrawiam
Dodałem w php linijki kodu żeby było dwa panele boczne, ale gdy dodam widgety to widget z panelu bocznego nr 2 pojawia sie pod widgetami z panelu bocznego nr 1 . jak zrobić żeby jeden sie wyświetał z lewej strony a drugi z prawej?
dodam, że motyw geodesic.1.0.1
Witam,
radzę sprawdzić, czy rejestrowane są dwa sidebary (odpowiednia funkcja i / lub wywołania), oraz zgodność podawanych identyfikatorów w funkcji
dynamic_sidebar
, albo poproszę o kod rejestrujący oba sidebary, zapisany wfunctions.php
, oraz o wywołania funkcjidynamic_sidebar
w motywie.Witam 😉 to jest kod https://pastebin.com/dDJydNv8 a te wywołania to w którym miejscu szukac?
„A te wywołania” powinny być w miejscu, w którym je umieściłeś… 🙂
Jeżeli rejestrujesz sidebary z identyfikatorami:
i
(fragmenty z Twojego
functions.php
)To odwołania w motywie do tych sidebarów powinny odwoływać się za pomocą tych wybranych identyfikatorów:
i
Dzięki temu WordPress może rozróżnić, który sidebar to który. Podejrzewam, że u Ciebie oba identyfikatory są identyczne, dlatego gdy dodajesz widget do jednego sidebara to pojawia się w dwóch.