Crearea corectă a unui șablon personalizat pentru pagina de blog

4 ian. 2017, 05:04:23
Vizualizări: 95.1K
Voturi: 17

Doresc să creez un șablon personalizat pentru prezentarea postărilor de blog. Am observat că atunci când atribuiți o pagină pentru afișarea postărilor prin Setări > Citire, aceasta va folosi home.php pentru a afișa conținutul paginii - adică postările pe o pagină. De asemenea, opțiunea de a atribui un șablon de pagină în interfața de editare a paginii dispare.

În prezent, se afișează o vizualizare implicită articol cu articol. Vreau să ofer administratorului o altă opțiune de a selecta un șablon diferit care să stileze postările într-un layout de tip grilă sau masonry. Nu sunt sigur cum să fac asta.

Aș putea face acest lucru prin neatribuirea paginii pentru afișarea postărilor în zona de administrare Setări > Citire și apoi permițând utilizatorului administrator să atribuie șablonul specific paginii folosind meniul Atribute pagină în editarea paginii, dar conform https://make.wordpress.org/themes/2014/06/28/correct-handling-of-static-front-page-and-custom-blog-posts-index-template/, acesta este modul INCORECT.

Am încercat să caut soluții pe Google, dar tot ce găsesc sunt recomandări de plugin-uri de utilizat. Poate cineva să mă îndrume către niște resurse utile?

1
Comentarii

Presupun că problema inițială este de mult rezolvată, dar voiam să menționez că analizarea codului sursă al plugin-urilor m-a învățat multe. Dacă găsești un plugin în directorul WP.org, poți să dai click pe fila dezvoltatorilor pentru a vizualiza codul direct din browser și a vedea cum funcționează.

rtpHarry rtpHarry
12 feb. 2020 18:00:47
Toate răspunsurile la întrebare 3
1
19

Nu uitați că WordPress a fost conceput în primul rând ca un CMS pentru bloguri, așa că atunci când vine vorba de dezvoltarea de teme, dezvoltatorii optează adesea pentru o abordare non-standard în schimbul potențialului de a avea mai multe funcționalități.

Dezvoltatorii de teme au trei opțiuni atunci când abordează acest lucru, dintre care una (#2 de mai jos) pe care ai menționat-o.

  1. Editarea directă a fișierului index.php pentru a modifica indexul blogului. Aceasta nu este o opțiune bună deoarece index.php ar trebui să fie un fallback în cazul în care o altă parte a șablonului tău lipsește.

    • Avantaje: rapid și ușor
    • Dezavantaje: predispus la erori și contrar principiilor orientate pe obiect
  2. Crearea unui șablon de pagină pentru indexul blogului. După cum ai spus, mulți dezvoltatori de teme aleg această rută deoarece este o modalitate rapidă de a-ți oferi control asupra indexului blogului și chiar îți oferă posibilitatea de a experimenta cu diferite șabloane pentru indexul blogului (ceea ce este util atunci când dezvolți o temă versatilă).

    • Avantaje: Versatil, permite construirea unei teme robuste
    • Dezavantaje: pierzi abilitatea de a apela funcționalitățile native ale WordPress care se referă la indexul blogului.
  3. Crearea fișierelor front-page.php, home.php și index.php în tema ta. front-page.php va fi pagina principală a temei. home.php va fi implicit indexul blogului, iar index.php va fi fallback-ul pentru toate șabloanele.

    • Avantaje: Curat și utilizează pe deplin obiectele și metodele native ale WordPress
    • Dezavantaje: Limitările impuse de WordPress: nu este ideal pentru multe dintre temele bogate în opțiuni pe care le vedem astăzi

Personal, prefer să merg pe varianta #2, deoarece majoritatea proiectelor mele de dezvoltare WordPress din ultima vreme nu sunt doar bloguri: sunt site-uri întregi cu arhitectură complexă de informații și interactivitate avansată.

17 iul. 2018 23:30:57
Comentarii

Documentația pentru această funcționalitate: https://developer.wordpress.org/themes/basics/template-hierarchy/#home-page-display

Pixelsmith Pixelsmith
10 ian. 2020 20:21:11
3

Voi acoperi mai multe aspecte în răspunsul meu. :)

