melisplatform/melis-front

Melis 平台前端模块

安装数: 4,523

依赖项: 7

建议者: 3

安全: 1

星标: 2

关注者: 8

分支: 1

开放性问题: 2

类型:melisplatform-module


README

MelisFront 是显示在 Melis 平台上托管的网站的引擎。
它处理显示页面、插件、URL 重写、搜索优化和 SEO 等任务。

入门指南

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

先决条件

为了使此模块运行,您需要安装 melisplatform/melis-engine 和 melisplatform/melis-asset-manager。
使用 composer 时将自动完成此操作。

安装

运行 composer 命令

composer require melisplatform/melis-front

提供工具和元素

  • 更新 SEO 和从模板插件中获取资源的服务
  • SEO、404 和 URL 重写监听器
  • 模板插件:MelisTag、Breadcrumb、Menu、Search、ListFolder、拖放区
  • 特殊 URL、网站地图

运行代码

在此处查看实现网站的完整文档

MelisFront 模板插件

MelisFront 提供许多插件,可在页面编辑中使用

  • MelisFrontTagHtmlPlugin / MelisFrontTagTextareaPlugin / MelisFrontTagMediaPlugin
    此插件必须通过其助手 MelisTagsHelper 调用。
    文件:/melis-front/src/View/Helper/MelisTagsHelper.php
// This code will display an editable zone, linked to the current page
// with id about_part1_text, will load the html plugin and therefore a tinyMCE HTML configuration
echo $this->MelisTag($this->idPage, 'about_part1_text', 'html', 
                	 '<div>The default text to be shown in the back office</div>')   	
  • MelisFrontMenuPlugin
    此插件旨在为网站生成菜单。
    文件:/melis-front/src/Controller/Plugin/MelisFrontMenuPlugin.php
// Get the plugin
$menuPlugin = $this->MelisFrontMenuPlugin();

// Add some parameters
$menuParameters = array(
	'template_path' => 'MelisDemoCms/plugin/menu', // template to use for rendering
	'pageIdRootMenu' => 1,  // If homepage is ID 1
);
// render the view
$menu = $menuPlugin->render($menuParameters);

// Add the generated view as a child view by the name "siteMenu"
$this->layout()->addChild($menu, 'siteMenu');
  • MelisFrontBreadcrumbPlugin
    此插件旨在为网站生成面包屑。
// Get the plugin
$breadcrumbPlugin = $this->MelisFrontBreadcrumbPlugin();

// Add some parameters
$breadcrumbParameters = array(
	'template_path' => 'MelisDemoCms/plugin/breadcrumb', // template to use for rendering
	'pageIdRootBreadcrumb' => 1,// If homepage is ID 1
);

// render the view
$breadcrumb = $breadcrumbPlugin->render($breadcrumbParameters);

// Add the generated view as a child view by the name "pageBreadcrumb"
$this->layout()->addChild($breadcrumb, 'pageBreadcrumb');
  • 文件:/melis-front/src/Controller/Plugin/MelisFrontBreadcrumbPlugin.php
    MelisFrontShowListFromFolderPlugin
    此插件旨在从树形视图中列出子页面(文件夹)。
    它可以用来列出子页面作为子菜单,并带来一些内容。
// Get the plugin
$showListForFolderPlugin = $this->MelisFrontShowListFromFolderPlugin();

// Add some parameters
$menuParameters = array(
    'template_path' => 'MelisDemoCms/plugin/testimonial-slider', // will list the subpages with a slider style template
    'pageIdFolder' => 2, // will list subpages of page 2
);

// render the view
$listView = $showListForFolderPlugin->render($menuParameters);

// Add the generated view as a child view by the name "testimonialList"
$this->view->addChild($listView, 'testimonialList');
  • 文件:/melis-front/src/Controller/Plugin/MelisFrontShowListFromFolderPlugin.php
    MelisFrontSearchResultsPlugin
    此插件旨在根据 ZEnd_Search 显示搜索结果。
