Como exibir o resumo (teaser) sobre o corpo em uma exibição de conteúdo completo

11

Quero exibir um teaser na parte superior de cada artigo, abaixo do título, como no seguinte layout de "conteúdo completo":

  1. Título
  2. Teaser (resumo do artigo)
  3. Imagem
  4. Corpo

Além disso, o teaser deve ter sua própria formatação (por exemplo, itálico e uma fonte maior)

Não encontrei nenhuma maneira de fazer isso sem editar arquivos tpl ou arquivos principais.

Uma solução seria adicionar um novo campo "article_teaser" ao meu tipo de conteúdo e gerenciar a exibição para obter meu layout na exibição "Conteúdo completo". Isso funciona, mas não gosto de ter dois campos de teaser no formulário de conteúdo de entrada, porque devo digitar duas vezes o mesmo texto.

Parece que não posso dividir o corpo do campo em suas partes "texto" e "resumo", mas só posso exibir uma ou a outra, mas não as duas!

Existe alguma maneira (um módulo?) De fazer isso?

(Meu ambiente: Drupal 7 com subtema Zen.)

gingo
fonte

Respostas:

10

Você pode fazer isso com o Views. Crie uma exibição que substitua os caminhos para o seu tipo de conteúdo. Defina a exibição como Fields e adicione o campo body duas vezes; defina a primeira instância para exibir o teaser e a segunda instância para exibir o corpo. Você pode adicionar as imagens no meio. O Views também permitirá que você personalize o CSS dos campos teaser / body com facilidade (por padrão, o Views fornece várias classes e você pode adicionar classes adicionais, se necessário).

Para referência: série Nó Um de screencasts de vídeo sobre o uso de Views

Patrick Kenny
fonte
Muito obrigado. O link é muito útil e estou aprendendo muito sobre visualizações: tenho uma visão que fez as coisas. Mas as exibições mostram a lista de nós, enquanto o meu tipo de conteúdo (uma página de livro) é uma única página: como substituir uma única página de livro (um nó) por uma lista de nós (a exibição que eu criei)? Provavelmente estou perdendo algo sobre as visualizações, talvez sobre como substituir a página do livro padrão pela sua.
Gingo # 13/13
@gingo Para substituir todas as páginas do livro, você precisa configurar o caminho da visualização de uma maneira especial. Por exemplo, veja a visualização do termo Taxonomia , que é fornecida por Visualizações por padrão (desativada). O caminho está definido como /taxonomy/term/%; se você editar essa exibição, poderá ver como os argumentos (filtros contextuais) são puxados para permitir que você edite a exibição dos termos de taxonomia. Você pode definir algo semelhante para as páginas dos livros em seu site.
Patrick Kenny
bem, tenho que olhar mais profundamente nos filtros contextuais, mas acho que estou no caminho certo. obrigado.
Gingo
3

As visualizações podem definitivamente fazer o trabalho. Mas acho que é um pouco exagerado esse requisito.

Outra maneira de conseguir isso é implementar hook_field_extra_fields () e hook_node_view () em seu módulo personalizado.

/**
 * 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,  
    );
  }
}

Limpe o cache e você pode acessar as configurações do tipo de conteúdo "Gerenciar exibição" para arrastar e soltar para colocar o campo "resumo do corpo". Por exemplo admin/structure/types/manage/page/display.

eric.chenchao
fonte
Hum, acho que está perto, mas o conteúdo do campo não é exibido, apenas Array.
arjan
Hey @arjan, você verificou os dados da matriz e copia-os aqui, por favor?
Eric.chenchao
Qual é o ponto criando uma variável, uma linha acima o único lugar que é utilizado, basta colocar a corda no if
Kiee
Oi @Kiee, você está certo. Mas esse trecho é usado como exemplo com comentários;)
eric.chenchao
3

no drupal 7:

No campo Corpo, você pode usar 'reescrever resultado' e usar nos 'padrões de substituição' este:

[body-summary]

e isso exibirá o resumo completo.

javier eduardo
fonte
Você é um gênio Javier, todas as outras explicações de exagero, a sua é a que funciona melhor de longe e tãããããããããão simples!
Bruno Vincent
0

Para redefinição do tipo de conteúdo, é necessário examinar os painéis porque uma das funções dos painéis é redefinir exatamente a aparência básica de certos tipos de conteúdo (ou informações com base em outros critérios de seleção). Csaba

Csaba
fonte
0

Como Arjan percebeu, o trecho do Cityreader produz o resultado, mas não é renderizado corretamente.

Essa variação funcionou para mim:

 /**
 * 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,  
    );
  }
}
Mike Juic3
fonte
0

Se você estiver interessado em uma solução sem código usando o módulo Views e Display Suite, poderá:

  1. Bloco Criar vistas com o campo de resumo. Na opção Filtro contextual nas configurações avançadas, você pode definir a opção "Fornecer valor padrão" com o tipo ID do conteúdo do URL.

  2. Em Tipos de conteúdo -> [seu tipo de conteúdo] -> Gerenciar exibição, selecione a opção Campos personalizados (menu na parte inferior) e crie um campo de bloco personalizado em Exibição criada na etapa 1.

  3. Ao salvar, o campo Personalizado aparecerá na lista de campos do tipo de nó, onde você poderá escolher em qual região será exibida.

user1795440
fonte