Dacă creezi propria temă și dorești să modifici modul implicit de afișare a anumitor tipuri de pagini (de exemplu, pagina de arhivă a categoriei sau pagina unui singur articol de blog), atunci verifică diagrama ierarhiei de șabloane WordPress. Aceasta arată care fișiere din directorul temei tale sunt utilizate pentru afișarea diferitelor tipuri de postări.

Prin crearea unui fișier php în tema ta care se potrivește cu un fișier din acea ierarhie, acesta va fi utilizat automat de WordPress—cum ar fi single.php pentru afișarea unei singure postări. Dacă ai o temă care are deja acest fișier, atunci evident că poți să-l modifici și schimbările se vor reflecta pe site.

Dacă dorești să ai șabloane personalizate de pagini, dar vrei ca doar un administrator să le poată modifica (pe bază de postare individuală), atunci trebuie să faci niște verificări pe roluri și capacități; acest răspuns de pe StackExchange poate fi util. (Tot va trebui să creezi acele șabloane personalizate de pagini, vezi acest articol de la Smashing Magazine).

Dacă, în schimb, vrei ca un administrator să poată alege global șabloane de pagini/postări pe baza anumitor criterii sau să aleagă șabloane personalizate pentru întregul site, atunci va trebui să adaugi o opțiune în zona de administrare a temei tale și niște cod personalizat în tema ta pentru a afișa pagina corectă în funcție de acea opțiune. Adăugarea unei opțiuni în zona de administrare poate fi realizată ușor cu unul dintre numeroasele plugin-uri, dar poate fi făcută și manual (vezi, de exemplu, acest articol de pe SitePoint).

4 ian. 2017 05:28:52
Comentarii

Mulțumesc pentru răspuns. Sunt conștient de cum să creez șabloane de pagini pentru pagini/articole bazate pe ierarhie, dar nu reușesc să găsesc o modalitate de a oferi opțiuni de șabloane pentru "Pagina de Index a Articolelor din Blog" care folosește home.php (folosind aceeași terminologie ca în diagrama pe care ai furnizat-o). Aceasta este setată când un utilizator administrator alege o pagină pentru afișarea articolelor în Panou de control > Setări > Citire. Apoi, aceasta atribuie pagina home.php/index.php. Nu reușesc să găsesc o modalitate de a crea un șablon alternativ fără a NU atribui pagina în Panou de control > Setări > Citire.

Ryan Coolwebs Ryan Coolwebs
4 ian. 2017 07:26:27

@RyanCoolwebs Probabil ar trebui să adaugi o opțiune de administrare în tema ta care să permită alegerea între stiluri de afișare pentru pagina de index a articolelor din blog, apoi să editezi home.php pentru a citi valoarea opțiunii și a afișa varianta corespunzătoare a paginii.

iguanarama iguanarama
4 ian. 2017 09:23:30

Da, cred că utilizarea funcției de personalizare este probabil cea mai bună metodă de a face acest lucru. Pot verifica opțiunile de personalizare și apoi să preiau partea corespunzătoare a șablonului.

Ryan Coolwebs Ryan Coolwebs
4 ian. 2017 09:44:14
2

Bine, deci vrei să creezi propria pagină șablon pentru afișarea articolelor de blog, corect?

Atunci procedează în felul următor: creează un fișier PHP numit blog-template.php

În interiorul acelui fișier, pune acest cod în partea de sus, înainte de orice altceva.

<?php 
/*
* Șablon Pagină: Postare Blog
*/
?>

Apoi, sub codul menționat mai sus, inserează tot codul din fișierul index.php/home.php în această pagină, salvează fișierul și acum creează o pagină din panoul de administrare. Dă-i un nume, de exemplu "Blog". Acum, din partea dreaptă, alege șablonul de pagină pe care tocmai l-am creat, adică Postare Blog din meniul derulant al șabloanelor.

Publică pagina și ești gata să ai propria pagină pentru afișarea postărilor tale.

Spune-mi dacă mai ai nevoie de altceva.

4 ian. 2017 09:40:39
Comentarii

OK, deci doar ai reformulat soluția pe care OP a declarat-o în mod clar ca fiind greșită ;) Crearea unui șablon de pagină și folosirea lui ca index de blog nu este cea mai bună abordare, cred.

Krzysiek Dróżdż Krzysiek Dróżdż
18 mar. 2018 19:27:16

Nu este chiar greșit în sine, doar că OP a înțeles greșit de ce oamenii tind să facă astfel

Orun Orun
17 iul. 2018 23:32:18