新功能在Gantry 5.2.14
粒子在你的站点的特定区域显示定制内容非常棒,但是你知道你也可以直接从内容管理系统(CMS)中显示内容吗?这是可能的,以下就是方法。
这是一个高级的过程,我们只建议您尝试一下,如果您是一个有经验的开发人员,了解如何在CMS中处理数据。这是最终用户和站点管理员可能永远不需要处理的事情,因为他们可以访问管理员中预先创建的表单字段。
您将需要使用Gantry内容查找器直接从Joomla加载信息。在此之后,您可以在前端呈现该数据。
所有人都有共同的功能
创建一个新的查询
{% set options = {published: true, id: [14, 3]} %}
{% set finder = joomla.finder('category', options) %}
.parse(options)解析选项数组到规则
在创建finder时,是否与第二个参数相同。
{% set options = {published: true, id: [14, 3]} %}
{% do finder.parse(options) %}
.find()使用分页查找项
默认分页限制,取决于对象类型。
{% set results = finder.find() %}
.count()计算项目总数
这个函数返回一个条目计数,忽略了设置的分页限制。
Total count of items: {{ finder.count() }}
操作
.start(limitstart = 0)分页开始
定义要显示的第一项。默认值为0。
{% do finder.start(10) %}
.limit(limit = 10)分页限制
定义最大项目数量。默认为10。
{% do finder.limit(3) %}
.order(by, direction = 'ASC', alias = 'a')页码顺序
指定项目的顺序。
{% do finder.order('id', 'DESC') %}
.where(field, operation, value)定制的where子句
操作之一: >, >=, <, <=, =, BETWEEN, NOT BETWEEN, IN 和 NOT IN.
{% do finder.where('id', '<', 5) %}
{% do finder.where('id', 'BETWEEN', [1,5]) %}
{% do finder.where('id', 'NOT IN', [1,2,3,4,5]) %}
分类查找
创建一个新的类别查找器
{% set options = {published: true, id: [[14,15], 3]} %}
{% set finder = joomla.finder('category', options) %}
.id(ids, include = true)
ids
要么是id数组,要么是单个id。include
True如果你想要包括列出的类别。false 如果你想把它们排除在外
{% do finder.id([1,2,3]) %}
.language(language = true)
language如果使用用户默认值,则使用语言标记。
{% do finder.language('en-GB') %}
注意:您需要包含语言过滤器或用户将看到来自所有语言的文章。
内容搜索
创建一个新的内容查找器
{% set options = {featured: true, id: [[1,2,3]]} %}
{% set finder = joomla.finder('content', options) %}
.id(ids, include = true)
ids
要么是id数组,要么是单个idinclude
True 如果您想要包含列出的文章,false如果你想把它们排除在外
{% do finder.id([1,2,3]) %}
.featured(include = true)
include如果你想要包含有特色的文章,如果你想要把它们排除在外,设置为真
{% do finder.featured() %}
.author(ids, include = true)
ids
要么是id数组,要么是单个idinclude
True 如果您想要包含列出的文章,false如果你想把它们排除在外
{% do finder.author(64) %}
.language(language = true)
language如果使用用户默认值,则使用语言标记。
{% do finder.language('en-GB') %}
注意:您需要包含语言过滤器或用户将看到来自所有语言的文章。
.category(ids, include = true)
ids
要么是id数组,要么是单个idinclude
True 如果您想要包含列出的文章,false如果你想把它们排除在外
{% do finder.category([1,2,3]) %}
类对象
类别对象,包含数据库中的所有字段。您可以访问可用的字段,但也有一些函数可以帮助您。
注意:数据库中的所有JSON编码字段都可以用作数组。注意:在html字段中使用 |raw 过滤器。
额外的字段
.route分类路径
包含到类别的路径。
<a href="{{ category.route }}">{{ category.title }}</a>
操作
.parent()获得父类对象
获取父类别或null
{% set parent = category.parent() %}
.parents()获取所有父类对象
获取父类别的列表
{% set parents= category.parents() %}
.compile(string)将类别编译成字符串
使用给定的字符串编译类别。模板context有一个名为category的变量,您可以使用它。
{{ category.render('<a href="/{{ category.route }}">{{ category.title }}</a>') }}
.render(template)呈现类别
使用给定的字符串编译类别。模板context有一个名为category的变量,您可以使用它。
{{ category.render('joomla/category-link.html.twig') }}
joomla/category-link.html.twig:
<a href="{{ category.route }}">{{ category.title }}</a>
内容对象
在文章实例中包含来自数据库的所有字段的内容对象。您可以访问可用的字段,但也有一些函数可以帮助您。
注意:数据库中的所有JSON编码字段都可以用作数组。注意:在html字段中使用 |raw 过滤器。
额外的字段
.text 引言+全文
包含引言和全文
{{ article.text|raw }}
.readmore有全文吗?
如果要读取的内容比在introtext中存在的内容要多,则返回true。
{{ article.readmore ? 'Read More...' }}
.route 文章路径
包含文章的路径
<a href="{{ article.route }}">{{ article.title }}</a>
操作
.author()获得作者对象
从本文的作者处获取JUser对象
{% set author = article.author() %}
.category()获取类对象
获取类对象
{% set category = article.category() %}
.categories()得到所有类别对象
获取从根目录开始的类别对象列表
{% set categories = article.categories() %}
.compile(string)将文章编译成字符串
用给定的字符串编译文章。模板context有一个名为article的变量,您可以使用它。
{{ article.render('<a href="/{{ article.route }}">{{ article.title }}</a>') }}
.render(template)呈现文章 使用给定的模板文件呈现文章。模板context有一个名为article的变量,您可以使用它。
{{ article.render('joomla/article-link.html.twig') }}
joomla/article-link.html.twig:
<a href="{{ article.route) }}">{{ article.title }}</a>
访问当前文章
您还可以获取当前的文章并在您自己的粒子中显示它的标题如下:
{% set request = gantry.request.request %}
{% if request['option'] == 'com_content' and request['view'] == 'article' and request['id'] %}
{% set article = joomla.finder('content').id([request['id']]).language().find()|first %}
<h1>{{ article.title }}</h1>
{% endif %}
在本例中,标题仅显示在单一的文章视图中。