8.11 内容插件

8.11 内容插件 #

模板插件是模板代码的有用抽象,我们可以重复使用。 Hugo Modules还允许我们拥有内容插件,这些插件可以打包我们可以在多个网站上重复使用的内容。

可在众多网站上共享的内容的一个例子是使用条款和隐私政策页面。 同一公司的网站共享相同的使用条款页面。 我们可以将此页面移动到一个独立的模块,并将其导入所有公司网站以供重复使用。 该页面可以使用内置的param函数从配置中访问站点参数,还可以捆绑ShortCode以跨多个网站提供标准化数据。

我们需要在Acme保护伞下的所有网站上使用相同的使用条款和隐私政策页面。 Acme Corporation网站的使用条款和隐私政策页面也存在于存储库i n github.com/hugoinaction/ TermsAndPrivacy (https://github.com/hugoinaction/hugoinaction/tree/第08章-资源/06) 中。 菜单项在前面,硬编码的数据值(在不同的网站上可能不同)被替换为参数短码(例如,公司名称的{{<;param“TermsAndPrival y.Company_name”>;})。 执行这些更改已成为读者的练习。

Figure8.4

图8.4个月的工作:Bob面临着愤怒的营销主管的首当其冲,因为他没有一个中央位置来保存使用条款和隐私政策页面,这使得旧的使用条款在法律上使营销活动处于风险之中。

我们将把一个插件集成到Acme Corporation网站 (而不是Acme Corporation主题) 中,并将其配置为摆脱我们的硬编码使用条款和隐私政策页面。 要将此插件集成到Acme Corporation网站,我们需要执行以下步骤。

Listing 8.11 Adding a new dependency (config/_default/module.yaml)
imports:
  - path: github.com/hugoinaction/TermsAndPrivacy
...
  • 3 将术语和隐私参数添加到TermsAndPrivacy存储库的配置中,如清单所示。
Listing 8.12 Adding the parameters (config/_default/params.yaml)
TermsAndPrivacy:
  company_name: Acme Corporation 
  contact_email: contact@example.org 
  website: https://hugoinaction.com 
  contact_dpo_email: dpo@hugoinaction.com 
  contact_dpo_phone: 9999999999
  • 4 添加菜单文件以带回页脚菜单项,如下面的列表所示。
Listing 8.13 Restoring the footer entries (config/_default/menu.yaml)
footer:
    - name: Privacy Policy
      weight: 300
      url: /privacy
    - name: Terms of Use
      weight: 200
      url: /terms
CODE CHECKPOINT https://chapter-08-09.hugoinaction.com, and source code: https://github.com/hugoinaction/hugoinaction/tree/chapter-08-09.

隐私政策和使用条款页面从具有这些更改的共享内容模块加载。 此模块是通用的,你可以自由地将其用于Acme Corporation和Hugo in Action之外的自己的网站。

Exercise 8.3

关于内容插件,以下哪项陈述是正确的?(选择所有适用的选项。)

  • a. A content plugin creates a link to the shared content in the generated website.
  • b. A content plugin cannot have template code.
  • c. A content plugin can be used to set up access control on the content by splitting each area into a separate repository.
  • d. A content plugin moves the common content into a separate repository for one place of access.