让Drupal 8/9显示内容最近编辑时间

大伟哥 提交于 2020-08-15,周六, 22:21 ,最近更新于2020-08-18,周二, 00:38

有一说一,Drupal网站的文章以及其他内容类型是可以显示作者和发布日期的。只要你在结构-内容类型-编辑-显示设置这里选中“显示作者和日期信息”,都可以显示该内容的作者用户名和创建日期,显示的格式默认为“由大伟哥提交于2020-08-15,周六, 19:25”。

但是随着时间的推移,事情是会发生变化的。特别是技术方面,新技术的发展日新月异,我们发布的内容也会迅速变的out-dated,这样会严重误导我们的访客朋友,很可能不经意间就给他们挖了一些坑。因此作为网站或者博客的主人,我们需要不断地根据实际情况更新内容,给访客带来最新最准确有用的信息。同时当我们更新内容的时候,我们需要显要说明一下最近更新的时间,让用户和搜索引擎知道他们正在看到的内容是与时俱进的。

先说两个不修改Drupal的主题模版的方案:一是我们可以在编辑内容的时候,同时在正文的开始或者末尾,甚至在修改的地方加一个标注,写明什么修改的时间和原因,这样会有点麻烦,也不太醒目;第二种办法呢,可以把编著信息里面原来的发布时间清空,这样保存后,发布时间就是内容最后修改的时间。这种方法会把修改时间当成发布时间,最早的发布时间就没有记录了。这两种方法对于注重细节的人来说,都不算理想。大伟哥通过修改主题模版的方式,实现了这样的效果:

“由大伟哥提交于2020-08-15,周六, 19:25,最近修改于2020-08-19,周二,00:14”

作者、发布时间、修改时间一目了然,而且是由Drupal自动处理,省事。

以下是方法:

从继承的主题里复制node.html.twig文件到自定义主题的模版目录:

cp web/core/themes/bartik/templates/node.html.twig web/themes/custom/daweibro/template/.

打开复制的node.html.twig文件,找到:

    {% if display_submitted %}
      <div class="node__meta">
        {{ author_picture }}
        <span{{ author_attributes }}>
          {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
        </span>
        {{ metadata }}
      </div>
    {% endif %}

修改为:

    {% if display_submitted %}
      <div class="node__meta">
        {{ author_picture }}
        <span{{ author_attributes }}>
          {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
          {% if node.changed.value is defined %}
            {% set node_upd = node.changed.value|format_date() %}
            ,最近更新于{{ node_upd|placeholder|striptags }}
          {% endif %}
        </span>
        {{ metadata }}
      </div>
    {% endif %}

很简单,就是拿到了node最后修改的时间,然后处理一下文本输出就可以了。

文章分类

标签

添加新评论

此字段内容将保密,不会被其他人看见。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
发布评论前,请通过下面的验证,以免被当作垃圾评论机器人屏蔽。
3 + 5 =
计算出这道简单的算术题并键入答案。例如、1+3,就输入 4。