如何在完整内容视图中的正文上显示摘要(摘要)


11

我想在标题下方的每篇文章的顶部显示一个预告片,如以下“完整内容”布局所示:

  1. 标题
  2. 预告片(文章摘要)
  3. 图片
  4. 身体

此外,预告片应具有自己的格式(例如,斜体和更大的字体)

如果不编辑tpl文件或核心文件,我找不到任何方法。

一种解决方案是在我的内容类型中添加一个新字段“ article_teaser”,然后管理显示以使我的布局显示在“完整内容”视图中。这可行,但是我不喜欢在输入内容表单中有两个预告字段,因为我应该键入两次相同的文本。

看来我无法将字段主体拆分为“文本”和“摘要”部分,但只能显示其中一个,而不能同时显示两者!

有什么办法(一个模块?)来做到这一点?

(我的环境:具有Zen子主题的Drupal7。)

Answers:


10

您可以使用“视图”执行此操作。创建一个覆盖内容类型路径的视图。将显示设置为“ 字段”,然后将正文字段添加两次;设置第一个实例显示预告片,第二个实例显示主体。您可以在两者之间添加图像。使用Views还可以轻松自定义预告片/正文字段的CSS(默认情况下,Views提供了许多类,如果需要,您可以添加其他类)。

供参考: 节点关于使用“视图”的一系列视频截屏


非常感谢你。该链接非常有用,并且我正在学习很多关于视图的知识:我得到了一个可以完成这些工作的视图。但是视图显示节点列表,而我的内容类型(书页)是单个页面:如何用节点列表(我创建的视图)覆盖单个书页(节点)?我可能会丢失一些有关视图的信息,也许是如何用它自己的内容覆盖默认的书页。
gingo

@gingo要覆盖所有书籍页面,您需要以特殊方式配置视图路径。例如,查看分类法术语视图,该视图默认情况下由视图提供(禁用)。路径设置为/taxonomy/term/%; 如果您编辑该视图,则可以看到如何提取参数(上下文过滤器)以允许您编辑分类法术语的显示。您可以为网站上的书页设置类似的设置。
Patrick Kenny

好吧,我必须更深入地研究上下文过滤器,但我认为我的方法正确。谢谢。
gingo

3

视图绝对可以胜任。但我认为,此要求有些过高。

另一种实现方法是在自定义模块中实现hook_field_extra_fields()和hook_node_view()。

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

清除缓存,然后可以转到内容类型“管理显示”设置以拖放以放置“正文摘要”字段。例如admin/structure/types/manage/page/display


嗯,我认为这很接近,但是字段内容仅显示Array
arjan 2014年

嘿@arjan,您检查数组数据并将其复制到这里了吗?
eric.chenchao 2014年

创建变量的意义
何在

嗨,@ Kiee,你是对的。但是,此代码段仅用于示例注释;)
eric.chenchao

3

在drupal 7上:

在“正文”字段中,您可以使用“重写结果”并在“替换模式”中使用以下命令:

[body-summary]

这将显示完整的摘要。


您是个天才的哈维尔(Javier),还有其他一些过分的解释,您的是迄今为止效果最好的一个,太简单了!
布鲁诺·文森特

0

对于内容类型的重新定义,您需要查看面板,因为面板的功能之一就是完全重新定义某些内容类型的基本外观(或基于其他选择标准的信息)


0

正如Arjan所注意到的那样,Cityreader的代码片段会产生结果,但无法正确呈现。

这种变化对我有用:

 /**
 * 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

如果您对使用Views和Display Suite模块的无代码解决方案感兴趣,可以:

  1. 创建带有摘要字段的Views块。在高级设置中的上下文过滤器选项下,您可以设置“提供默认值”选项,其类型为URL的内容ID。

  2. 在内容类型-> [您的内容类型]->管理显示下,选择自定义字段选项(底部菜单),然后从您在步骤1中创建的视图中创建自定义阻止字段。

  3. 保存时,“自定义”字段将出现在节点类型字段列表中,您可以在其中选择它将出现在哪个区域。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.