Bă, da’ tu nu mai răspunzi la RT-uri?
Suntem prieteni pe Facebook
Un client de-al meu avea la un moment dat nevoie de un meniu special pentru fiecare articol pe care-l făcusem pentru site-ul său de prezentare (asta pentru că a vrut ca site-ul de prezentare să funcţioneze pe platforma WordPress), iar eu, ca să fac asta, aveam nevoie de un sidebar diferit pentru fiecare post în parte.
Trebuia să fac în aşa fel încât să pot adăuga şi edita meniurile pentru fiecare articol fără să întru în cod de fiecare dată, pentru că dacă mai apărea câte-un link ce trebuia introdus în meniu, să şi-l poată introduce şi singur, fără cine ştie ce cunoştinţe de HTML şi CSS.
În rândurile ce vor urma, voi încerca să vă explic pe scurt despre ce-i vorba.
În primul rând, trebuie să-i spunem WordPress-ului că nu vrem să afişăm acelaşi sidebar pe fiecare pagină pe care-o afişează. Pentru a arăta un sidebar diferit în pagina unui articol, spre exemplu, va trebui să modificăm single.php.
Deschide single.php şi găseşte următoarea linie de cod (de obicei este spre sfârşitul documentului, penultimul rând):
<?php get_sidebar(); ?>
Acum înlocuieşte acea linie de cod cu următoarea:
<?php $sidebar = get_post_meta($post->ID, „sidebar”, true);
get_sidebar($sidebar);
?>
Acum va trebui să ne folosim de Custom Fields de fiecare dată când introducem un articol pentru care dorim un sidebar diferit. În josul paginii, chiar în momentul în care scrii articolul, vei observa un tab care se numeşte „Custom Fields”.
Câmpul „Name” va fi întoteauna completat cu „sidebar”, pentru că aşa l-am declarat noi în single.php, undeva mai sus. Câmpul value va da numele sidebar-ului. În exemplul dat de mine mai sus, articolul pe care-l scriu, în loc să afişeze fişierul sidebar.php din template, va căuta sidebar-floreacristian.php.
Pentru că sidebar-floreacristian.php nu există, va trebui să-l fac singur. Am copiat sidebar.php, l-am redenumit, iar acum m-am pus pe modificat. Tot ce modific în sidebar-floreacristian.php, va apărea numai în articolele în care setez Custom Fields ca în imaginea de mai sus.
Ce-am făcut eu pentru clientul meu? Am făcut un astfel de sidebar pentru fiecare articol în parte (au fost doar 10 articole), am creat 10 sidebar-uri noi în functions.php, apoi am adăugat câte-un widget în fiecare dintre ele, aşa cum am explicat aici. Omul poate acum să modifice meniurile direct din Appearance » Menus, sau întregul sidebar din Appearance » Widgets.
Pentru ca sidebar-ul să fie diferit pentru pagini, nu pentru articole, va trebui să facem modificări în page.php, nu în single.php.
14 Comments
Ciudata cerinta, ai putea sa exemplifici si cu siteul in cauza? Oricum, buna rezolvarea, cred ca era singura varianta, o sa ma mai gandesc, totusi mai simplu decat cu Custom Fields nu cred ca se putea…
momentan nu pot divulga site-ul, pentru ca nu este gata si lucrez pe un subdomeniu la el. cand o sa-l lansez, o sa-ti pot spune despre ce-i vorba.
putin complicat pentru mine, dar o sa incerc sa vad daca pot sa reusesc.
unde te incurci, intrebi :)
Salut Grim. Am o rugaminte la tine.
De unde setez sa imi apara in sidebar, cele mai recente articole si mai jos, cele mai comentate ? Mersi :D
din appearance » widgets, dar s-ar putea sa n-ai widget-urile in lista. instaleaza GD Simple Widgets
Mersi.
Uhuu!!! Chiar aveam nevoie de asa ceva :) MULTAM FAIN!
cu placere! ma bucur ca ti-a fost de folos :)
E fain sa ai sidebar diferit la fiecare articol, dar eu nu as avea sa pun atatea…
nu la fiecare articol, dar poate ai un artcol mai special (gen vreun caz umanitar), sau pagina cu blogroll-ul, in care nu vrei sa apara orice fel de sidebar
Nu e foarte greu, dar e fain :)
Merci!!!
Cu cea mai mare plăcere!