Cum pot ascunde bara laterală pentru un anumit articol?

25 feb. 2013, 18:50:12
Vizualizări: 14.4K
Voturi: 1

Aș dori să ascund bara laterală pe un anumit articol (nu pagină). Cum pot face acest lucru?

Pentru context, am căutat destul de mult atât pe Google cât și aici. Găsesc multe soluții pentru afișarea diferitelor bare laterale pe articole vs. pagini, sau pentru afișarea (sau ascunderea) unei anumite bare laterale pe o anumită pagină, dar nimic despre ascunderea barei laterale de la un singur articol specific.

3
Comentarii

Ce ai găsit în cercetările tale?

brasofilo brasofilo
25 feb. 2013 18:58:46

@brasofilo Am găsit multe informații despre cum să afișezi o bară laterală diferită pe pagini, sau despre cum să afișezi bare laterale diferite pe articole față de pagini, dar nimic care să se aplice la ascunderea barei laterale pe un anumit articol individual. Dacă nu ai găsit tu ceva ce eu nu am reușit...

ahockley ahockley
25 feb. 2013 19:39:48

Adaugă o casetă de bifat în ecranul de editare a articolului?

paul paul
25 feb. 2013 21:29:58
Toate răspunsurile la întrebare 7
0

Iată o idee pe care am menționat-o pe Twitter.

function special_post_template( $template ) {
  // Identifică o interogare singulară pentru postarea specială
  if ( is_single() && 10 == get_the_ID() )
    $template = get_template_directory() . '/special-single.php';

  return $template;
}

add_filter( 'template_include', 'special_post_template' );
26 feb. 2013 06:43:33
3

O abordare posibilă nu este atât de mult „ascunderea” unei bare laterale, cât mai degrabă neincluderea ei.

Pagini

Fiecare pagină din site-ul tău poate folosi un șablon diferit. De obicei, vei crea un șablon care utilizează cel implicit („Șablon implicit”) care include antetul, subsolul, conținutul, barele laterale, așa cum te-ai aștepta în mod normal. Cu toate acestea, poți crea un șablon de pagină nou pentru site-ul tău care urmează același format, dar omite bara laterală.

Alternativ, dacă cunoști ID-ul sau slug-ul paginii în cauză, poți crea un șablon de pagină doar pentru acea pagină. Pur și simplu plasează unul dintre următoarele fișiere în tema ta:

  • page-{id}.php
  • page-{slug}.php

WordPress le va încărca în mod implicit.

Articole

Totuși, pentru articole, WordPress nu acceptă acest tip de ierarhie. Poți ocoli această limitare prin crearea unui tip de postare personalizată, apoi creând single-{post-type}.php pentru a afișa acel tip de postare fără o bară laterală, dar asta s-ar putea să nu fie ceea ce dorești.

Cu toate acestea, dacă tema ta aplică clase de corp adecvate, atunci poți filtra în funcție de ID-ul articolului și folosi CSS pentru a ascunde elemente. Când folosești corect body_class() în tema ta, clasa postid-{post-id} va fi aplicată corpului. Poți profita de acest lucru.

/* ... Toate celelalte reguli CSS */

body.postid-15 .sidebar {
    display: none;
}

Dezavantajul acestei abordări este că marcajul barei laterale este încă încărcat, doar că este ascuns cu CSS. Dar pentru moment (până când WordPress va implementa un șablon pe articol similar cu cel pe pagină pe care îl are deja), acest lucru ar trebui să fie suficient pentru a începe.

25 feb. 2013 19:52:33
Comentarii

Ce zici de o formă de metadate? Astfel, CSS-ul nu va trebui actualizat dacă ID-urile paginilor/postărilor se schimbă.

nvwd nvwd
25 feb. 2013 19:59:09

ID-urile paginilor/postărilor nu ar trebui să se schimbe decât dacă resetezi baza de date și cheile. Și dacă faci asta, atunci sunt suficiente alte lucruri care se întâmplă încât aceasta ar fi o problemă mult mai mică.

