samsoncms/template

SamsonCMS 基础模板

0.0.5 2016-08-17 13:03 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:13:41 UTC


README

Latest Stable Version Build Status Code Coverage Scrutinizer Code Quality Total Downloads Stories in Ready

此模块负责渲染基础HTML模板、其样式、图标和图片。

所有模板样式均使用LESS创建,每个实体都有其 vars.less

此模块应定义SamsonCMS的HTML结构、构建块和实体,这些实体应在所有其他SamsonCMS模块和应用中使用。

此模板是基本的,包含在SamsonCMS引导程序中,但可以通过自定义或修改一次轻松更改,必须满足的唯一限制是模板结构和其事件,因为所有SamsonCMS生态系统都是基于此结构和实体构建的。

模板使用 Font-Awesome 用于所有图标。

事件

所有结构块都有事件(http://github.com/samsonphp/event),它们的所有填充和渲染都应该通过这些事件完成。

模板结构

此基础SamsonCMS模板结构可以定义为以下

  • 菜单部分 .template-menu
  • 子菜单部分 .template-sub-menu
  • 容器部分 .template-container

模板菜单结构

索引视图位于 www/menu/index.vphp,菜单项视图位于 www/menu/item.vphp

  • <section>.template-menu
    • <ul>.template-menu-list
      • <li>.text 如果项是活动的,则添加 .active
        • <a>.item<div>.item (对于 .active 元素,因为它不能被点击)
        • <i> 用于图标(如果不需要图标,则不要使用它)
        • <span> 用于项文本(如果不需要文本,则不要使用它)

模板子菜单结构

索引视图位于 www/menu/index.vphp,菜单项视图位于 www/menu/item.vphp

  • <section>.template-sub-menu
    • <ul>.template-sub-menu-list
      • <li>.collapser 用于显示/隐藏子菜单
      • <li> 您可以使用任何内部项结构

菜单事件

菜单创建事件 - template.menu.started: &$html, &$submenu

此事件在开始通用菜单渲染过程之前触发。在菜单开始之前,默认模板菜单项将自动添加

  • 主页项
  • 转到网站项 因此,在您的事件中,您将已经收到非空的菜单 $html,这使您能够删除这些默认项或更改它们。

要渲染子菜单部分,您需要在事件处理程序中填写 $submenu

菜单渲染事件 - template.menu.rendered: &$html, &$submenu

此事件在所有菜单内部项目已渲染到主容器中时触发。

菜单事件处理程序示例

这是一个修改后的旧方法,通过新的菜单事件集成菜单和子菜单渲染

function oldMenuRenderer(&$html, &$subMenu)
{
    // Iterate loaded samson\cms\application
    foreach (\samson\cms\App::loaded() as $app) {
        // Show only visible apps
        if ($app->hide == false) {
            // Render application menu item
            $html .= m('template')
                ->view('menu/item')
                ->active(url()->module == $app->id() ? 'active' : '')
                ->app($app)
                ->icon($app->icon)
                ->name(isset($app->name{0}) ? $app->name : (isset($app->app_name{0}) ? $app->app_name : ''))
                ->output();
        }
    }

    $subMenu = '';

    // Find current SamsonCMS application
    if (\samson\cms\App::find(url()->module, $app/*@var $app App*/)) {
        // Render main-menu application sub-menu
        $subMenu = $app->submenu();

        // If module has sub_menu view - render it
        if ($app->findView('sub_menu')) {
            $subMenu .= $app->view('sub_menu')->output();
        }
    }
}

模板容器结构

容器内的所有元素都必须在 .template-block

  • <section>.template-container
    • <div>.template-block

模板容器表单结构

  • <*>.template-form 应用于所有表单
    • <div>.template-form-group - 表单行
      • <div>.template-form-input - 表单输入字段
        • <input,select,textarea>.template-form-input-field
        • <label>.template-form-input-placeholder 用于代替标准占位符

容器事件

主页创建事件 - template.main.created

此事件在开始主页渲染过程之前触发。

主页渲染事件 - template.main.rendered

此事件在主页面被渲染到主容器时触发。