Come visualizzare il riepilogo (teaser) sul corpo in una vista a contenuto completo


11

Voglio visualizzare un teaser nella parte superiore di ogni articolo sotto il titolo, come nel seguente layout di "contenuto completo":

  1. Titolo
  2. Teaser (riepilogo dell'articolo)
  3. Immagine
  4. Corpo

Inoltre il teaser dovrebbe avere una sua formattazione (ad esempio corsivo e un carattere più grande)

Non ho trovato alcun modo per farlo senza modificare i file tpl o core.

Una soluzione sarebbe quella di aggiungere un nuovo campo "article_teaser" al mio tipo di contenuto, quindi gestire la visualizzazione per ottenere il mio layout nella vista "Contenuto completo". Funziona, ma non mi piace avere due campi teaser nel mio modulo di contenuto di input, perché dovrei digitare due volte lo stesso testo.

Sembra che non riesca a dividere il corpo del campo nelle sue parti "testo" e "riepilogo", ma posso solo visualizzare l'una o l'altra, ma non entrambe!

C'è un modo (un modulo?) Per farlo?

(Il mio ambiente: Drupal 7 con tema secondario Zen.)

Risposte:


10

Puoi farlo con Views. Crea una vista che sovrascrive i percorsi per il tuo tipo di contenuto. Impostare la visualizzazione su Campi e quindi aggiungere due volte il campo del corpo; imposta la prima istanza per visualizzare il teaser e la seconda istanza per visualizzare il corpo. Puoi aggiungere le immagini in mezzo. Views consentirà inoltre di personalizzare facilmente i CSS dei campi teaser / body (per impostazione predefinita, Views fornisce un numero di classi e, se necessario, è possibile aggiungere ulteriori classi).

Per riferimento: Nodo Una serie di screencast video sull'uso di Views


Grazie mille. Il link è molto utile e sto imparando molto sulle visualizzazioni: ho una visione che ha fatto le cose. Ma le viste mostrano un elenco di nodi, mentre il mio tipo di contenuto (una pagina del libro) è una singola pagina: come posso sostituire una singola pagina del libro (un nodo) con un elenco di nodi (la vista che ho creato)? Probabilmente mi manca qualcosa delle visualizzazioni, forse come sovrascrivere la pagina del libro predefinita con la sua.
gingo,

@gingo Per sovrascrivere tutte le pagine del libro, è necessario configurare il percorso di visualizzazione in modo speciale. Per un esempio, guarda la vista Termine tassonomia , fornita da Views per impostazione predefinita (disabilitata). Il percorso è impostato su /taxonomy/term/%; se modifichi quella vista, puoi vedere come vengono inseriti gli argomenti (filtri contestuali) per permetterti di modificare la visualizzazione per i termini della tassonomia. Puoi impostare qualcosa di simile per le pagine del libro sul tuo sito.
Patrick Kenny,

bene, devo guardare più in profondità nei filtri contestuali, ma penso di essere sulla strada giusta. grazie.
gingo,

3

Le viste possono sicuramente fare il lavoro. Ma penso che sia un po 'eccessivo per questo requisito.

Un altro modo per raggiungere questo obiettivo è implementare hook_field_extra_fields () e hook_node_view () nel modulo personalizzato.

/**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary,
      '#weight' => 0,  
    );
  }
}

Svuota la cache e puoi andare alle impostazioni del tipo di contenuto "Gestisci display" per trascinare e rilasciare per posizionare il campo "Riepilogo corpo". Per esempio admin/structure/types/manage/page/display.


Hm, penso che questo sia vicino, ma il contenuto del campo non viene visualizzato, solo Array.
Arjan,

Ehi @arjan, hai controllato i dati dell'array e li hai copiati qui, per favore?
eric.chenchao,

Qual è il punto che crea una variabile, 1 riga sopra l'unico posto in cui viene usata, basta inserire la stringa
nell'istruzione

Ciao @Kiee, hai ragione. Ma questo frammento viene usato come esempio con commento;)
eric.chenchao,

3

su drupal 7:

Nel campo Corpo è possibile utilizzare 'riscrivi risultato' e utilizzare in 'schemi di sostituzione' questo:

[body-summary]

e questo mostrerà il riepilogo completo.


Sei un genio Javier, tutte le altre spiegazioni eccessive, la tua è quella che funziona di gran lunga la migliore e sooooooooooooo semplice!
Bruno Vincent,

0

Per la ridefinizione del tipo di contenuto è necessario esaminare i pannelli perché una delle funzioni dei pannelli sta ridefinendo esattamente l'aspetto di base di alcuni tipi di contenuto (o informazioni basate su altri criteri di selezione) Csaba


0

Come notato da Arjan, lo snippet di Cityreader produce il risultato ma non viene visualizzato correttamente.

Questa variazione ha funzionato per me:

 /**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary['#items'][0]['safe_summary'],
      '#weight' => 0,  
    );
  }
}

0

Se sei interessato a una soluzione senza codice utilizzando il modulo Views and Display Suite puoi:

  1. Crea blocco Viste con il campo di riepilogo su di esso. Sotto l'opzione Filtro contestuale nelle impostazioni avanzate è possibile impostare l'opzione "Fornisci valore predefinito" con il tipo Content ID dall'URL.

  2. In Tipi di contenuto -> [il tuo tipo di contenuto] -> Gestisci display seleziona l'opzione Campi personalizzati (menu in basso) e crea il campo Blocco personalizzato da Visualizza creato nel passaggio 1.

  3. Al momento del salvataggio, il campo personalizzato verrà visualizzato nell'elenco dei campi del tipo di nodo in cui è possibile scegliere in quale area verrà visualizzata.

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.