infostreams / pagelist-snippet
A PhileCMS 插件,允许您列出或搜索您网站上的页面。
Requires
- infostreams/snippets: >=1.1
- phile-cms/phile: >=1
- phile-cms/plugin-installer-plugin: >=1
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 插件新安装时附带默认模板,并可用于为整个网站提供标准化的列表模板。
可用选项
第一个参数可以是 all
、below
或 search
,也可以包含一个命名页面列表。
'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。