melisplatform/melis-cms-twig

作为Melis CMS页面中的替代模板引擎的Twig

安装: 741

依赖: 1

建议者: 0

安全: 0

星标: 1

关注者: 7

分支: 0

开放问题: 0

类型:melisplatform-module

v5.2.0 2024-06-06 10:45 UTC

README

扩展Twig的功能以提供替代渲染策略。此模块基于ZendFramework的ZfcTwig

入门

以下说明将帮助您在您的机器上安装并运行项目副本。

安装

运行composer命令

composer require melisplatform/melis-cms-twig

指南

在Melis Platform内部的基本使用

默认情况下,Melis CMS Twig可以通过以下方式用于渲染Melis CMS内的页面:

I. 创建基本模板

此基本模板将由子布局扩展。

  1. 在您的站点的布局视图文件夹中,创建一个具有twig文件扩展名的视图文件

    ..\view\layout\defaultTwigLayout.twig

    此模板必须在您的站点模块的配置中注册

    // inside module.config.php
    return [
        'view_manager' => [
          'template_map' => [
              'MyDemoSiteName/defaultTwigLayout' => __DIR__ . '/../view/layout/defaultLayout.twig',
          ]
        ]
    ];

    基本模板的可能内容可在此示例中查看:defaultTwigLayout.twig

II. 创建子模板

对于此示例,我们将创建一个"首页"页面。

  1. 在您的站点视图文件夹中,创建一个新文件

    ..\view\my-demo-site-name\home\my-index.twig

    子模板示例:index.twignews-list.twig

  2. 在Melis Platform中,转到MelisCms > Site Tools > Template manager,并添加一个New template

    • 站点: My Demo Site Name
    • 模板类型: Twig
    • 布局: defaultTwigLayout
    • 控制器: Home
    • 操作: myIndex

    布局应当是您在模块配置中注册的基本模板的名称。换句话说,MyDemoSiteName/defaultTwigLayout

    操作应当是子模板的逗号分隔的文件名,转换为大驼峰形式。

    Home Controller内部,实现一个名为myIndexAction(...)的方法。

III. 渲染页面
  1. 在Melis Platform中,转到MelisCms > Site tree view。创建一个新的页面。

  2. 将页面的模板设置为上一步中的子模板。选择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. 创建助手

  1. 创建/复制扩展Laminas的AbstractHelper的助手类。

  2. 实现调用您的插件的__invoke方法:ServiceManager->get('ControllerPluginManager')->get('YourPlugin')

  3. return ViewRenderer->render(YourPlugin)的结果。

II. 创建助手工厂

  1. 创建/复制实现Laminas的FactoryInterface的辅助工厂类

  2. 实现createService方法,该方法从上一步创建辅助类,传递所有必要的参数。

    return new YourPluginHelper($serviceManager, $var1, $var2);

III. 辅助类注册

转换过程实际上创建了一个Twig函数,通过ZF2的视图辅助管理器注入到Melis CMS Twig的环境中。这就是为什么你需要将插件注册在view_helpers键下的原因。

  1. 在你的网站配置(my-demo-site-name\config\module.config.php)下注册你的插件辅助类

    ...
    'view_helpers' => [
        'factories' => [
            'YourPlugin' => 'MelisYourModule\View\Helper\Factory\YourPluginHelperFactory',
        ],
    ],
    'view_manager' => [...],
    ...

参考资料

这些文档主要帮助理解并实现该模块

作者

另请参阅参与此项目的贡献者列表。

许可证

本项目根据Melis技术高级版最终用户许可协议(EULA)许可 - 有关详细信息,请参阅LICENSE.md文件。