// Get the plugin
$searchResults = $this->MelisFrontSearchResultsPlugin();

// Add some parameters
$searchParameters = array(
    'template_path' => 'MelisDemoCms/plugin/search-results', // template used
    'siteModuleName' => 'MelisDemoCms', // Site Index to search in
    'pagination' => array(  // pagination parameters
        'nbPerPage' => 10, 
        'nbPageBeforeAfter' => 3
    ),
);
// render the view
$searchView = $searchResults->render($searchParameters);

// Add the generated view as a child view by the name "searchresults"
$this->view->addChild($searchView, 'searchresults');
  • 文件:/melis-front/src/Controller/Plugin/MelisFrontSearchResultsPlugin.php
    此插件必须通过其助手 MelisDragDropZoneHelper 调用。
    文件:/melis-front/src/View/Helper/MelisDragDropZoneHelper.php
// Creation of a dragdropzone link to the pageId and with id "dragdropzone_zone_1"
echo $this->MelisDragDropZone($this->idPage, "dragdropzone_zone_1");

在此处查看模板插件的完整文档

MelisFront 服务

MelisFront 提供许多服务,可用于其他模块

  • MelisSiteConfigService
    提供检索网站配置的服务。
    文件:/melis-front/src/Service/MelisSiteConfigService.php

    MelisFrontSiteConfigListener 用于通过合并文件和数据库中的配置来更新常规配置服务上的网站配置。

    • getSiteConfigByKey(key, section = 'sites', language = null)
      此函数通过键检索特定的配置。

      调用服务。

      $siteConfigSvc = $this->getServiceManager()->get('MelisSiteConfigService');
      

      获取 id 为 1 的页面的当前站点的一个特定 key 和页面语言

      $siteConfigSvc = $this->getServiceManager()->get('MelisSiteConfigService');
      
      $config = $siteConfigSvc->getSiteConfigByKey('key', 1);
      

      如果我们想从当前站点的另一种语言获取键怎么办?我们可以通过定义获取配置的语言来实现。

      $siteConfigSvc = $this->getServiceManager()->get('MelisSiteConfigService');
              
      $config = $siteConfigSvc->getSiteConfigByKey('key', 1,'sites', 'fr');
      // The language of the page is now overridden by the specified language.
      

      我们还可以使用 site Id 从另一个网站获取特定的 key

      $siteConfigSvc = $this->getServiceManager()->get('MelisSiteConfigService');
      
      $config = $siteConfigSvc->getSiteConfigByKey('key', 1, 1);
      // Return all the values of the specified key from all languages from the site with id 1.
      // The expected output is an array of values from different languages
      
      $config = $siteConfigSvc->getSiteConfigByKey('key', 1, 1, 'fr');
      // Return all the values of the specified key for the French language from the site with id 1.
      

      除了站点之外,还有不同的部分。目前,我们有两个部分:站点和 allSites。

      $siteConfigSvc = $this->getServiceManager()->get('MelisSiteConfigService');
      
      $config = $siteConfigSvc->getSiteConfigByKey('key', 1, 'allSites');
      // Returns the key from the allSites section of the config
      // Language for the page is not applied but still used to get the site id and name to map for the config
      
  • MelisSiteTranslationService
    提供翻译文本和列出所有站点翻译的服务。
    文件:/melis-front/src/Service/MelisSiteTranslationService.php

    • getText(translationKey, langId, siteId) .

      调用服务。

      $melisSiteTranslationSvc = $this->getServiceManager()->get('MelisSiteTranslationService');
      

      要获取特定翻译,您需要指定翻译键以及语言 ID 和站点 ID。

      $test = $melisSiteTranslationService->getText('key', 1, 1);
      // Retrieves the translation for the language id 1 and site id 1.
      

视图助手

