dd / evolutioncms-snippets-ddmenubuilder
此软件包的最新版本(2.2.0)没有可用的许可信息。
简单灵活的模板驱动式菜单构建器。最初灵感来源于结合 Wayfinder 和 Ditto 的优点,同时显著简化了代码。
2.2.0
2023-05-05 08:05 UTC
Requires
- php: >=5.6.0
- dd/modxevo-library-ddtools: >=0.59.0
This package is auto-updated.
Last update: 2024-09-06 08:56:23 UTC
README
简单灵活的模板驱动式菜单构建器。最初灵感来源于结合 Wayfinder 和 Ditto 的优点,同时显著简化了代码。
需求
- PHP >= 5.6
- (MODX)EvolutionCMS >= 1.1
- (MODX)EvolutionCMS.libraries.ddTools >= 0.59
安装
使用 (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.ddMenuBuilder \DDInstaller::install([ 'url' => 'https://github.com/DivanDesign/EvolutionCMS.snippets.ddMenuBuilder', 'type' => 'snippet' ]);
- 如果您的网站上没有
ddMenuBuilder
,则ddInstaller
将直接安装它。 - 如果您的网站上已经存在
ddMenuBuilder
,则ddInstaller
将检查其版本并在需要时更新它。
手动
1. 元素 → 片段:创建一个新的片段,以下数据
- 片段名称:
ddMenuBuilder
。 - 描述:
<b>2.2</b> 简单灵活的模板驱动式菜单构建器。
。 - 分类:
核心 → 导航
。 - 解析 DocBlock:
否
。 - 片段代码(PHP):插入从存档中
ddMenuBuilder_snippet.php
文件的内容。
2. 元素 → 管理文件
- 创建一个新的文件夹
assets/snippets/ddMenuBuilder/
。 - 将存档提取到该文件夹中(除了
ddMenuBuilder_snippet.php
)。
参数描述
数据提供者参数
提供者获取文档数据以输出。
-
提供者
- 描述: 用于获取文档的提供者名称。
- 有效值
'parent'
'select'
- 默认值:
'parent'
-
提供者参数
提供者 → 父级 (&provider=`parent`
)
从所需的父级中选择子文档。
-
提供者参数->parentIds
- 描述: 父级 ID — 菜单的起始点。指定 '0' 以从网站根目录开始。
- 有效值
数组
以逗号分隔的字符串
- 默认值:
'0'
-
提供者参数->parentIds[i]
- 描述: 父级 ID。
- 有效值:
integerDocumentID
- 必需
-
提供者参数->depth
- 描述: 构建菜单的文档深度。
- 有效值:
integer
- 默认值:
1
提供者 → 选择 (&provider=`select`
)
仅输出所选文档。
-
提供者参数->ids
- 描述: 文档 ID。
- 有效值
数组
以逗号分隔的字符串
- 必需
-
提供者参数->ids[i]
- 描述: 文档 ID。
- 有效值:
integerDocumentID
- 必需
常规参数
-
sortDir
- 描述: 排序方向(按
menuindex
字段)。 - 有效值
'ASC'
'DESC'
- 默认值:
'ASC'
- 描述: 排序方向(按
-
showPublishedOnly
- 描述: 仅显示已发布的文档。
- 有效值
0
1
- 默认值:
1
-
showInMenuOnly
- 描述:仅显示菜单中可见的文档。
- 有效值
0
1
- 默认值:
1
模板参数
模板
- 描述:模板。
所有模板中可用的占位符[+id+]
[+menutitle+]
— 如果为空,则等于[+pagetitle+]
。[+pagetitle+]
[+published+]
[+isfolder+]
[+totalAllChildren+]
[+totalThisLevelChildren+]
[+level+]
- 有效值
- 默认值: —
- 描述:模板。
项目模板
-
templates->item
- 描述:菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
'@CODE:<li><a href="[~[+id+]~]" title="[+pagetitle+]">[+menutitle+]</a></li>'
-
templates->itemHere
- 描述:当前文档的菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
'@CODE:<li class="active"><a href="[~[+id+]~]" title="[+pagetitle+]">[+menutitle+]</a></li>'
-
templates->itemActive
- 描述:当当前文档不在菜单中显示(例如,通过
depth
参数排除)时,作为当前文档父文档之一的文档的菜单项模板。 - 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
= templates->itemHere
- 描述:当当前文档不在菜单中显示(例如,通过
-
templates->itemUnpub
- 描述:未发布文档的菜单项模板(当
showPublishedOnly
==0
时)。 - 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
= templates->item
- 描述:未发布文档的菜单项模板(当
-
templates->itemUnpubActive
- 描述:当当前文档不在菜单中显示(例如,通过
depth
参数排除)时,作为当前文档父文档之一的未发布文档的菜单项模板。 - 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
= templates->itemActive
- 描述:当当前文档不在菜单中显示(例如,通过
父项模板
-
templates->itemParent
- 描述:在菜单中显示子文档的文档的菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
'@CODE:<li><a href="[~[+id+]~]" title="[+pagetitle+]">[+menutitle+]</a><ul>[+children+]</ul></li>'
-
templates->itemParentHere
- 描述:当当前文档在菜单中显示子文档时,当前文档的菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
'@CODE:<li class="active"><a href="[~[+id+]~]" title="[+pagetitle+]">[+menutitle+]</a><ul>[+children+]</ul></li>'
-
templates->itemParentActive
- 描述:具有当前文档作为子文档之一的文档的菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
= templates->itemParentHere
-
templates->itemParentUnpub
- 描述:在菜单中显示子文档的未发布文档的菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
= templates->itemParent
-
templates->itemParentUnpubActive
- 描述:具有当前文档作为子文档之一的未发布文档的菜单项模板。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
= templates->itemParentActive
外部模板
-
templates->outer
- 描述:包装模板。
可用的占位符[+children+]
— 生成包含所有项的 HTML。
- 有效值
stringChunkName
string
— 使用以@CODE:
开头的内联模板。
- 默认值:
'@CODE:<ul>[+children+]</ul>'
- 描述:包装模板。
-
占位符
- 描述:必须将附加数据传递到
templates->outer
。
也支持数组:some[a]=one&some[b]=two
=>[+some.a+]
,[+some.b+]
;some[]=one&some[]=two
=>[+some.0+]
,[some.1]
。 - 有效值
- 默认值: —
- 描述:必须将附加数据传递到
示例
所有示例均使用 HJSON 编写,但您也可以使用纯 JSON。
提供者 → 父级
[[ddMenuBuilder? &provider=`parent` &providerParams=`{ parentId: 1 depth: 2 }` ]]
提供者 → 选择
[[ddMenuBuilder? &provider=`select` &providerParams=`{ ids: [ 1 2 3 ] }` ]]
将附加数据传递到外部块(placeholders
参数)
[[ddMenuBuilder? &templates=`{ outer: ''' @CODE:<ul class="[+class+]">[+children+]</ul>[+somePlaceholder2+] ''' }` &placeholders=`{ class: someClass somePlaceholder2: <p>Some value for placeholder.</p> }` ]]
使用查询字符串而不是 JSON
JSON 语法比查询字符串更清晰,但有时不太方便。例如,如果您想将 JSON 字符串作为字符串传递。
[[ddMenuBuilder? &provider=`parent` &providerParams=`parentId=1&depth=2` &templates=`outer=general_nav` &placeholders=`pladeholder1={"someName": "someValue"}&pladeholder2={"name": "John"}` ]]
通过 \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.ddMenuBuilder \DDTools\Snippet::runSnippet([ 'name' => 'ddMenuBuilder', 'params' => [ 'providerParams' => [ 'parentId' => 1 ] ] ]);