使用Twig:块和嵌套,快速启动WordPress开发

在上一篇文章中,我介绍了通过 timber 将 twig 模板引擎与 wordpress 集成以及开发人员如何将 php 文件中的数据发送到 twig 文件。让我们讨论如何使用 twig 创建基本模板、这种 dry 技术的优点以及 timber-twig wordpress cheatsheet。

在 Twig 中创建基本模板

Twig 遵循 DRY(不要重复自己)原则。 Twig 最重要的功能之一是具有嵌套和多重继承的基本模板。虽然大多数人以线性方式使用 PHP 包含,但您可以创建无限级别的嵌套来专门控制您的页面模板。

将您的基本模板视为其中包含多组块的父模板。子模板可以扩展父模板并修改其中的任何一个或多个块,而无需重写代码,这在两个模板中都是相似的。

让我们看一下父模板或基础模板示例,即 base.twig 文件。您可以将其与其他 Twig 模板一起放置在视图文件夹中。您可以在任何 Twig 模板中调用此文件,并将其用作该特定 Twig 文件的父模板。键入以下代码行以创建 views 文件夹。此基本模板将为您的 WordPress 主题提供基本结构。这是一个简单的 base.twig 文件的代码。

{# Base Template: base.twig #}{% block html_head_container %}    {% include 'header.twig' %}{% endblock %}
{% block content %}

SORRY! No content found!

{% endblock %}
{% include "footer.twig" %}

Twig 中的评论:{# 基本模板:base.twig #}

您可以使用 {# comment here #} 语法在 Twig 中编写注释。要注释掉模板中的部分行,请使用注释语法 {# … #}。这对于调试或为其他模板设计者或您自己添加信息非常有用。您可以在第 1 行找到注释。

块: {% block html_head_container %} {% endblock %}

Twig 和 Timber 的整个理念都围绕着 WordPress 中的模块化代码方法。我一直在反复写关于 Twig 中的数据以组件或块的形式处理的想法。

块用于继承,同时充当占位符和替换。它们详细记录在扩展标签的文档中。

{% block add_block_name_here %} 阻止此处的内容 { % endblock % }

在上面编写的代码中,您可以找到一个名为 html_head_container 的块,它跨越第 3 行到第 7 行。扩展此 base.twig 基本模板的任何模板都可以继承同一块的内容或修改它以添加其他内容。还有另一个名为 content {% block content %} 的块,该块跨越第 13 行到第 18 行。

类似地,创建块的概念也得到了进一步扩展,您还可以创建无限级别的嵌套块。这才是真正的DRY原则。

包含语句:{% include "header.twig" %}

Twig 模板可以包含其他 Twig 模板,就像我们在 PHP 中所做的那样。这个 base.twig 文件将是一个通用包装器,如果没有它的页眉页脚文件,它是不完整的。因此,语法 {% include "file.twig" %} 将帮助我们包含两个不同的 Twig 模板:

标头模板 { % include "header.twig" %} 第 5 行。页脚模板({% include "footer.twig" %} 第 23 行。

扩展基本模板

我们创建了一个 base.twig 文件作为父模板,并将内容块留空。该块可以在任何会修改它的自定义 Twig 文件中使用,并且基本模板的其余部分将按原样继承。例如,让我们创建一个 single.twig 文件,该文件将扩展 base.twig 模板并修改 content 块。

{# Single Template: `single.twig` #}{% extends "base.twig" %}{% block content %}    

{{ post.title }}

{{ post.get_content }}

{% endblock %}

此代码显示自定义 single.twig 文件。在第 3 行,该模板扩展为 base.twig 作为其父模板或基本模板。 extends 标签可用于从另一个模板扩展模板。

这里,与 headerfooter 相关的所有详细信息均继承自 base.twig 文件,该文件是父模板,而 content 块将替换为帖子标题和内容。这有多有趣?

木材的 WordPress 备忘单

Timber 的开发人员已确保它从核心到最终用户以各种可能的方式补充 WordPress。尽管 Timber 中 WordPress 函数的转换语法有些不同,但它有很好的文档记录。在本文末尾,我将分享 WordPress 函数及其 Timber 等效函数的一些转换列表。让我们回顾一下。

简要回顾!

在我的上一篇文章中,我创建了一条欢迎消息,该消息仅通过演示网站主页上的 PHP 字符串填充。其代码可以在 GitHub 上的分支中找到。让我们再次重复此过程,但使用不同且更具技术性的方法。

现在,我将显示相同的欢迎消息,但这次是通过创建一个填充在主页上的新页面。

检索 Twig 中的 WordPress 函数

创建一个标题为“欢迎来到我的博客!”的新页面。并在点击发布按钮之前在其中添加一些内容。

使用Twig:块和嵌套,快速启动WordPress开发

现在让我们在主页上显示这个欢迎页面的内容。为此,请再次转到 index.php 文件并添加以下代码行。

<?php/** * Homepage */// Context array.$context = array();// Add the page ID which is 4 in my case.$context[ 'welcome_page' ] = Timber::get_post( 4 );// Timber render().Timber::render( 'welcome.twig', $context );

在这里,我添加了一个 $context 数组,在其中添加了一个元素 welcome_page 然后使用 get_post() 函数来获取我刚刚创建的页面。为此,我提交了页面 ID,在本例中为 4。

welcome.twig 文件中,让我们查看 print_r 元素 welcome_page 并看看我们得到了什么数据。我的welcome.twig 文件目前看起来像这样。

{# Message Template: `welcome.twig` #}
            {{ welcome_page | print_r }}        

我可以确认 $context 数组中的这个元素现在有一个 ID 为 4 的特定页面的 TimberPost 对象。

使用Twig:块和嵌套,快速启动WordPress开发

从这里我们可以获得所有可以在前端显示的属性。例如,我只想显示页面标题内容。所以现在我的 welcome.twig 文件如下所示:

{# Message Template: `welcome.twig` #}

{{ welcome_page.title }}

{{ welcome_page.content }}

主页上有我们需要的信息。

使用Twig:块和嵌套,快速启动WordPress开发

WordPress 备忘单

正如我之前所说,Timber 为您提供了一些 WordPress 函数的便捷转换。这些功能可以帮助您获取与以下内容相关的信息:

博客身体课程页眉/页脚

get_context() 函数

有一个 Timber::get_context() 函数,用于检索开发人员希望在整个网站的前端显示的网站信息负载。文档是这样解释的:

这将返回一个对象,其中包含我们在整个站点中需要的许多常见内容。像你的 nav、wp_head 和 wp_footer 这样的东西你每次都会想要开始(即使你稍后覆盖它们)。您可以执行 $context = Timber::get_context(); print_r( $context ); 查看内部内容或打开 timber.php 自行检查。


不仅如此,您还可以通过方便的过滤器将您自己的自定义数据添加到此函数中。

<?php/** * Custom Context * * Context data for Timber::get_context() function. * * @since 1.0.0 */function add_to_context( $data ) {    $data['foo'] = 'bar';$data['stuff'] = 'I am a value set in your functions.php file';$data['notes'] = 'These values are available everytime you call Timber::get_context();';$data['menu'] = new TimberMenu();return $data;}add_filter( 'timber_context', 'add_to_context' );

您可以在下面找到更多与此类似的转换,这些转换可以与 Timber 一起使用。

博客信息

blog_info('charset') => {{ site.charset }}blog_info('描述') => {{ site.description }}blog_info('站点名称') => {{ site.name }}blog_info('url') => {{ site.url }}

身体等级

implode(' ', get_body_class()) =>

主题

get_template_directory_uri() => {{ theme.link }} (用于父主题)get_template_directory_uri() => {{ theme.parent.link }} (用于子主题)get_stylesheet_directory_uri() => {{ theme.link }}get_template_directory() => {{ theme.parent.path }}get_stylesheet_directory() => {{ theme.path }}

wp_函数

wp_head() => {{ wp_head }}wp_footer() => {{ wp_footer }}

让我们从博客信息开始尝试一些功能。将 foo 写入 {{ site.name }}

前端将显示这样的站点标题:

使用Twig:块和嵌套,快速启动WordPress开发

Timber 还具有一些函数转换,可以通过 TimberPost( )。在解释这个函数的用法之前,我们先列出与其相关的函数转换。

发布

the_content() => {{ post.content }}the_permalink() => {{ post.permalink }}the_title() => {{ post.title }}get_the_tags() => {{ post.tags }}

用法

single.php 文件中使用此代码。


现在让我们测试 Twig 文件中的 {{ post.title }} 函数。

{{ post.title }}

保存,前端会显示这样的帖子标题:

使用Twig:块和嵌套,快速启动WordPress开发

轮到你了!

今天,您在构建 WordPress 主题时见证了 Timber 和 Twig 的 DRY 原则的实际实施。阅读本教程并尝试实现它,如果您有任何问题,请告诉我。您可以在此 GitHub 存储库的 WP Cheatsheet 分支中找到完整的代码。

在下一篇也是上一篇文章中,我将讨论如何在基于 Twig 的 WordPress 模板中处理图像和菜单。在此之前,请在 Twitter 上与我联系以获取您问题的答案,或在此处发布问题。

以上就是使用Twig:块和嵌套,快速启动WordPress开发的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1551407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 21:42:09
下一篇 2025年12月21日 21:42:27

相关推荐

  • html的标签的应该怎样嵌套

    这次给大家带来html的标签的应该怎样嵌套,html的标签嵌套的注意事项有哪些,下面就是实战案例,一起来看一下。 XHTML的标签有许多:p、ul、li、dl、dt、dd、h1~h6、p、a、addressa、span、 strong……我们在运用这些标签搭建页面结构的时候,是可以将它们无限嵌套的,…

    2025年12月21日
    000
  • HTML里关于表格table嵌套的注意事项

     我们知道table表格嵌套有一个最大的问题就是边框会重复,这样就会造成有的地方 边框粗,有的地方边框细,今天就来给大家带来解决办法   【解决办法】:  padding=”0″ style=”html” target=”_blank&#8…

    好文分享 2025年12月21日
    000
  • html中关于iframe如何嵌套网页的实例分析

    把iframe嵌套的网页放在某一位置,只需在iframe外加个框,改变框的位置即可,如:   css如下: *{ padding: 0; margin: 0;} body{background: green} .main{ width: 80%; height: 500px; margin: 0 a…

    2025年12月21日
    000
  • 结构体嵌套怎样实现 多层嵌套结构的内存布局分析

    结构体嵌套通过将一个结构体作为成员嵌入另一个结构体,实现复杂数据组织。声明时需先定义内层结构体,再将其作为外层结构体成员,访问时使用.运算符逐级访问;若定义顺序颠倒,需用前向声明并配合指针。多层嵌套结构体内存连续布局,按成员顺序分配空间,但受内存对齐影响,编译器可能插入padding,导致实际大小大…

    2025年12月18日
    000
  • C++ 命名空间的嵌套与层次结构

    c++++中的命名空间可以嵌套,形成层次结构。通过嵌套命名空间,我们可以组织代码并防止名称冲突。嵌套命名空间可以使用范围解析运算符访问,也可以使用using声明导入。利用嵌套命名空间,我们可以创建复杂的层次结构,例如表示文件系统树或游戏引擎的组件。 C++ 命名空间的嵌套与层次结构 命名空间在 C+…

    2025年12月18日
    000
  • 如何在C++中实现嵌套异常处理?

    嵌套异常处理在c++++中通过嵌套的try-catch块实现,允许在异常处理程序中引发新异常。嵌套的try-catch步骤如下:1. 外部try-catch块处理所有异常,包括内部异常处理程序抛出的异常。2. 内部try-catch块处理特定类型的异常,如果发生超出范围的异常,则将控制权交给外部异常…

    2025年12月18日
    000
  • 块的缓冲

    什么是块缓冲? 在计算机科学中,缓冲指的是在数据从一个地方移动到另一个地方时,将数据临时存储在缓冲区或内存中的一个小的固定大小的区域。当数据从一个位置传输到另一个位置时,通常需要将其临时存储在缓冲区中,以确保传输平稳高效。 缓冲有两种主要类型:输入缓冲和输出缓冲。输入缓冲是指从外部源接收的数据的临时…

    2025年12月17日
    000
  • XML注释能否嵌套?

    XML注释不能嵌套,因解析器会将首个–>视为注释结束,导致后续内容被错误解析,这是XML严格语法设计的一部分,以确保解析的确定性和数据完整性。 <!– 这是一个内部的、被破坏的注释 –> 是的,这有点笨拙,需要手动修改,但当你需要快速注释掉一大段…

    2025年12月17日
    000
  • CSS盒模型支持嵌套吗_嵌套结构与父子关系表现分析

    CSS盒模型支持嵌套,因HTML元素天然可嵌套且每个元素均为独立盒子。子元素位于父元素content区,受padding影响布局,border和padding包围子元素空间,margin可能与父级padding叠加或塌陷。常见问题如垂直margin穿透可通过设置border、padding或over…

    2025年12月1日 web前端
    100
  • yii框架怎么使用twig模板引擎

    yii2 默认使用php 和html 混合的方式来写视图层,如果您已经非常习惯使用twig的语法,可以选择使用twig视图引擎。 github 已经有人提供了这样的vendor ,可以直接composer 配置一下进行使用。 composer.json 文件 require 添加 “yi…

    2025年11月6日 PHP框架
    000

发表回复

登录后才能评论
关注微信