dd/evolutioncms-snippets-ddmenubuilder

此软件包的最新版本(2.2.0)没有可用的许可信息。

简单灵活的模板驱动式菜单构建器。最初灵感来源于结合 Wayfinder 和 Ditto 的优点,同时显著简化了代码。

2.2.0 2023-05-05 08:05 UTC

This package is auto-updated.

Last update: 2024-09-06 08:56:23 UTC


README

简单灵活的模板驱动式菜单构建器。最初灵感来源于结合 Wayfinder 和 Ditto 的优点,同时显著简化了代码。

需求

安装

使用 (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. 元素 → 片段:创建一个新的片段,以下数据

  1. 片段名称: ddMenuBuilder
  2. 描述: <b>2.2</b> 简单灵活的模板驱动式菜单构建器。
  3. 分类: 核心 → 导航
  4. 解析 DocBlock:
  5. 片段代码(PHP):插入从存档中 ddMenuBuilder_snippet.php 文件的内容。

2. 元素 → 管理文件

  1. 创建一个新的文件夹 assets/snippets/ddMenuBuilder/
  2. 将存档提取到该文件夹中(除了 ddMenuBuilder_snippet.php)。

参数描述

数据提供者参数

提供者获取文档数据以输出。

  • 提供者

    • 描述: 用于获取文档的提供者名称。
    • 有效值
      • 'parent'
      • 'select'
    • 默认值: 'parent'
  • 提供者参数

    • 描述: 传递给提供者的参数。
    • 有效值
      • stringJsonObject — 作为 JSON
      • stringHjsonObject — 作为 HJSON
      • stringQueryFormatted — 作为 查询字符串
      • 它也可以设置为原生 PHP 对象或数组(例如,通过 \DDTools\Snippet::runSnippet$modx->runSnippet 调用)
        • 关联数组
        • 对象
    • 默认值: —

提供者 → 父级 (&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+]
    • 有效值
      • stringJsonObject — 作为 JSON
      • stringHjsonObject — 作为 HJSON
      • stringQueryFormatted — 作为 查询字符串
      • 它也可以设置为原生 PHP 对象或数组(例如,通过 \DDTools\Snippet::runSnippet$modx->runSnippet 调用)
        • 关联数组
        • 对象
    • 默认值: —

项目模板

  • 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]
    • 有效值
      • stringJsonObject — 作为 JSON
      • stringHjsonObject — 作为 HJSON
      • stringQueryFormatted — 作为 查询字符串
      • 它也可以设置为原生 PHP 对象或数组(例如,通过 \DDTools\Snippet::runSnippet$modx->runSnippet 调用)
        • 关联数组
        • 对象
    • 默认值: —

示例

所有示例均使用 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
		]
	]
]);

链接