Melis Front 视图助手

  • MelisTagsHelper:当被调用时,它将在页面模板中创建一个可编辑区域。
    标签必须接受3个参数:页面的ID、它自己的ID(唯一的)和将显示的默认文本(当区域未填写文本时使用,以便显示某些内容,模板仍然看起来像模板)。
    文件:/melis-front/src/View/Helper/MelisTagsHelper.php
// This code will display an editable zone, linked to the current page
// with id about_part1_text, will load the html plugin and therefore a tinyMCE HTML configuration
echo $this->MelisTag($this->idPage, 'about_part1_text', 'html', 
                	 '<div>The default text to be shown in the back office</div>')   	
  • MelisLinksHelper:当被调用时,它将生成一个指向Melis页面的链接,遵循所有规则和可能的SEO文件:/melis-front/src/View/Helper/MelisLinksHelper.php
// This call will generate a link to pageId 1 and it will be an absolute URL including the domain
echo $this->MelisLink(1, true);
  • MelisDragDropZoneHelper
    文件:/melis-front/src/View/Helper/MelisDragDropZoneHelper.php
// Creation of a dragdropzone link to the pageId and with id "dragdropzone_zone_1"
echo $this->MelisDragDropZone($this->idPage, "dragdropzone_zone_1");
  • MelisSiteConfigHelper
    此助手用于获取特定站点的配置。
    文件:/melis-front/src/View/Helper/MelisDragDropZoneHelper.php
    函数:SiteConfig(key, sectiom = 'sites', language = null)

    调用助手。

    $this->SiteConfig('key');
    

    从配置中获取特定键,针对当前站点

    $config = $this->SiteConfig('key');
    

    但如果我们想从当前站点的另一个语言中获取怎么办?我们可以通过定义获取配置的地方的语言来实现这一点。

    $config = $this->SiteConfig('key', 'sites', 'fr');
    // The language of the page is now overridden by the specified language.
    

    我们还可以使用 site Id 从另一个网站获取特定的 key

    $config = $this->SiteConfig('key', 1);
    // Return all the values of the specified key from all languages from the site with id 1.
    // The expected output is an array of values from different languages
    
    $config = $this->SiteConfig('key', 1, 'fr');
    // Return all the values of the specified key for the French language from the site with id 1.
    

    除了sites之外,还有不同的section。目前,我们有两个部分,即sitesallSites

    $config = $this->SiteConfig('key', 'allSites');
    // Returns the key from the allSites section of the config
    
  • MelisSiteTranslation
    此助手用于获取特定站点的翻译。
    文件:/melis-front/src/View/Helper/MelisSiteTranslationHelper.php
    函数:getText(translationkey, langId, siteId)

    调用助手方法。

    $this->SiteTranslation('translationKey', 'langId', 'siteId');
    

    要获取特定翻译,您需要指定翻译键以及语言 ID 和站点 ID。

    $text = $this->SiteTranslation('key', 1, 1);
    // Retrieves the translation for the language id 1 and site id 1.
    

特殊URL

MelisFront使用以下URL作为默认值

  • 页面URLs:/.*/id/(?[0-9]+)
    如果没有在SEO URL中使用特殊命名,页面使用此系统
  • 在BO中显示的页面URLs:/.*/id/(?[0-9]+)/renderMode/melis
    当然,登录后台是强制性的
  • 预览模式(保存版本)的页面URLs:/.*/id/(?[0-9]+)/preview
    当然,登录后台是强制性的
  • 网站地图:/sitemap.html|sitemap.xml|sitemap
    将根据MelisFront模块中包含的导航类显示网站地图。
    将通过使用的域名找到要映射的网站。
  • 搜索索引器:/melissearchindex/module[/:moduleName]/pageid[/:pageid]/exclude-pageid[/:expageid]
    这将启动索引器。moduleName是站点的模块名称,pageid是开始爬取的ID,expageid将排除一些特定的页面ID不被索引。

作者

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

许可

此项目根据OSL-3.0许可证许可 - 请参阅LICENSE.md文件以获取详细信息