molajo/molajito

Molajito 视图渲染用于 PHP 应用

安装: 320

依赖项: 2

建议者: 0

安全性: 0

星级: 5

关注者: 5

分支: 1

开放问题: 0

类型:molajo-package

0.1.0 2014-02-01 05:37 UTC

This package is auto-updated.

Last update: 2024-09-08 05:06:58 UTC


README

======= Molajito 渲染包

Build Status

Molajito 是一个模板环境,面向那些希望专注于标记而非编程的前端开发者。它定位视图,注入转义数据,与事件处理集成,提供对语言字符串的翻译支持,还有更多。

示例

此包内包含一个网站的示例,包括 首页博客文章联系关于 页面。要查看示例,请配置 Apache 主机指向此 样本 / 公共 文件夹,并使用浏览器访问主机。

基本流程

Molajito 通过包含一个作为渲染输出的 主题 文件来启动渲染过程。该 theme 包含 Molajito 在解析期间发现的 包含语句,用于标识在该位置要渲染哪个 view

Molajito 使用三种不同类型的 `views`

  • 页面 视图定义布局。一个网站通常有不同的布局,页面视图对此非常有用。Molajito 不将数据传递到 页面视图,它只包含 页面视图 文件。

  • 模板 视图定义页面的一个特定区域,例如一个 模板视图 可以渲染导航菜单、博客文章或作者简介。Molajito 在渲染过程中将数据传递到 模板视图 以支持渲染。

  • 包装 视图以特定方式 包装模板视图 生成的渲染输出。例如,一个包装可以包含在 <article><footer><header> 内容特定的 HTML5 元素中。包装也可以用来为内容实现某些视觉效果,例如在一个具有 alert 类的 div 中包含一条消息。

您还可以使用 包含语句 来定义 位置,这些位置是占位符,可以与一个或多个 模板视图 关联。例如,您可能需要一个博客的 侧边栏位置,该位置可以被网站构建者配置。

主题

主题是第一个渲染输出,因此驱动渲染过程。通常,一个 主题 定义必要的 CSS 和 JS 语句。

Molajito 将一个名为 $this->runtime_data 的数据对象注入到主题中。以下示例中可以看到,Molajito 传递了在页面包含语句中使用的 $this->runtime_data->page_name 值。

您可以将数据添加到 $this->runtime_data 中,以便在渲染时可用。在这个例子中,使用 site_name 来渲染 title

在下面的 theme 中,您将找到 pagetemplatewrap 视图的 include statements

<!doctype html>
<html class="no-js" lang="en">
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title><?= $this->runtime_data->site_title ?></title>
    <link rel="stylesheet" href="/css/custom.css"/>
</head>
<body>
<div class="page-wrap">
    {I template=Navbar wrap=Nav I}
    {I Breadcrumbs I}
    {I page=<?= $this->runtime_data->page_name ?> I}
</div>
    {I Footer wrap=Nav I}
</body>
</html>

包含语句

Molajito 使用 include statements 来定义特定视图应该渲染的位置。Include statements 可以在任何 themetemplate 中定义,这有助于创建可重用的模板,以便在多个地方引用,从而保持您的视图 DRY(不要重复自己)并易于维护。Molajito 在渲染每个视图后继续解析渲染输出,直到不再找到 include statements

包含语法很简单 {I type=Name I}

  • {I 标记包含语句的开始;
  • type= 设置为 templatepage;如果省略,Molajito 首先假设它是 position,然后查找同名 template
  • Name 识别与指定类型关联的视图;
  • I} 标记包含语句的结束。

可以通过添加命名对属性来向 include statement 添加额外属性 {I template=Templatename class=current,error dog=food I}

页面

{I page=<? $this->runtime_data->page_name ?> I}

Themes 通常定义 page views。通过 $this->runtime_data->page_name 对象将 page_name 传递到 theme 中。然而,page view 可以定义在任何地方。重要的是要记住,Molajito 简单地包含 page view 文件,而不传递数据。

以下是一个博客文章的 page view 示例。页面布局需要三个 template views:帖子、评论和分页模板。页面布局还包括一个 sidebar 位置。如果没有名为 sidebar 的位置,Molajito 将搜索同名的 `template view`。

<div class="row">
    <div class="large-9 push-3 columns">
        {I template=Post I}
        {I template=Comments I}
        {I template=Paging I}
    </div>
    <div class="large-3 pull-9 columns">
        {I Sidebar I}
    </div>
</div>

位置

{I Sidebar I}

如果从 include statement 中省略了 type=,Molajito 首先搜索具有该名称的 position。如果没有找到具有该名称的 position,Molajito 将继续搜索同名的 template view

您可以通过为 $type = 'page' 或 $type = 'theme' 定义数组中的值来定义与位置关联的 template views。Molajo 将按该顺序检查位置。如果找到位置,Molajito 将为定义的每个 template view 插入 (I template=Name I} 值。

$this->plugin_data->render->extension->$type->parameters->positions

模板

{I template=Templatename I}

Molajito 将数据注入到 Template view 以支持渲染。与 Theme 一样,Molajito 会传递 $this->runtime_data 对象,您可以使用它来确保特定的数据可用于渲染。

配置 template view 有两种方式。

  1. Custom.php - Molajito 将 view 注入 $this->query_resultsthis->runtime_data,但视图必须处理循环,如果需要的话。

  2. Header.php、Body.php 和 Footer.php - Molajito 将 Body.php 注入 $this->rowthis->runtime_data,每次为每一行注入一次。如果存在 Header.php,它将获取第一行。如果存在 Footer.php,它将获取最后一行。

以下是一个典型的 template view Body.php 文件示例。

<h3>
    <a href="<?= $this->row->current_url ?>">
        <?= $this->row->title ?>
    </a>
</h3>

<h6>Written by:
    <a href="<?= $this->runtime_data->route->contact ?>">
        <?= $this->row->author ?>
    </a>
    on <?= $this->row->published ?>.
</h6>

<?php if (isset($this->row->video) && $this->row->video !== '') { ?>
    {I template=video link=<?= $this->row->video ?> I}
<?php } ?>

<?= $this->row->content; ?>

包装

{I template=Templatename wrap=Wrapname I}

要包装 template view,请将 wrap=Wrapname 元素添加到 include statement 中。

典型的 Wrap view 需要三个文件,Molajito 将为每个文件注入 view,其中包括 $this->row(包含来自 template view 的渲染输出)和 this->runtime_data

<footer class="<?= $class ?>">
    echo $this->row->content;
</footer>

本地化

{T Translate this string T}

Molajito支持使用语言字符串和翻译进行本地化。只需创建一个类似于以下示例的标记,并注入包含语言字符串和翻译的[数组]的translate类(https://github.com/Molajo/Molajito/blob/master/Sample/Bootstrap/Index.php#L20)或为你的翻译类添加一个Translate适配器。

需求与合规性