melisplatform / melis-cms

Melis 平台 CMS 模块

安装数: 4,852

依赖项: 15

建议者: 0

安全性: 1

星标: 10

关注者: 9

分支: 3

开放问题: 0

类型:melisplatform-module

v5.2.2 2024-08-29 07:53 UTC

README

MelisCms 为 Melis 平台提供完整的 CMS,包括模板系统、插件拖放、SEO 以及许多管理工具。

入门指南

以下说明将帮助您将项目复制到您的机器上并运行。
此 Melis 平台模块是为与 MelisCore 一起使用而制作的。

先决条件

您需要安装 melisplatform/melis-core 和 melisplatform/melis-engine 以使此模块运行。
当使用 composer 时,这将自动完成。

安装

运行 composer 命令

composer require melisplatform/melis-cms

提供工具和元素

  • 页面编辑系统(编辑、属性、SEO、语言)
  • 站点工具
  • 模板工具
  • 平台 ID 工具
  • 站点重定向工具
  • 样式工具
  • 页面语言工具
  • 仪表板指标
  • 站点树视图
  • 站点树探索器 & 搜索
  • Melis 模板插件组件(后台办公)

运行代码

MelisCms 服务

MelisCms 提供许多服务,可在其他模块中使用

  • MelisCmsPageService
    保存页面及其不同部分(SEO、样式、语言等)的服务。
    文件:/melis-cms/src/Service/MelisCmsPageService.php
// Get the service
$pageSrv = $this->getServiceManager()->get('MelisCmsPageService');  
// Save a page and get its id back
$pageId = $pageSrv->savePage($pageTree, $pagePublished, $pageSaved, $pageSeo, $pageLang, $pageStyle);  
  • MelisCmsSiteService
    保存站点、获取站点页面列表等。
    文件:/melis-cms/src/Service/MelisCmsSiteService.php
// Get the service
$cmsSiteSrv = $this->getServiceManager()->get('MelisCmsSiteService');  
// Get list of pages of this site
$sitePages = $cmsSiteSrv->getSitePages($siteId);  
  • MelisCmsPageGetterService
    获取页面的完整 HTML。此服务与缓存系统一起工作。页面必须至少生成一次,以便生成缓存并可供服务使用。
    缓存在此文件夹中生成:/cache
    文件:/melis-cms/src/Service/MelisCmsPageGetterService.php
// Get the service
$pageGetterService = $this->getServiceManager()->get('MelisCmsPageGetterService');  
// Get list of pages of this site
$pageContent = $cmsSiteSrv->getPageContent($pageId);  
  • MelisCmsRightsService
    获取用户定义的权限并调整对界面不同元素的访问。
    文件:/melis-cms/src/Service/MelisCmsRightsService.php
// Get the service  
$melisCmsRights = $this->getServiceManager()->get('MelisCmsRights');  
// Get the user's rights  
$xmlRights = $melisCoreAuth->getAuthRights();  
// find if a user has access to it
// Example: find if a user has access to a specific page id
$isAccessible = $melisCmsRights->isAccessible($xmlRights, MelisCmsRightsService::MELISCMS_PREFIX_PAGES, $idPage);          

MelisCms 表单

表单工厂

所有 Melis CMS 表单都是使用表单工厂构建的。
所有表单配置都可在文件中找到:/melis-cms/config/app.forms.php
任何模块都可以通过在 Module.php 配置创建部分中构建键来覆盖或添加此表单中的项目,并通过将数组合并到其中来实现。

return array(
	'plugins' => array(
	
		// MelisCms array
		'meliscms' => array(
		
			// Form key
			'forms' => array(
			
				// MelisCms Page Properties form
				'meliscms_page_properties' => array(
					'attributes' => array(
						'name' => 'pageproperties',
						'id' => 'idformpageproperties',
						'method' => 'POST',
						'action' => '/melis/MelisCms/Page/saveProperties',
					),
					'hydrator'  => 'Laminas\Hydrator\ArraySerializable',
					'elements' => array(  
						array(
							'spec' => array(
								...
							),
						),
					),
					'input_filter' => array(      
						'page_id' => array(
							...
						),   
					),
				),
			),
		),
	),
),

表单元素

MelisCms 提供许多表单元素用于表单

  • MelisCmsTemplateSelect:选择模板的下拉列表
  • MelisCmsPlatformSelect:选择平台的下拉列表
  • MelisCmsStyleSelect:选择样式的下拉列表
  • MelisSwitch:为 Melis 平台设计的开/关按钮
  • MelisCmsLanguageSelect:选择语言的下拉列表
  • MelisCmsPageLanguagesSelect:选择页面语言的下拉列表
  • MelisMultiValInput:多输入选择
  • MelisCmsPlatformIDsSelect:选择平台 ID 的下拉列表
  • MelisCmsPluginSiteSelect:选择站点的下拉列表
  • MelisCmsPluginSiteModuleSelect:选择模块的下拉列表

通过自定义代码监听服务并更新行为

大多数服务都会触发事件,以便可以修改行为。

public function attach(EventManagerInterface $events)
{
    $sharedEvents      = $events->getSharedManager();
    
    $callBackHandler = $sharedEvents->attach(
    	'MelisCms',
    	array(
    		'meliscms_page_save_start',
    		'meliscms_page_publish_start',
    	),
    	function($e){

    		$sm = $e->getTarget()->getEvent()->getApplication()->getServiceManager();
    		
    		// Custom Code here
    	},
    100);
    
    $this->listeners[] = $callBackHandler;
}

TinyMCE 配置

MelisCms 在“MelisTag”可编辑区域编辑模板时提供 3 个默认配置

  • html:编辑器按钮的全套按钮
  • textarea:限制到文本和链接的按钮
  • media:限制到插入媒体对象(如图片和视频)的按钮
    创建其他配置是可能的。将配置添加到文件中,然后在模块的module.config.php文件中声明该文件
// Config Files  
'tinyMCE' => array(  
	'html' => 'MelisCms/public/js/tinyMCE/html.php',  
	'textarea' => 'MelisCms/public/js/tinyMCE/textarea.php',  
	'media' => 'MelisCms/public/js/tinyMCE/media.php',  
),  
  • 将mini模板放置在相应文件夹中,它们会自动转换为插件。

MelisCms提供的JavaScript辅助工具

  • melisLinkTree:显示一个包含树视图的模态窗口,用于搜索并选择页面
melisLinkTree.createInputTreeModal('#sourcePageId');  

作者

有关参与此项目的贡献者列表,请参阅。

许可证

此项目受OSL-3.0许可证的许可 - 有关详细信息,请参阅LICENSE.md文件