Suddivisione dei campi di contenuto in diverse regioni


11

La mia situazione è la seguente: ho un seminario sul tipo di contenuto, con i campi A, B e C. Ho le aree Intestazione, Piè di pagina, Contenuto e Barra laterale sinistra. Ci sono alcuni campi nel Seminario che desidero visualizzare nell'area Contenuto, ma anche nell'area Barra laterale sinistra.

Come procedo a fare questo? Ci scusiamo se è già stata data una risposta in precedenza. Sono uno sviluppatore e non esito a immergermi nelle funzioni hook e preprocessore. Ho installato il modulo Views, ma non l'ho mai usato (questo è il mio primo sito Drupal, se non puoi dirlo: P).

Saluti.

EDIT: Questo è per Drupal 7 .


Quale versione di Drupal?
Keva,

Siamo spiacenti, questo è per Drupal 7. Ho aggiunto queste informazioni alla mia domanda originale.
Lester Peabody,

Accetterò una risposta non appena potrò affrontare il problema. Attualmente sto scoprendo come impostare i miei suggerimenti per visualizzare i contenuti in modo appropriato ...
Lester Peabody

Risposte:


11

Non esiste un modo semplice per aggiungere il contenuto di un nodo a diverse aree della pagina. Esistono diversi modi per affrontare questo problema.

Modo non codificante: viste e blocchi

Crea una vista

  • Tipo: blocco
  • Filtro contestuale: Contenuto: Nid
    • valore predefinito: cattura dalla pagina corrente
  • Campi: qualunque cosa tu voglia
  • Filtro:
    • Tipo di contenuto: Seminario

(più le impostazioni aggiuntive desiderate)

Quindi vai alla pagina del blocco amministratore Sposta il blocco vista appena creato, nella regione in cui desideri che venga visualizzato. Dovrebbe essere visualizzato solo nelle pagine del nodo del seminario.

Ripetere l'operazione per tutte le regioni

Modo di codifica con theme_preprocess_region ():

il codice sarebbe simile a questo

MYTHEME_preprocess_region(&$variables) {
  if (isset($node) && ($node->type == 'seminar' )) {
     //add new variable here.     
  }
}

Questo è solo per Drupal 7. Ora è disponibile nella tua region.tpl.php.


1
L'approccio view / block è in realtà quello che preferisco, ma ha suggerito Display Suite poiché alcuni lo trovano più accessibile.
jhedstrom,

Views funziona alla grande per questo, come sto scoprendo. I panorami sono fantastici in generale. Uso anche il modulo Blocco menu per suddividere i miei menu in base a dove mi trovo nel sito (permettiamoci di suddividere il menu principale in modo che sia sempre visualizzato, e i sottomenu in base a quale menu rientro nel menu principale). Modulo assolutamente fantastico, altamente raccomandato.
Lester Peabody,

Un po 'pazzo che ho chiesto questo quasi un mese, ho accettato la risposta, ma sto solo arrivando all'applicazione di questa risposta ora (anche se ho usato Views un sacco da allora). Potresti chiarire un po 'il tuo uso di Views per Drupal 7? Sembra che Argument: nid non esista in Views 3 per Drupal 7. Grazie.
Lester Peabody,

L'avevo capito. La nozione di Argomento è stata sostituita da Filtri contestuali in Avanzate.
Lester Peabody,

D7, contestual fitler: contenuto: NID. Modifica: vedi che l'hai trovato, prima che potessi rispondere
iStryker il

7

Il modulo Display Suite ti consente di farlo. Dovrai abilitare il modulo Extra della Suite Display per esporre le aree tematiche come target per i componenti del nodo. Informazioni su come eseguire questa operazione sono disponibili nei campi Aggiungi a una pagina di blocco della documentazione di Display Suite


5

Ho avuto lo stesso problema. La soluzione è abbastanza semplice Puoi basare il fatto che in Drupal 7 possiamo definire il nostro view_mode, non solo FULL e TEASER (come sappiamo dalle versioni più vecchie). Quindi, definisci un'altra view_mode da utilizzare nella tua regione: ad esempio LEFTHAND. Drupal visualizza FULL view_mode nell'area contenuto. Quindi, devi dire a Drupal per visualizzare LEFTHAND nella zona della barra laterale sinistra.

  1. In template_preprocess_page ()

    if ($vars['node']) {
    $vars['page']['sidebar_left'][] = node_view($vars['node'], 'lefthand');
    }

  2. In node.tpl.php aggiungi un nuovo display per la modalità di visualizzazione a sinistra

    if ($view_mode == 'lefthand') {
    // render content fields here
    }


1
Questa risposta è super-ultra-intelligente e non richiede alcun modulo esterno, se non quello di definire le modalità di visualizzazione. La semplice alternativa a Display Suite è la modalità di visualizzazione delle entità: drupal.org/project/entity_view_mode
paul-m,

Mi è davvero piaciuto questo. Avvolgilo in una funzione if per visualizzarlo solo su determinate pagine. Lo facevo if (array_key_exists('block_14',$vars['page']['main_content'])){}apparire solo sulle pagine con un blocco specifico.
Dominic Woodman,

3

Se Display Suite sembra troppo per le tue esigenze (è un ottimo modulo, ma potrebbe essere eccessivo se hai solo bisogno di spostare alcuni campi) c'è un modulo solo per questo scopo -> CCK Blocks .

So che si chiama blocchi "CCK", ma funziona con Drupal 7 (che ha portato le funzionalità di CCK al centro).


1

Una leggera modifica alla risposta di @Patrik Lucan, if ($vars['node'])mi stava causando problemi sulle pagine che non erano nodi, ad esempio la prima pagina personalizzata con blocco o la pagina delle viste.

Cambiato in:

if (array_key_exists('node', $vars))

Il che sembra aver risolto il problema.


0

Nel frattempo c'è un modulo per questo. Dalla pagina del modulo:

Campo come blocco fornisce un modo semplice per visualizzare uno o più campi del nodo corrente in un blocco.

Questo modulo mira ad essere un'alternativa leggera a moduli come Panels e Display Suite, oppure usare Views per definire un blocco che recupera solo un campo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.