melisplatform / melis-cms-twig
作为Melis CMS页面中的替代模板引擎的Twig
Requires
- php: ^8.1|^8.3
- melisplatform/melis-cms: ^5.2
- melisplatform/melis-core: ^5.2
- twig/twig: ^3.8
This package is auto-updated.
Last update: 2024-08-31 09:19:51 UTC
README
扩展Twig的功能以提供替代渲染策略。此模块基于ZendFramework的ZfcTwig。
入门
以下说明将帮助您在您的机器上安装并运行项目副本。
安装
运行composer命令
composer require melisplatform/melis-cms-twig
指南
在Melis Platform内部的基本使用
默认情况下,Melis CMS Twig可以通过以下方式用于渲染Melis CMS内的页面:
I. 创建基本模板
此基本模板将由子布局扩展。
-
在您的站点的布局视图文件夹中,创建一个具有
twig
文件扩展名的视图文件..\view\layout\defaultTwigLayout.twig
此模板必须在您的站点模块的配置中注册
// inside module.config.php return [ 'view_manager' => [ 'template_map' => [ 'MyDemoSiteName/defaultTwigLayout' => __DIR__ . '/../view/layout/defaultLayout.twig', ] ] ];
基本模板的可能内容可在此示例中查看:defaultTwigLayout.twig
II. 创建子模板
对于此示例,我们将创建一个"首页"页面。
-
在您的站点视图文件夹中,创建一个新文件
..\view\my-demo-site-name\home\my-index.twig
子模板示例:index.twig或news-list.twig
-
在Melis Platform中,转到
MelisCms
>Site Tools
>Template manager
,并添加一个New template
。- 站点: My Demo Site Name
- 模板类型:
Twig
- 布局:
defaultTwigLayout
- 控制器: Home
- 操作:
myIndex
布局应当是您在模块配置中注册的基本模板的名称。换句话说,
MyDemoSiteName/defaultTwigLayout。操作应当是子模板的逗号分隔的文件名,转换为大驼峰形式。
在Home Controller内部,实现一个名为
myIndexAction(...)
的方法。
III. 渲染页面
-
在Melis Platform中,转到
MelisCms
>Site tree view
。创建一个新的页面。 -
将页面的
模板
设置为上一步中的子模板。选择Draft
以保存并重新加载页面。注意:要启用前端上的Twig渲染,请在您的站点的
module.load.php
中启用Melis CMS Twig。return [ ... 'MelisCmsTwig', ... ];
使用视图助手
在您的twig模板中,Melis CMS Twig提供了对各种视图助手的访问
-
Laminas 视图助手(Layout, Doctype等。)
{# Generating Styles & JS in the <head> #} {{ headLink() }} {{ headScript() }} {# Using a layout variable #} {{ layout().myVar }}
-
Melis 助手(MelisTag, MelisDragDropZone等。)
{# Displaying an editable text area (editable in back office only) #} {{ MelisTag(myPageId, "my-footer-title", "textarea", "My Cool Default Title") }} {# Setting a form's action via MelisLink, with configuration from Melis' SiteConfig helper #} ... <form action="{{ MelisLink(SiteConfig('search_result_page_id'), false) }}" method="get"> ...
-
Melis 插件(MelisCmsNewsListPlugin, MelisCmsNewsLatestPlugin等。)
{# Displaying a news list from MelisCmsNews, with parameters passed from controller #} {{ MelisCmsNewsListPlugin(listNewsParameters) }}
转换Melis插件
要使用Melis插件在Twig模板中,请将它们转换为视图助手。
I. 创建助手
-
创建/复制扩展Laminas的
AbstractHelper
的助手类。 -
实现调用您的插件的
__invoke
方法:ServiceManager->get('ControllerPluginManager')->get('YourPlugin')
。 -
return
ViewRenderer->render(YourPlugin)
的结果。
II. 创建助手工厂
-
创建/复制实现Laminas的
FactoryInterface
的辅助工厂类 -
实现
createService
方法,该方法从上一步创建辅助类,传递所有必要的参数。return new YourPluginHelper($serviceManager, $var1, $var2);
III. 辅助类注册
转换过程实际上创建了一个Twig函数,通过ZF2的视图辅助管理器注入到Melis CMS Twig的环境中。这就是为什么你需要将插件注册在view_helpers
键下的原因。
-
在你的网站配置(
my-demo-site-name\config\module.config.php
)下注册你的插件辅助类... 'view_helpers' => [ 'factories' => [ 'YourPlugin' => 'MelisYourModule\View\Helper\Factory\YourPluginHelperFactory', ], ], 'view_manager' => [...], ...
参考资料
这些文档主要帮助理解并实现该模块
作者
- Melis技术 - www.melistechnology.com
另请参阅参与此项目的贡献者列表。
许可证
本项目根据Melis技术高级版最终用户许可协议(EULA)许可 - 有关详细信息,请参阅LICENSE.md文件。