目录
木材中的图像
用法
Timber 中的用户
{{ post.title }}
结论
首页 web前端 html教程 使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

Sep 04, 2023 pm 03:37 PM
twig wordpress开发 timber

到目前为止,您已经了解了通过 Timber 使用 Twig 的基本概念,同时构建了模块化 WordPress 主题。我们还基于 DRY 原则,使用 Twig 研究了块嵌套和多重继承。今天,我们将探讨如何通过 Timber 插件使用 Twig 在主题中显示附件图像、WordPress 菜单和用户。

木材中的图像

图像是任何 WordPress 主题的重要元素之一。在常规的 WordPress 编码实践中,图像与 PHP 集成在正常的 HTML 图像标签内。但是,Timber 提供了一种相当全面的方法来处理 img(图像)标签,该方法是模块化且干净的。

帖子的缩略图字段中附加了图片。这些可以通过 {{ post.thumbnail }} 通过 Twig 文件轻松检索。就是这么简单!

用法

让我们从一个实际的例子开始。我们的 single.php 文件如下所示:

<?php
/**
 * Single Template
 *
 * The Template for displaying all single posts.
 *
 * @since 1.0.0
 */

// Context array
$context         = Timber::get_context();
$post            = new TimberPost();
$context['post'] = $post;

// Timber ender().
Timber::render( 'single.twig', $context );
登录后复制

在这里,出于非常明显的原因,我使用了 TimberPost() 函数。它在整个 Timber 中用于表示从 WordPress 检索的帖子,使它们可用于 Twig 模板。

由于特色图像附加到帖子数据中,我们现在需要在前端检索它。因此,它的 Twig 文件 single.twig 将如下所示:

