ikkez / f3-template-sections
F3模板引擎的分区支持
v1.1.0
2022-08-24 14:48 UTC
Requires
This package is auto-updated.
Last update: 2024-08-24 19:23:27 UTC
README
此插件通过分区为F3模板引擎引入了模板继承。
安装
使用composer安装,只需运行composer require ikkez/f3-template-sections
。
如果您不使用composer,请将src/
文件夹添加到您的AUTOLOAD
路径中,或者将src/
中的文件复制到您的libs中。
初始化
要使用新的指令,您需要注册它们
初始化
\Template\Tags\Section::init('section'); \Template\Tags\Inject::init('inject');
用法
想象一下这个主站模板
<html> <head> <title>Site Name</title> </head> <body> <F3:section id="sidebar" class="sidebar"> <!-- sidebar --> </F3:section> <div class="container"> <include href="article.html" /> </div> </body> </html>
您可以看到我们创建了一个id=sidebar
的分区。如果您愿意,这个分区可以包含默认内容,但在article.html
中,您现在可以向侧边栏注入内容,而侧边栏实际上在父级中
<F3:inject id="sidebar"> <ul> <li><a href="#parrot">Fear me parrot</a></li> <li><a href="#rum">Arrr</a></li> </ul> </F3:inject> <h1 id="parrot">Fear me parrot, ye evil whale!</h1> <p>All comrades sail gutless, stormy jacks. Ho-ho-ho! hunger of riddle.</p> <h2 id="rum">Arrr, fine hunger!</h2> <p>What’s the secret to canned and sun-dried zucchini? Always use quartered rum.</p>
基本上就是这样。还有一些其他的注入内容模式
追加/前置
在这个例子中,我们有一个面包屑导航。您可以使用tag
属性更改生成的标签元素。
<nav class="breadcrumb"> <F3:section id="breadcrumb" tag="ul"> <li class="home"><a href="/">Home</a></li> </F3:section> </nav>
默认情况下,分区中的内容在注入时会被替换。如果您愿意,您可以像这样追加现有内容
<F3:inject id="breadcrumb" mode="append"> <li><a href="wiki">Wiki</a></li> </F3:inject>
您也可以使用prepend
作为注入模式。
本地渲染
您可以将模型切换为使用本地变量而不是在注入的分区中渲染内容。这在遍历<repeat>
块中的数据数组时很有用。
<F3:contents id="modals" tag="FALSE" /> <div class="slider"> <ul> <F3:repeat group="{{ @items }}" value="{{ @item }}"> <li> {{@item.content}} <a href="#modal-{{@item.id}}">{{@item.title}}</a> <F3:inject id="modals" mode="append" local> <div class="modal" id="modal-{{@item.id}}"> {{@item.modal}} </div> </F3:inject> </li> </F3:repeat> </ul> </div>
API
分区
属性
分区
用于标识新分区。id
是section
的别名,但id
属性将在最终标记中可见。tag
最终分区的标签元素名称。默认:section
。
当您将tag="FALSE"
时,分区内容不会包裹在任何元素中。
其他任何属性都将传递给最终标签元素。
注入
属性
分区
用于标识目标分区。id
是section
的别名。mode
内容注入模式
overwrite(默认值):替换分区中的现有内容
append:在现有内容后添加内容
prepend:在现有内容前添加内容local
首先使用现有变量在本地渲染元素
许可证
GPLv3