infostreams/pagelist-snippet

A PhileCMS 插件,允许您列出或搜索您网站上的页面。

安装: 40

依赖: 0

建议者: 0

安全: 0

星星: 4

关注者: 3

分支: 2

开放性问题: 0

类型:phile-plugin

1.0.6 2016-09-16 09:55 UTC

This package is not auto-updated.

Last update: 2024-09-25 13:31:18 UTC


README

A PhileCMS 插件,允许您列出或搜索您网站上的页面。您可以为所有页面、当前页面或特定页面的子页面创建列表,为特定查询(全文搜索!)创建列表,并可以为您的页面列表提供筛选、排序和自定义模板。

此插件与默认的 Markdown 解析器一起工作,但也应该适用于提供 Markdown 替代方案的任何其他插件。即使应用于常规 HTML 文件,它也应该可以工作。

安装

使用 composer

php composer.phar require infostreams/pagelist-snippet

下载

  • 安装 Phile
  • 将此仓库克隆到 plugins/infostreams/pagelistSnippet
  • 还需要安装 Snippets 插件

激活

在安装插件及其依赖项后,您需要将以下行添加到您的 config.php 文件中

$config['plugins']['infostreams\\pagelistSnippet'] = array('active' => true);

您需要安装并激活 Snippets 插件才能使其正常工作。

工作原理

安装此插件后,您可以在您的 Markdown 页面上键入以下代码,以便在任何位置包含页面列表

(pagelist: all)

这将使用默认模板列出您网站上的所有页面。

模板

由于默认模板相对简单,您可能希望提供自己的模板。

(pagelist: all template:elements/pagelist)

这将使用您提供的自定义模板来样式化页面列表。这个模板与常规(Twig)模板类似,但它是一个 部分 模板,这意味着它只会用于页面的一部分。在这个模板中,您可以通过使用 pagelist 变量来访问页面列表。例如,请查看 plugins/infostreams/Templates/pagelist-default.html 文件。

如果您想覆盖默认模板,可以在您的主题中创建一个名为 pagelist-default.html 的模板。这将覆盖 PagelistSnippet 插件新安装时附带默认模板,并可用于为整个网站提供标准化的列表模板。

可用选项

第一个参数可以是 allbelowsearch,也可以包含一个命名页面列表。

'all'

列出所有页面

(pagelist: all)

'below'

列出当前页面的所有子页面

(pagelist: below)

列出另一个页面的所有子页面

(pagelist: below under: company/team)

列出另一个页面的所有子页面,并包括该页面本身

(pagelist: below under: company/team inclusive:true)

'search'

列出包含 URL 中提供文本的所有页面(默认情况下,在 q 参数中)

(pagelist: search)

搜索结果根据 TF-IDF 指标进行排序。

您可以选择使用 'under' 参数仅搜索网站的某个部分

(pagelist: search under: company/team)

列出包含 URL 中提供文本的所有页面,但将提供此文本的参数名称更改为 'search'

(pagelist: search param:search)

这将使搜索响应形式为 ....?search=keyword 的 URL,而不是默认的 ...?q=keyword

请注意,所提到的TF-IDF指标相对简单。这并非Google。

命名页面

您可以手动列出您想要包含在页面列表中的页面

(pagelist: [company/team/ceo, company/team/cto])

过滤和排序

您可以根据元数据中的信息过滤页面列表。过滤器以数组形式指定,即在中括号内,默认支持正则表达式。

显示当前页面下所有具有project模板的页面

(pagelist: below filter:[template:project])

显示当前页面下所有名称与提到的正则表达式匹配的模板的页面

(pagelist: below filter:[template:content.*])

您可以通过提供order参数来对结果页面进行排序。页面排序的语法遵循PhileCMS的语法。

(pagelist: below
    under: company/team
    order: meta.surname:asc)

列出所有团队成员,按姓氏排序,并使用自定义模板显示

(pagelist: below
    under: company/team
    order: meta.surname:asc
    template: team-members)

这需要您将名为team-members.html的文件添加到您的主题中。

如果您想,您可以硬编码全文关键词搜索

(pagelist: all
  keyword: sales)

这将列出所有包含关键词“sales”的页面。

组合

您可以几乎组合上述列出的所有参数

(pagelist: below
    under: company/team
    order: meta.surname:asc
    template: team-members
    filter: [tag: helpdesk]
    keyword: europe
)

这将列出所有在'company/team'下具有'helpdesk'标签且包含关键词'europe'的页面,按姓氏排序,并使用'team-members.html'模板渲染。

已知限制

怀疑当前的实现仅适用于Twig模板。我还没有测试过其他模板插件。如果您成功将其与其他插件(而非Twig)配合使用,请给我留言或提交一个pull request。