netglue / prismic-linklist-helper
管理存储在Prismic.io仓库中的菜单和链接列表的助手
Requires
Requires (Dev)
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2021-06-10 12:57:50 UTC
README
此助手库已不再维护
我习惯于创建用于整个内容管理系统网站的链接列表。这意味着最终用户可以轻松管理网站的主要导航并按需重新排序链接。
链接列表必须包含一个分组类型片段,其中每个分组内的片段都用于创建链接本身。Prismic的一个缺点是不能嵌套分组片段,因此此助手识别指向其他链接列表的链接,并使用这些链接生成与平面菜单相同方式的子菜单。
有关示例“链接列表”文档类型,请参阅包含的JSON文件。
您会看到,在其他内容中,有一个名为“links”的分组片段,这是助手迭代以生成列表的。
此包故意保持最小化,以避免对使用的DI容器的假设,并保持模板系统的独立性。您得到的是一个数组,因此如何渲染它取决于您。
安装
$ composer require netglue/prismic-linklist-helper
用法
此助手需要Prismic\Api
实例和扩展Prismic\LinkResolver
的对象。预计您将创建某种类型的工厂,使用您选择的DI容器返回正确构建的助手。可能如下所示
MyHelperFactory.php
<?php namespace My\Factory; use Interop\Container\ContainerInterface; use NetgluePrismic\Helper\LinkListHelper; use Prismic; class LinkListHelperFactory { public function __invoke(ContainerInterface $container, $requestedName, array $options = null) { $api = $container->get(Prismic\Api::class); $resolver = $container->get(Prismic\LinkResolver::class); return new LinkListHelper($api, $resolver); } }
LinkResolver
取决于您如何设置网站,但我使用此助手与围绕Zend Expressive构建的各种模块一起使用,例如Expressive Prismic,其中包含LinkResolver
实现。
一旦您有了实例,您可以通过将您想要定位的文档提供给documentToArray()
方法来生成“准备好渲染”的链接信息数组
$links = $helper->documentToArray($document);
或者,您可以将书签名称或文档ID提供给相关方法以实现相同的效果
$links = $helper->bookmarkToArray('bookmark-name'); // ... or ... $links = $helper->documentIdToArray('Some-Document-Id');
假设您的文档类型是link-list
,包含链接信息的分组片段名称是links
,这就足够了,否则,您可以在工厂中或单独设置文档类型和片段名称,如下所示
$helper->setDocumentType('my-document-type'); $helper->setFragmentName('some-fragment');
文档类型仅在您计划使用嵌套链接列表文档时才是必需的。
链接信息数组格式
生成的数组将如下所示
[ [ 'text' => 'String, anchor text or null', 'attributes' => [ 'href' => 'URL resolved by given link resolver or null', // ... Other html attribute pairs depending on your group configuration ], 'children' => [ // ... An array of nested links in the same format if appropriate ] ], // ... more links ... ]
注意事项
- 您的分组结构应只包含一个类型为链接的片段 - 意思是我看不到需要链接有多个href的情况。
- 为了渲染锚点文本,假定分组将包含一个名为
text
的片段
测试
$ cd vendor/netglue/prismic-linklist-helper
$ composer install
$ phpunit
关于
Netglue在英国德文郡制作基于网络的物品。我们希望这对您有帮助,无论哪种情况我们都非常欢迎您的反馈 :)