it-swarm.it

Suddivisione dei campi di contenuto in diverse regioni

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 Drupal, se non puoi dirlo: P).

Saluti.

EDIT: Questo è per Drupal 7.

11
Lester Peabody

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 è per Drupal 7. Ora è disponibile nella tua region.tpl.php.

11
iStryker

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. Le informazioni su come eseguire questa operazione sono disponibili nella pagina Aggiungi campi a un blocco della documentazione di Display Suite

7
jhedstrom

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 altro view_mode da usare nella tua regione: ad es. LEFTHAND. Drupal visualizza la modalità_VISIONE COMPLETA nell'area contenuto. Quindi, devi dire a Drupal per visualizzare LEFTHAND nell'area 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
    }

5
Patrik Lucan

Se Display Suite sembra troppo per le tue esigenze (è un ottimo modulo, ma potrebbe essere eccessivo se devi solo 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 la funzionalità di CCK al centro).

3
Chance G

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

Cambiato in:

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

Il che sembra aver risolto il problema.

1
Dominic Woodman

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.

0
phils