dd / modxevo-snippet-ddgetdocuments
Requires
- php: >=5.6.0
- composer/installers: ~1.0.0
- dd/evolutioncms-libraries-ddtools: >=0.50.0
This package is auto-updated.
Last update: 2024-08-06 07:19:13 UTC
README
一个用于通过自定义规则从文档树或自定义数据库表获取和解析资源的代码片段。
要求
- PHP >= 5.6
- MySQL >= 8 或 MariaDB >= 10.3.10(在旧版本中未测试)。
- (MODX)EvolutionCMS >= 1.1
- (MODX)EvolutionCMS.libraries.ddTools >= 0.50
安装
手动
1. 元素 → 代码片段:创建一个新的代码片段,数据如下
- 代码片段名称:
ddGetDocuments。 - 描述:
<b>1.6</b> 一个用于通过自定义规则从文档树或自定义数据库表获取和解析资源的代码片段。。 - 类别:
核心。 - 解析 DocBlock:
否。 - 代码片段代码(PHP):插入存档中的
ddGetDocuments_snippet.php文件的内容。
2. 元素 → 管理文件
- 创建一个新的文件夹
assets/snippets/ddGetDocuments/。 - 将存档提取到文件夹中(除了
ddGetDocuments_snippet.php)。
使用 (MODX)EvolutionCMS.libraries.ddInstaller
只需在您的源文件中运行以下PHP代码或在 控制台 中运行
//Include (MODX)EvolutionCMS.libraries.ddInstaller require_once( $modx->getConfig('base_path') . 'assets/libs/ddInstaller/require.php' ); //Install (MODX)EvolutionCMS.snippets.ddGetDocuments \DDInstaller::install([ 'url' => 'https://github.com/DivanDesign/EvolutionCMS.snippets.ddGetDocuments', 'type' => 'snippet' ]);
- 如果您的网站上不存在
ddGetDocuments,则ddInstaller将仅安装它。 - 如果您的网站上已存在
ddGetDocuments,则ddInstaller将检查其版本并在需要时更新它。
参数描述
核心参数
fieldDelimiter- 描述:用于在包含直接SQL查询的参数中区分数据库列名的字段分隔符,例如
providerParams->groupBy、providerParams->orderBy和providerParams->filter。 - 有效值:
字符串 - 默认值:
'`'
- 描述:用于在包含直接SQL查询的参数中区分数据库列名的字段分隔符,例如
数据提供者参数
-
provider- 描述:将用于获取文档的数据提供者名称。
数据提供者名称不区分大小写(以下名称相同:parent、Parent、pArEnT等)。 - 有效值
'parent''select'
- 默认值:
'parent'
- 描述:将用于获取文档的数据提供者名称。
-
providerParams -
providerParams->filter- 描述:在获取资源时应用的SQL样式过滤条件。
注意,在过滤参数中指定的所有字段/tvs名称都必须用fieldDelimiter包装。 - 有效值:
字符串 - 默认值:
'`published` = 1 AND `deleted` = 0'
- 描述:在获取资源时应用的SQL样式过滤条件。
-
providerParams->total- 描述:将返回的资源最大数量。
- 有效值:
整数 - 默认值: —(全部)
-
providerParams->offset- 描述:资源偏移量。
- 有效值:
整数 - 默认值:
0
-
providerParams->groupBy- 描述:将具有相同值的项分组到汇总项中(类似于SQL的
GROUP BY)。 - 有效值:
stringCommaSeparated - 默认值: —
- 描述:将具有相同值的项分组到汇总项中(类似于SQL的
-
providerParams->groupBy[$i]- 描述:用于对项进行分组的文档字段或TV。
- 有效值:
字符串 - 必需
-
providerParams->orderBy- 描述:表示排序规则的字符串。
TV名称也可以使用。 - 有效值:
字符串 - 默认值: —
- 描述:表示排序规则的字符串。
提供者 → 父级 (&provider=`parent` )
-
providerParams->parentIds- 描述:父ID(s)。
- 有效值
数组stringCommaSeparated
- 默认值:
[0]
-
providerParams->parentIds[$i]- 描述:文档ID。
- 有效值:
整数 - 必需
-
providerParams->depth- 描述:子文档搜索的深度。
- 有效值:
整数 - 默认值:
1
-
providerParams->excludeIds- 描述:需要排除的文档ID。
- 有效值
数组stringCommaSeparated
- 默认值: —
-
providerParams->excludeIds[$i]- 描述:文档ID。
- 有效值:
整数 - 必需
提供者 → 选择 (&provider=`select` )
-
providerParams->ids- 描述:要输出的文档ID。
- 有效值
数组stringCommaSeparated
- 必需
-
providerParams->ids[$i]- 描述:文档ID。
- 有效值:
整数 - 必需
提供者 → 自定义dbtable (&provider=`customdbtable` )
从自定义DB表获取资源。
providerParams->resourcesTableName- 描述:获取资源的DB表。
- 有效值:
字符串 - 必需
输出格式参数
-
outputter- 描述:输出的格式。
输出器名称不区分大小写(以下名称相等:string,String,sTrInG等)。 - 有效值
'string''json''sitemap''yandexmarket''raw'
- 默认值:
'string'
- 描述:输出的格式。
-
outputterParams -
outputterParams->templates- 描述:输出模板。
- 有效值:
object - 默认值: —
输出器 → 字符串 (&outputter=`string` )
-
outputterParams->templates->item- 描述:项模板。
可用占位符[+任何文档字段或TV名称+]— 任何文档字段名称或TV。[+任何扩展占位符+]— 任何扩展占位符(请参阅下面的扩展器描述)。[+来自placeholders参数的任何占位符+]— 任何自定义占位符(请参阅下面的outputterParams->placeholders描述)。[+itemNumber+]— 从1开始的项编号。[+itemNumberZeroBased+]从0开始的项编号。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 必需
- 描述:项模板。
-
outputterParams->templates->itemFirst- 描述:第一个项的模板。与
outputterParams->templates->item具有相同的占位符。 - 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值:==
outputterParams->templates->item。
- 描述:第一个项的模板。与
-
outputterParams->templates->itemLast- 描述:最后一个项的模板。与
outputterParams->templates->item具有相同的占位符。 - 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值:==
outputterParams->templates->item。
- 描述:最后一个项的模板。与
-
outputterParams->templates->wrapper- 描述:包装模板。
可用占位符[+任何文档字段或TV名称+]— 任何文档字段名称或TV。[+任何扩展占位符+]— 任何扩展占位符(请参阅下面的扩展器描述)。[+来自placeholders参数的任何占位符+]— 任何自定义占位符(请参阅下面的outputterParams->placeholders描述)。[+ddGetDocuments_items+]
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值: —
- 描述:包装模板。
-
outputterParams->templates->noResults- 描述:当没有找到项时输出的块或文本。
与outputterParams->templates->wrapper具有相同的占位符。 - 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值: —
- 描述:当没有找到项时输出的块或文本。
-
outputterParams->placeholders- 描述:需要将附加数据传递到
templates->item,templates->itemFirst,templates->itemLast和templates->wrapper。
支持数组:some[a]=one&some[b]=two=>[+some.a+],[+some.b+];some[]=one&some[]=two=>[+some.0+],[some.1]。 - 有效值:
object - 默认值: —
- 描述:需要将附加数据传递到
-
outputterParams->placeholders->{$name}- 描述:占位符名称的键和占位符值的值。
- 有效值:
字符串 - 必需
-
outputterParams->itemGlue- 描述:在渲染时组合项的字符串。
- 有效值:
字符串 - 默认值:
''
输出器 → Json (&outputter=`json` )
-
outputterParams->docFields- 描述:要输出的文档字段(包括TV)。
- 有效值
数组stringCommaSeparated
- 默认值:
'id'
-
outputterParams->docFields[$i]- 描述:文档字段或TV。
- 有效值
stringDocFieldNamestringTvName
- 必需
-
outputterParams->templates->{$docFieldName}-
说明:您可以使用模板来处理一些文档字段。
模板将在结果转换为JSON之前使用。因此,您无需关心字符转义。这对于通过运行代码片段来操作文档字段值非常有用。
可用占位符
[+value+]—— 字段值[+任何文档字段或TV名称+]—— 在outputterParams->docFields中指定的任何文档字段名称或TV
-
有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
-
必需
-
输出器 → 网站地图 (&outputter=`sitemap` )
以 网站地图XML格式 输出。
-
outputterParams->priorityTVName- 说明:设置文档相对优先级的TV名称。
- 有效值:
stringTvName - 默认值:
'general_seo_sitemap_priority'
-
outputterParams->changefreqTVName- 说明:设置变更频率的TV名称。
- 有效值:
stringTvName - 默认值:
'general_seo_sitemap_changefreq'
-
outputterParams->templates->item- 描述:项模板。
可用占位符[+任何文档字段或TV名称+]— 任何文档字段名称或TV。[+任何扩展占位符+]— 任何扩展占位符(请参阅下面的扩展器描述)。[+itemNumber+]— 从1开始的项编号。[+itemNumberZeroBased+]从0开始的项编号。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<url> <loc>[(site_url)][~[+id+]~]</loc> <lastmod>[+editedon+]</lastmod> <priority>[+[+priorityTVName+]+]</priority> <changefreq>[+[+changefreqTVName+]+]</changefreq> </url>
- 描述:项模板。
-
outputterParams->templates->wrapper- 描述:包装模板。
可用占位符[+任何文档字段或TV名称+]— 任何文档字段名称或TV。[+任何扩展占位符+]— 任何扩展占位符(请参阅下面的扩展器描述)。[+ddGetDocuments_items+]
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> [+ddGetDocuments_items+] </urlset>
- 描述:包装模板。
输出器 → Yandexmarket (&outputter=`yandexmarket` )
以 YML格式 输出。
-
outputterParams->shopData- 说明:商店数据。
- 有效值:
object - 必需
-
outputterParams->shopData->shopName- 说明:简短商店名称,长度 <= 20。
- 有效值:
字符串 - 必需
-
outputterParams->shopData->companyName- 说明:公司法定名称。内部数据,不显示但由Yandex要求。
- 有效值:
字符串 - 必需
-
outputterParams->shopData->agency- 说明:网络开发代理商名称。
- 有效值:
字符串 - 默认值: —
-
outputterParams->shopData->currencyId- 说明:货币代码(见 Yandex文档)。
- 有效值:
字符串 - 默认值:
'RUR'
-
outputterParams->shopData->platform- 说明:
<platform>标签内容。 - 有效值:
字符串 - 默认值:
'(MODX) Evolution CMS'
- 说明:
-
outputterParams->shopData->version- 说明:
<version>标签内容。 - 有效值:
字符串 - 默认值:
'[(settings_version)]'
- 说明:
-
outputterParams->categoryIds_last- 说明:允许在类别部分添加额外的父元素。如果为空,则只返回商品的直接父元素。
- 有效值:
stringCommaSeparated - 默认值: —
-
outputterParams->categoryIds_last[i]- 描述:文档ID。
- 有效值:
整数 - 必需
-
outputterParams->offerFields- 说明:报价字段参数。
- 有效值:
object - 必需
-
outputterParams->offerFields->{$fieldName}- 说明:报价字段参数。
- 有效值
string—— 参数可以设置为文档字段名称object—— 或作为包含附加参数的对象(见下文)
- 默认值: —
-
outputterParams->offerFields->{$fieldName}->docFieldName- 说明:包含报价字段值的文档字段名称。
- 有效值:
stringTvName - 必需
-
outputterParams->offerFields->{$fieldName}->disableEscaping- 说明:您可以在字段值中禁用特殊字符的转义(
',",&,<,>)。 - 有效值:
boolean - 默认值:
false
- 说明:您可以在字段值中禁用特殊字符的转义(
-
outputterParams->offerFields->{$fieldName}->valuePrefix- 说明:您可以为字段值之前添加自定义字符串。
- 有效值:
字符串 - 默认值: —
-
outputterParams->offerFields->{$fieldName}->valueSuffix- 说明:您可以为字段值之后添加自定义字符串。
- 有效值:
字符串 - 默认值: —
-
outputterParams->offerFields->price- 说明:包含报价价格的文档字段名称。
如果文档字段值为空,但设置了outputterParams->offerFields->priceOld,则使用后者。 - 有效值:
stringTvName - 必需
- 说明:包含报价价格的文档字段名称。
-
outputterParams->offerFields->priceOld- 说明:包含旧报价价格的文档字段名称(必须小于
outputterParams->offerFields->price,否则将不会使用)。 - 有效值:
stringTvName - 默认值: —
- 说明:包含旧报价价格的文档字段名称(必须小于
-
outputterParams->offerFields->picture- 说明:包含报价图片的文档字段名称。
- 有效值:
stringTvName - 默认值: —
-
outputterParams->offerFields->name- 说明:包含报价名称的文档字段名称。
如果文档字段值为空,则使用pagetitle字段。 - 有效值
stringDocFieldNamestringTvName
- 默认值:
'pagetitle'
- 说明:包含报价名称的文档字段名称。
-
outputterParams->offerFields->model- 描述:包含offer模型的文档字段名。
- 有效值
stringDocFieldNamestringTvName
- 默认值: —
-
outputterParams->offerFields->model- 描述:包含offer供应商的文档字段名。
- 有效值
stringDocFieldNamestringTvName
- 默认值: —
-
outputterParams->offerFields->available- 描述:包含offer可用状态(
true|false)的文档字段名。 - 有效值
stringTvName''— 总是显示'true'。
- 默认值:
''
- 描述:包含offer可用状态(
-
outputterParams->offerFields->description- 描述:包含offer描述(少于3 000个字符)的文档字段名。
- 有效值
stringDocFieldNamestringTvName
- 默认值: —
-
outputterParams->offerFields->salesNotes- 描述:包含offer 销售注释 的文档字段名。
- 有效值
stringDocFieldNamestringTvName
- 默认值: —
-
outputterParams->offerFields->manufacturerWarranty- 描述:包含offer制造商保修状态的文档字段名(
true|false)。 - 有效值:
stringTvName - 默认值: —
- 描述:包含offer制造商保修状态的文档字段名(
-
outputterParams->offerFields->countryOfOrigin- 描述:包含offer原产国的文档字段名。
- 有效值
stringDocFieldNamestringTvName
- 默认值: —
-
outputterParams->offerFields->homeCourierDelivery- 描述:包含offer快递送货状态的文档字段名(
true|false)。 - 有效值:
stringTvName - 默认值: —
- 描述:包含offer快递送货状态的文档字段名(
-
outputterParams->offerFields->dimensions- 描述:包含offer尺寸(长度、宽度、高度)包括包装的文档字段名。
请以厘米为单位指定尺寸。格式:三个正数,精确到0.001,使用点作为小数分隔符。
数字必须由斜杠字符/分隔,不留空格。 - 有效值
stringDocFieldNamestringTvName
- 默认值: —
- 描述:包含offer尺寸(长度、宽度、高度)包括包装的文档字段名。
-
outputterParams->offerFields->weight- 描述:包括包装的物品重量,单位为千克。
某些类别对最小或最大重量有限制。
下载最小和最大重量值列表.
在任何类别中,重量可以精确到千分之一(例如,1.001,使用点作为小数点)。
如果最小值设置为0,则没有最小重量限制,可以从一克(0.001千克)开始指定。 - 有效值
stringDocFieldNamestringTvName
- 默认值: —
- 描述:包括包装的物品重量,单位为千克。
-
outputterParams->offerFields->additionalParams- 描述:包含offer 参数 元素的文档字段名。
- 有效值
stringDocFieldNamestringTvName
- 默认值: —
-
outputterParams->offerFields->customData- 描述:包含必须在
</offer>之前插入的文本的文档字段名。 - 有效值
stringDocFieldNamestringTvName
- 默认值: —
- 描述:包含必须在
-
outputterParams->templates->wrapper- 描述:包装模板。
可用占位符[+任何文档字段或TV名称+]— 任何文档字段名称或TV。[+任何扩展占位符+]— 任何扩展占位符(请参阅下面的扩展器描述)。[+ddGetDocuments_items+]
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<?xml version="1.0" encoding="utf-8"?> <yml_catalog date="[+generationDate+]"> <shop> <name>[+shopData.shopName+]</name> <company>[+shopData.companyName+]</company> <url>[(site_url)]</url> <platform>[+shopData.platform+]</platform> <version>[+shopData.version+]</version> [+shopData.agency+] <currencies> <currency id="[+shopData.currencyId+]" rate="1" /> </currencies> <categories>[+ddGetDocuments_categories+]</categories> <offers>[+ddGetDocuments_items+]</offers> </shop> </yml_catalog>
- 描述:包装模板。
-
outputterParams->templates->categories_item- 描述:类别项目模板。可用的占位符
[+id+]— 类别文档ID。[+value+]— 类别名称。[+parent+]— 父类别ID。[+attrs+]— 属性字符串(例如parentId="42")。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<category id="[+id+]"[+attrs+]> [+value+] </category>
- 描述:类别项目模板。可用的占位符
-
outputterParams->templates->offers_item- 描述:offer项目模板。
可用占位符[+任何文档字段或TV名称+]— 任何文档字段名称或TV。[+任何扩展占位符+]— 任何扩展占位符(请参阅下面的扩展器描述)。[+itemNumber+]— 从1开始的项编号。[+itemNumberZeroBased+]从0开始的项编号。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<offer id="[+id+]" available="[+available+]"> <url>[(site_url)][~[+id+]~]</url> [+name+] [+price+] [+priceOld+] [+shopData.currencyId+] [+categoryId+] [+picture+] [+vendor+] [+model+] [+description+] [+salesNotes+] [+manufacturerWarranty+] [+countryOfOrigin+] [+delivery+] [+dimensions+] [+weight+] [+additionalParams+] [+customData+] </offer>
- 描述:offer项目模板。
-
outputterParams->templates->{'offers_item_elem' . $FieldName}- 描述:可以为任何offer元素设置自定义模板。指定与
offerFields->参数一致的元素名称,例如outputterParams->templates->offers_item_elemCountryOfOrigin。
可用占位符[+tagName+]— 元素标签名称。[+value+]— 元素值。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值: —
- 描述:可以为任何offer元素设置自定义模板。指定与
扩展参数
-
extenders- 描述:以逗号分隔的字符串,用于确定应应用于片段的哪些扩展器。
请注意,扩展器名称的顺序可能会影响输出。 - 有效值:
stringCommaSeparated - 默认值: —
- 描述:以逗号分隔的字符串,用于确定应应用于片段的哪些扩展器。
-
extenders[i]- 描述:扩展器名称。
请注意,扩展器名称的顺序可能会影响输出。
扩展器名称不区分大小写(以下名称相同:pagination、Pagination、pAgInAtIoN等)。 - 有效值
'pagination''tagging''search''sortFromURL'
- 必需
- 描述:扩展器名称。
-
extendersParams -
extendersParams->{$extenderName}- 描述:扩展器的参数,其中键是扩展器名称,值是扩展器参数。
- 有效值:`object
- 默认值: —
扩展器 → 分页(&extenders=`pagination`)
-
extendersParams->pagination->wrapperTpl- 描述:用于输出分页的块。
可用占位符[+previous+]— 跳转到上一页的导航块HTML代码(见以下参数描述)。[+next+]— 跳转到下一页的导航块HTML代码(见以下参数描述)。[+pages+]— 分页导航块的HTML代码(见以下参数描述)。[+totalPages+]— 总页数。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<div class="pagination_container"> <div class="pagination clearfix"> <div class="pagination_links">[+previous+]</div> <div class="pagination_pages">[+pages+]</div> <div class="pagination_links">[+next+]</div> </div> </div>
- 描述:用于输出分页的块。
-
extendersParams->pagination->pageTpl- 描述:用于输出分页内页面的块。
可用占位符[+url+]— 页面URL。[+page+]— 页码。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<a href="[~[*id*]~][+url+]" class="strl">[+page+]</a>
- 描述:用于输出分页内页面的块。
-
extendersParams->pagination->currentPageTpl- 描述:用于输出分页内当前页面的块。
可用占位符[+url+]— 页面URL。[+page+]— 页码。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<a href="[~[*id*]~][+url+]" class="strl active">[+page+]</a>
- 描述:用于输出分页内当前页面的块。
-
extendersParams->pagination->nextTpl- 描述:用于输出跳转到下一页的导航块的块。
可用占位符[+url+]— 下一页URL。[+totalPages+]— 总页数。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<a href="[~[*id*]~][+url+]" class="pagination_next strl"><span>Следующая</span> →</a><br> <small><a href="[~[*id*]~]?page=[+totalPages+]" class="pagination_last strl"><span>Последняя</span> →</a></small>
- 描述:用于输出跳转到下一页的导航块的块。
-
extendersParams->pagination->nextOffTpl- 描述:用于输出下一页导航块的块,如果之后没有更多页面。
可用占位符[+totalPages+]— 总页数。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<span class="pagination_next"><span>Следующая</span> →</span><br> <small><span class="pagination_last"><span>Последняя</span></span> →</small>
- 描述:用于输出下一页导航块的块,如果之后没有更多页面。
-
extendersParams->pagination->previousTpl- 描述:用于输出跳转到上一页的导航块的块。
可用占位符[+url+]— 下一页URL。[+totalPages+]— 总页数。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<a href="[~[*id*]~][+url+]" class="pagination_prev strl">← <span>Предыдущая</span></a><br> <small><a href="[~[*id*]~]" class="pagination_first strl">← <span>Первая</span></a></small>
- 描述:用于输出跳转到上一页的导航块的块。
-
extendersParams->pagination->previousOffTpl- 描述:用于输出上一页导航块的块,如果之前没有更多页面。
可用占位符[+totalPages+]— 总页数。
- 有效值
stringChunkNamestring— 使用以@CODE:开始的内联模板。
- 默认值
<span class="pagination_prev">← <span>Предыдущая</span></span><br> <small><span class="pagination_first">← <span>Первая</span></span></small>
- 描述:用于输出上一页导航块的块,如果之前没有更多页面。
扩展器 → 标签(&extenders=`tagging`)
-
extendersParams->tagging->tagsDocumentField- 描述:文档字段(TV)包含标签。
- 有效值:
stringTvName - 默认值:
'tags'
-
extendersParams->tagging->tagsDelimiter- 描述:文档字段中的标签分隔符。
- 有效值:
字符串 - 默认值:
', '
-
extendersParams->tagging->tagsRequestParamName- 描述:从
$_REQUEST获取标签值的参数。 - 有效值:
字符串 - 默认值:
'tags'
- 描述:从
扩展器 → 搜索(&extenders=`search`)
-
extendersParams->search->docFieldsToSearch- 描述:要搜索的文档字段(包括TV)。
- 有效值
数组stringCommaSeparated
- 默认值:
'pagetitle,content'
-
extendersParams->search->docFieldsToSearch[i]- 描述:文档字段或TV。
- 有效值
stringDocFieldNamestringTvName
- 必需
扩展器 → 从URL排序(&extenders=`sortFromURL`)
$_GET['orderBy']- 描述:表示排序规则的字符串,类似于
providerParams->orderBy。 - 有效值:
字符串 - 默认值: —
- 描述:表示排序规则的字符串,类似于
示例
所有示例均使用HJSON编写,但您也可以使用纯JSON。
简单从ID为1的父文档中获取子文档
[[ddGetDocuments?
&providerParams=`{
parentIds: 1
depth: 1
}`
&outputterParams=`{
templates: {
item:
'''
@CODE:<div>
<h2>[+pagetitle+]</h2>
<p>[+introtext+]</p>
[+someTV+]
</div>
'''
}
}`
]]
使用providerParams->filter从ID为1的父文档中简单获取子文档
添加一个不会输出所有内容的过滤器。假设我们只需要已发布的文档。
别忘了fieldDelimiter。
[[ddGetDocuments?
&fieldDelimiter=`#`
&providerParams=`{
parentIds: 1
depth: 1
filter: "#published# = 1"
}`
&outputterParams=`{
templates: {
item: documents_item
}
}`
]]
因此,我们可以过滤我们想要的(我们可以使用AND和OR,文档字段和TV)
[[ddGetDocuments?
&fieldDelimiter=`#`
&providerParams=`{
parentIds: 1
depth: 1
filter:
'''
#published# = 1 AND
#hidemenu# = 0 OR
#SomeTVName# = 1
'''
}`
&outputterParams=`{
templates: {
item: documents_item
}
}`
]]
使用date类型的TV进行排序(providerParams->orderBy)
数据库中存储的日期格式特定(01-02-2017 08:59:45),并且第一次排序时工作不正常。因此,我们不能只是输入
&providerParams=`{
orderBy: "#TVName# DESC"
}`
为了正确工作,我们需要将数据库中的日期转换为Unixtime进行排序
&providerParams=`{
orderBy: "STR_TO_DATE(#TVName#, '%d-%m-%Y %H:%i:%s') DESC"
}`
当TVName — TV名称用于排序。
输出器 → JSON(&outputter=`json`):获取文档并以JSON格式输出
[[ddGetDocuments?
&providerParams=`{parentIds: 1}`
&outputter=`json`
]]
返回
[
{"id": "2"},
{"id": "3"},
{"id": "4"}
]
输出器 → JSON(&outputter=`json`):设置要输出的文档字段
[[ddGetDocuments?
&providerParams=`{parentIds: 1}`
&outputter=`json`
&outputterParams=`{
docFields: id,pagetitle,menuindex,someTV
}`
]]
返回
[
{
"id": "2",
"pagetitle": "About",
"menuindex": "0",
"someTV": "Some value"
},
{
"id": "3",
"pagetitle": "Partners",
"menuindex": "1",
"someTV": ""
},
{
"id": "4",
"pagetitle": "Contacts",
"menuindex": "2",
"someTV": ""
}
]
将具有相同字段值的项分组到摘要项中(providerParams->orderBy)
例如,我们有以下具有TV gender的文档
- Mary Teresa, female
- Mahatma Gandhi, male
- Tenzin Gyatso, male
- Dmitry Muratov, male
- ICAN, none
我们希望创建一个包含唯一项目的性别列表
[[ddGetDocuments?
&fieldDelimiter=`#`
&providerParams=`{
//The parent of our documents
parentIds: 42
//The field by which the items will be grouped
groupBy: "#gender#"
}`
&outputter=`json`
&outputterParams=`{
docFields: gender
}`
]]
返回
[
{"gender": "female"},
{"gender": "male"},
{"gender": "none"}
]
扩展器 → 分页(&extenders=`pagination`)
[[ddGetDocuments?
&fieldDelimiter=`#`
&providerParams=`{
parentIds: "[*id*]"
filter: "#published# = 1"
total: 3
orderBy: "#pub_date# DESC`"
}`
&outputterParams=`{
templates: {
item: documents_item
wrapper:
''''
@CODE:[+ddGetDocuments_items+]
[+extenders.pagination+]
'''
noResults: "@CODE:"
}
}`
&extenders=`pagination`
&extendersParams=`{
pagination: {
wrapperTpl: general_pagination
nextTpl: general_pagination_next
previousTpl: general_pagination_prev
nextOffTpl: general_pagination_nextOff
previousOffTpl: general_pagination_prevOff
pageTpl: general_pagination_page
currentPageTpl: general_pagination_pageCurrent
}
}`
]]
&providerParams=`{parentIds: "[*id*]"}`— 获取当前文档的子文档。&providerParams=`{filter: "#published# = 1"}`— 仅显示已发布的。&providerParams=`{total: 3}`— 每页项目数。&providerParams=`{orderBy: "#pub_date# DESC"}`— 按发布日期排序,最新首先。&outputterParams=`{templates: {item: documents_item}}`— 项目模板(块名称)。&outputterParams=`{templates: {wrapper: "@CODE:[+ddGetDocuments_items+][+extenders.pagination+]"}}`— 我们需要设置分页输出的位置。&outputterParams=`{templates: {noResults: "@CODE:"}}`— 如果未找到任何内容,则返回空。&extendersParams=`{pagination: {}}`— 分页模板(请参阅参数描述)。
扩展器 → 搜索(&extenders=`search`)
在搜索结果页面调用此代码片段。让我们指定搜索的位置和深度。设置过滤器以获取所需的文档。
[[ddGetDocuments?
&fieldDelimiter=`#`
&providerParams=`{
parentIds: 1
depth: 3
filter:
'''
#published# = 1 AND
#deleted# = 0 AND
#template# = 11
'''
}`
&extenders=`search`
&extendersParams=`{
docFieldsToSearch: pagetitle,content,someTv
}`
&outputterParams=`{
templates: {
item: documents_item
}
}
]]
然后在页面URL中添加 ?query=Some query text,代码片段将仅返回包含该字符串的 pagetitle、content 或 someTv 字段的文档。
我们建议使用缓存的代码片段调用,并在CMS配置中启用带有 $_GET 参数的文档缓存类型。
通过 \DDTools\Snippet::runSnippet 运行代码片段,不使用数据库和 eval。
//Include (MODX)EvolutionCMS.libraries.ddTools require_once( $modx->getConfig('base_path') . 'assets/libs/ddTools/modx.ddtools.class.php' ); //Run (MODX)EvolutionCMS.snippets.ddGetDocuments \DDTools\Snippet::runSnippet([ 'name' => 'ddGetDocuments', 'params' => [ //It is convenient to set the parameter as a native PHP array or object 'providerParams' => [ 'parentIds' => 1 ], 'outputter' => 'json' ] ]);