EAMann EAMann
25 feb. 2013 20:02:01

Să încercăm un alt raționament... Dacă vrei să specifici care postări nu afișează bara laterală, metadatele ar permite setarea acestui lucru postare cu postare. Apoi șablonul poate verifica metadatele pentru a lua decizia.

nvwd nvwd
25 feb. 2013 20:10:37
2

Nu ai putea să folosești condiția is_single()? Sau nu poți modifica fișierul single.php? Dacă poți, aș încerca o declarație if pentru articolul tău.

if(is_single('potato-pancake')) {
   // nimic
} else {
   get_sidebar();
} 

Pentru referință: http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page

25 feb. 2013 20:02:43
Comentarii

Vreau ca bara laterală să fie ascunsă la un singur articol, nu la toate articolele.

ahockley ahockley
25 feb. 2013 20:22:45

De fapt, exact asta ar face acel cod. Dacă vizualizezi un singur articol cu acel slug, nu face nimic. În caz contrar (adică la toate articolele) afișează bara laterală.

EAMann EAMann
25 feb. 2013 20:57:27
0

Dacă ai nevoie de soluția pentru un singur articol, atunci obține ID-ul articolului din panoul de administrare.

(Dacă treci cu mouse-ul peste link-ul de editare, vei vedea ceva de genul post=xxx. xxx este ID-ul articolului)

Apoi modifică template-ul pentru articolul unic astfel:

Să presupunem că ID-ul articolului tău este 66

if (!is_single(66)) {
   get_sidebar();
} 
25 feb. 2013 20:32:42
0

Dacă ai nevoie de această funcționalitate în mod continuu, recomand extensia Theme Layouts de la Justin Tadlock. Poți defini layout-urile dorite. Aceasta va adăuga un câmp radio pentru fiecare articol, astfel încât să poți specifica layout-ul necesar pentru fiecare în parte.

Este ușor de implementat dacă cunoști tematica WordPress. Include extensia, adaugă add_theme_support pentru theme-layouts și ești pe drumul cel bun.

Este inclusă în cadrul său Hybrid Core, sau poți vedea clasele extensiei Theme Layouts aici: https://github.com/justintadlock/hybrid-core/tree/master/inc

25 feb. 2013 22:46:31
1

În opinia mea, o metodă mai bună este să lucrezi cu șabloane de articole.

În acest caz, pentru a ascunde/elimina bara laterală dintr-un anumit articol, urmează acești pași:

1 - Deschide șablonul tău de articol, probabil single.php, selectează tot și copiază conținutul;

2 - Creează un șablon secundar de articol, de exemplu nosidebar-posts.php, lipește conținutul din single.php și adaugă următorul cod pe prima linie:

<?php
/*
Template Name Posts: Articole fără bara laterală
*/
?>

3 - Elimină <?php get_sidebar(); ?> din nosidebar-posts.php sau modifică după preferințe;

4 - Instalează Pluginul Custom Post Template;

5 - Mergi la editarea articolului și vei observa o casetă Post Template, selectează șablonul Fără bară laterală și ai terminat.

Acum poți elimina bara laterală din orice articol prin simpla selectare a șablonului în pagina de editare a articolului și poți crea multiple șabloane, precum lățime completă, fără bare laterale etc.

26 feb. 2013 07:38:14
Comentarii

Pluginul funcționează cu WP 3.5.1!

drabello drabello
26 feb. 2013 08:00:42
0

Dacă utilizați WordPress 4.7 sau o versiune mai recentă, puteți aplica șabloanele de pagină și pentru articolele de blog. Adăugați pur și simplu post ca Template Post Type.

În șablonul de pagină, definiți-l astfel:

<?php 
/*
Template Name: Layout cu lățime completă
Template Post Type: post, page
*/
?>

Acum, în fereastra editorului de articole, ar trebui să vedeți secțiunea Atribute pagină care afișează acel șablon.

Referință: https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-page-templates-for-specific-post-types

18 ian. 2018 12:23:51