如何在Timber/Twig按需引入组件时触发对应PHP文件执行?
按需加载特色文章查询逻辑的实现方法
- 封装查询逻辑为独立函数
把featured-issues.php里的数据库查询代码改成一个独立函数,避免全局执行:// featured-issues.php function get_featured_issues() { // 替换成你的实际查询逻辑,比如WordPress环境下: return get_posts([ 'post_type' => 'featured_issue', 'posts_per_page' => 5, 'orderby' => 'date', 'order' => 'DESC' ]); } - 在Twig模板片段中触发查询
修改partials/blocks/featured-issues.twig,在模板内部加载PHP文件并调用函数获取数据,以WordPress Timber框架为例:{% do function('require_once', get_template_directory() ~ '/partials/blocks/featured-issues.php') %} {% set featured_issues = function('get_featured_issues') %} {% if featured_issues %} <div class="featured-issues-list"> {% for issue in featured_issues %} <article class="featured-issue-item"> <h4>{{ issue.title }}</h4> <p>{{ issue.excerpt }}</p> </article> {% endfor %} </div> {% endif %} - 确保全局不提前加载
不要在functions.php或其他全局初始化文件中引入featured-issues.php,只有当Twig执行include加载该模板片段时,才会触发PHP文件的加载和查询逻辑执行。
如果是自定义Twig环境(非WordPress),可以通过注册Twig扩展或在模板中直接调用PHP方法实现,核心逻辑一致:仅在模板片段被加载时,才执行数据查询代码。
内容的提问来源于stack exchange,提问作者Rima
相关产品推荐
相关产品推荐