{# Sinlge Template: `single.twig` #}

{% extends "base.twig" %}

{% block content %}

    <div class="single_content">

        <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303714882.jpg"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" >

    </div>

{% endblock %}
登录后复制

在第 9 行,代码 {{ post.thumbnail.src }} 检索帖子的特色(缩略图)图像并按如下方式显示:

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

您可以使用此代码语法检索任意数量的缩略图。

使用 Timber 时,您还可以对这些图像进行更多实验。例如,您还可以通过以下方式调整它们的大小:

<img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303849158.jpg"  class="lazy"  / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" >
    
登录后复制

通过使用 resize() 函数,您可以向图像添加新尺寸,其中第一个参数是 width,第二个参数是 高度。如果您想按比例缩放图像,请忽略 height 属性。现在语法变成:

<img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303849158.jpg"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" >
登录后复制

前端显示相同的图像,如下所示:

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

如果您想探索更多内容,请尝试图像食谱。

使用 TimberImage()

考虑这样一个场景:开发者想要通过图像 ID 获取图像,或者想要通过 URL 显示外部图像等。对于这种扩展方法,Timber 提供了一个类,TimberImage (),表示从 WordPress 检索到的图像。

用法

让我们以 single.php 文件为例,现在看起来像这样:

<?php
/**
 * Single Template
 *
 * The Template for displaying all single posts.
 *
 * @since 1.0.0
 */

// Context array
$context         = Timber::get_context();
$post            = new TimberPost();
$context['post'] = $post;

// Using the TimberImage() function 
// to retrieve the image via its ID i.e 8
$context['custom_img'] = new TimberImage( 8 );

// Timber ender().
Timber::render( 'single.twig', $context );
登录后复制

这次,我使用 TimberImage() 类,该类将图像 ID 8 作为其参数。编码例程的其余部分是相同的。让我们通过 Twig 文件 single.twig 类,该类将图像 ID 8 作为其参数。编码例程的其余部分是相同的。让我们通过 Twig 文件

检索此图像。

<img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303714882.jpg"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" >
登录后复制
$context custom_img 元素中的值,即 {{ custom_img }}存储在

,将通过其 ID 检索图像以显示在前端,如下所示:

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

要通过外部 URL 替换检索图像,您可以遵循以下语法。

<?php $context[ 'img' ] = new TimberImage( 'https://domain.com/link/image.jpg' ); ?>

登录后复制

这一次,前端显示的不是图像 ID,而是外部图像 URL,如下所示:

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

要探索此功能的更多功能,您可以查看文档。

木材菜单

TimberMenu()现在,您将如何使用 Twig 模板渲染 WordPress 菜单?这是一件很棘手的事情。但是,坚持住! Timber 为您提供了

类,它可以帮助您将 Twig 文件内的 WordPress 菜单呈现为完整的循环。我们来看一下。

用法

检索菜单项的整个概念都围绕菜单对象functions.php。有两种定义其上下文的方法。第一个是将菜单对象添加到全局 get_context() 函数中,使菜单对象在每个页面上可用,就像我在

文件中所做的那样。其次,您可以通过 ID 为特定 PHP 模板添加特定菜单。🎜

无论采用哪种方法,一旦菜单可供 Timber $context 数组使用,您就可以从中检索所有菜单项。但我更喜欢在全球范围内定义它。因此,转到 functions.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' );
登录后复制

因此,我在这里定义了一个自定义函数调用 add_to_context。在这个函数内部有一些数据,我希望通过 get_context() 函数在每个 PHP 模板中都可以使用这些数据。在第 13 行,您可以找到 TimberMenu() 的实例,该实例针对 $data 数组中的元素菜单传递。

这将使 Twig 模板可以使用标准 WordPress 菜单作为我们可以循环访问的对象。 TimberMenu() 函数可以采用菜单项或 ID 等参数。

让我们创建一个名为 menu.twig 文件的 Twig 模板。

{# Menu Template: `menu.twig` #}

<nav>
    <ul class="main-nav">
        {% for item in menu.get_items %}
                <li class="nav-main-item {{ item.classes | join(' ') }}">
                    <a class="nav-main-link" href="{{ item.get_link }}">{{ item.title }}</a>
                </li>
        {% endfor %}
    </ul>
</nav>
登录后复制

上面的代码在此 Twig 模板内运行一个循环。第 5 行为每个菜单项运行 for 循环,并在无序列表中显示每个菜单 item 的标题。循环运行,直到 menu 对象的所有键值对都被迭代并列出在前端。

我继续将 menu.twig 模板包含在第 11 行的 base.twig 模板中。

{# Base Template: `base.twig` #}

{% block html_head_container %}

    {% include 'header.twig' %}

{% endblock %}

	<body class="{{body_class}}">

		{% include "menu.twig" %}

		<div class="wrapper">

			{% block content %}

			    <!-- Add your main content here. -->
			    <p>SORRY! No content found!</p>

			{% endblock %}

		</div>
		<!-- /.wrapper -->

	{% include "footer.twig" %}

	</body>

</html>
登录后复制

让我们预览一下我的演示网站的后端(外观 > 菜单),其中菜单包含两个父项和一个子项。

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

所以,让我们看一下帖子页面 - 因为我们的 single.twig 扩展了 base.twig,我们的菜单将自动出现在该页面上。

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

您可以看到,在我们单个帖子的顶部有一个菜单,其中包含两个父项。

子菜单项怎么样?让我们更新 menu.twig 文件以也包含子项目。

{# Menu Template: `menu.twig` #}

<nav>
    <ul class="main-nav">
        {% for item in menu.get_items %}
                <li class="nav-main-item {{ item.classes | join(' ') }}">
                    <a class="nav-main-link" href="{{ item.get_link }}">{{ item.title }}</a>

						{% if item.get_children %}

							<ul class="nav-drop">

								{% for child in item.get_children %}

								<li class="nav-drop-item">
									<a href="{{ child.get_link }}">{{ child.title }}</a>
								</li>

								{% endfor %}

							</ul>

						{% endif %}

                </li>
        {% endfor %}
    </ul>
</nav>
登录后复制

第 9 行到第 23 行打印子菜单项(如果有)。这次,前端显示我们第一个父项的子项。

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

有关 TimberMenu() 的更多详细信息,请查看文档。

Timber 中的用户

可以使用 TimberUser() 类从 WordPress 数据库检索用户。该类采用用户 ID 或 slug 作为参数来检索用户。

由于用户或博客作者与 WP 帖子相关联,我将使用 single.php 的代码,现在如下所示:

<?php
/**
 * Single Template
 *
 * The Template for displaying all single posts.
 *
 * @since 1.0.0
 */

// Context array
$context         = Timber::get_context();
$post            = new TimberPost();
$context['post'] = $post;

// Using the TimberImage() function
// to retrieve the image via its ID i.e 8
$context['custom_img'] = new TimberImage( 8 );

// Get the user object.
$context['user'] = new TimberUser();

// Timber ender().
Timber::render( 'single.twig', $context );
登录后复制

第 20 行初始化 TimberUser() 类并分配给上下文对象元素,即 user。让我们通过 Twig 模板显示作者姓名。

我的 single.twig 模板在第 #21 行末尾有一行新代码。

{# Sinlge Template: `single.twig` #}

{% extends "base.twig" %}

{% block content %}

    <div class="single_content">

        <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303929063.png"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" >

    	{# <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303929063.png"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" > #}

    	{# <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303929063.png"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" > #}

    	{# <img  src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/465/014/169381303929063.png"  class="lazy" / alt="使用Twig和Timber图像、菜单和用户,快速启动WordPress开发" > #}

        <h1 id="post-title">{{ post.title }}</h1>

        <p>{{ post.get_content }}</p>

        <p>Author: {{ user }} </p>
    </div>

{% endblock %}
登录后复制

代码获取当前帖子的作者姓名并将其显示在前端。您可以使用 {{ 用户 | print_r }} 查看 TimberUser 对象中还有什么可用的。

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发

要了解有关此类的更多信息,请参阅文档。您可以在 ImagesMenusUsers 分支的 GitHub 存储库中找到本教程的代码。

结论

本文总结了整个系列。在这四篇文章中,我探索了如何使用 Timber 将 Twig 模板语言集成到 WordPress 主题中。

本系列的最终存储库可以在 GitHub 上找到,其中包含特定于教程的分支:

  • 教程 #2:入门
  • 教程 #3:WordPress 备忘单
  • 教程 #4:TimberImages、TimberMenu 和 TimberUser

您可以查阅 Timber 的在线文档了解更多信息。

完成整个系列并实现所有解释的示例,我打赌您会喜欢 Twig。在下面的评论框中发表您的疑问。您也可以通过 Twitter 联系我。

以上是使用Twig和Timber图像、菜单和用户,快速启动WordPress开发的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在CakePHP中使用Twig? 如何在CakePHP中使用Twig? Jun 05, 2023 pm 07:51 PM

在CakePHP中使用Twig是一种将模板和视图分离的方法,能够使代码更加模块化和可维护,本文将介绍如何在CakePHP中使用Twig。一、安装Twig首先在项目中安装Twig库,可以使用Composer来完成这个任务。在控制台中运行以下命令:composerrequire"twig/twig:^2.0"这个命令会在项目的vendor

如何在PHP中使用Twig模板引擎进行Web开发 如何在PHP中使用Twig模板引擎进行Web开发 Jun 25, 2023 pm 04:03 PM

随着Web开发技术的不断发展,越来越多的开发者开始寻找更加灵活、高效的模板引擎来进行Web应用的开发。其中,Twig是一款十分优秀、流行的PHP模板引擎,它基于Symfony框架开发并支持无限扩展,非常适合用于构建复杂的Web应用程序。本篇文章将介绍如何在PHP中使用Twig模板引擎进行Web开发。一、Twig模板引擎简介Twig是由FabienPoten

PHP8.0中的模板库:Twig PHP8.0中的模板库:Twig May 14, 2023 am 08:40 AM

PHP8.0中的模板库:TwigTwig是一款目前广泛用于PHPWeb应用程序中的模板库,具有可读性高、易于使用和可扩展性强等特点。Twig使用简单易懂的语法,可以帮助Web开发人员以清晰、有序的方式组织和输出HTML,XML,JSON等文本格式。本篇文章将为您介绍Twig的基本语法和特点以及它在PHP8.0中的使用。Twig的基本语法Twig采用类似于P

使用Twig和Timber图像、菜单和用户,快速启动WordPress开发 使用Twig和Timber图像、菜单和用户,快速启动WordPress开发 Sep 04, 2023 pm 03:37 PM

到目前为止,您已经了解了通过Timber使用Twig的基本概念,同时构建了模块化WordPress主题。我们还基于DRY原则,使用Twig研究了块嵌套和多重继承。今天,我们将探讨如何通过Timber插件使用Twig在主题中显示附件图像、WordPress菜单和用户。木材中的图像图像是任何WordPress主题的重要元素之一。在常规的WordPress编码实践中,图像与PHP集成在正常的HTML图像标签内。但是,Timber提供了一种相当全面的方法来处理img(图像)标签,该方法是模块化且干净的。

PHP中的高级皮肤:如何使用Twig PHP中的高级皮肤:如何使用Twig Jun 19, 2023 pm 04:03 PM

在Web开发中,页面的呈现是至关重要的。对于PHP开发人员,他们在开发一个动态网站时,容易深陷在大量的HTML标记和PHP代码中。而一旦需要修改样式或布局,就必须一遍遍地修改代码,这样的维护成本极高。为了解决这个问题,现代的PHP框架通常提供了一个模板引擎。其中,Twig是其中一个较为流行的模板引擎。在本文中,我们将介绍如何以及为什么使用Twig来进行PHP

如何在CodeIgniter框架中使用模板引擎Twig? 如何在CodeIgniter框架中使用模板引擎Twig? Jun 03, 2023 pm 12:51 PM

随着开源和Web开发的不断发展,开发者们对于各种框架、工具和技术的需求不断增长。众所周知,CodeIgniter是最流行的PHP框架之一。在其基础上,结合现代的模板引擎Twig,可以快速易用地构建高质量的Web应用程序。因此,本文将介绍如何在CodeIgniter框架中如何使用Twig模板引擎。一、什么是TwigTwig是一个现代的、优雅的、灵活的PHP模板

使用Twig:块和嵌套,快速启动WordPress开发 使用Twig:块和嵌套,快速启动WordPress开发 Aug 31, 2023 pm 06:29 PM

在上一篇文章中,我介绍了通过Timber将Twig模板引擎与WordPress集成以及开发人员如何将PHP文件中的数据发送到Twig文件。让我们讨论如何使用Twig创建基本模板、这种DRY技术的优点以及Timber-TwigWordPressCheatsheet。在Twig中创建基本模板Twig遵循DRY(不要重复自己)原则。Twig最重要的功能之一是具有嵌套和多重继承的基本模板。虽然大多数人以线性方式使用PHP包含,但您可以创建无限级别的嵌套块来专门控制您的页面模板。将您的基本模板视为其中包含

如何用 Timber 调试 PHP 函数的模版渲染? 如何用 Timber 调试 PHP 函数的模版渲染? Apr 23, 2024 pm 12:12 PM

通过以下步骤调试TimberPHP模版渲染:安装Timber调试插件。在你的config.php文件中启用调试模式。在你的Twig模版中使用{{dump()}}来转储变量。在你的PHP函数中定义要转储的变量。使用Timber渲染模版。通过以上步骤,Timber调试插件将在浏览器的控制台中显示变量的值,帮助你快速识别并解决渲染问题。

See all articles