Timber::render 似乎无法在 kinsta 上正常工作
Timber::render does not appear to work correctly on kinsta
我正在迁移 wordpress 主题并对其进行故障排除。我有一个 gutenberg 块和一个警报模块设置为使用允许使用 twig 模板引擎的 Timber composer 包。
我在 class
中配置了它
ProcessorTable.php
<?php
namespace CRG\Blocks;
class ProcessorTable
{
public function __construct()
{
$this->createProcessorTable();
}
public function createProcessorTable()
{
if (function_exists('acf_register_block')) {
// register a custom vue gravity forms block
acf_register_block(array(
'name' => 'processor-table-block',
'title' => __('Processor Table Block'),
'description' => __('A Block for displaying a contracted database processors table'),
'category' => 'crg-custom-blocks',
'icon' => 'welcome-write-blog',
'render_callback' => array($this, 'render_processor_table'),
'keywords' => array( 'table' ),
));
}
}
public function render_processor_table($block, $content = '', $is_preview = false)
{
$context = \Timber\Timber::context();
// Store block values.
$context['block'] = $block
// Store field values.
$context['fields'] = get_fields();
// Store $is_preview value.
$context['is_preview'] = $is_preview;
$twigPath = TEMPLATEPATH . "/src/views/blocks/block-processor-table.html.twig";
\Timber\Timber::render($twigPath, $context, 600);
}
}
AlertNotification.php
<?php
namespace CRG\Controllers\SiteWide;
class AlertNotification {
public function AlertModal(){
$context = \Timber\Timber::context();
$context['alert_header_text'] = get_field('alert_header_text', 'options');
$context['alert_text'] = get_field('alert_text', 'options');
$context['alert_icon'] = get_field('alert_icon', 'options');
$context['alert_color'] = get_field('alert_color', 'options');
$context['alert_toggle'] = get_field('alert_toggle', 'options');
\Timber\Timber::render( TEMPLATEPATH . "/src/views/sitewide/alert-modal.html.twig", $context );
}
}
这段代码在 cpanel 服务器和 nexcess 管理的 wordpress 主机上工作,但是当我将它迁移到 kinsta 时,代码停止呈现。看起来 Timber::context() 有效,并且该方法可以找到 html.twig 文件,但它无法呈现树枝模板,并且不会产生任何错误
我尝试通过检查 composer 包版本来解决这个问题,重新安装 timber composer 包,测试 class 之外的代码直接进入 functions.php 文件,并验证代码可以到达并将文件内容输出为字符串。我检查了错误日志文件,但找不到解决方案或错误原因。
主机配置:
Kinsta缓存:禁用
启用 Wordpress 调试
运行 在 PHP 7.4
使用 MySQL
我将其添加到我的 functions.php 文件中
\Timber\Timber::$locations = TEMPLATEPATH . "/src/views";
所以 functions.php 文件中的木材工作的所有内容看起来像这样
require_once(__DIR__ . '/vendor/autoload.php');
$timber = new Timber\Timber();
\Timber\Timber::$locations = TEMPLATEPATH . "/src/views";
然后在我的 ProcessorTable.php 文件中,我可以像这样调用 Twig 文件路径
$twigPath = "/blocks/block-processor-table.html.twig";
return \Timber\Timber::render( $twigPath, $context);
我猜测哪里出了问题是木材包在渲染时寻找错误的方向,基于不正确的位置信息 Timber:locations 方法允许您设置自定义位置来存储模板: https://timber.github.io/docs/guides/template-locations/
不确定为什么这在其他系统上有效,但在 Kinsta 上无效。但是,通过显式设置视图,这似乎是一种很好的做法。
我正在迁移 wordpress 主题并对其进行故障排除。我有一个 gutenberg 块和一个警报模块设置为使用允许使用 twig 模板引擎的 Timber composer 包。
我在 class
中配置了它ProcessorTable.php
<?php
namespace CRG\Blocks;
class ProcessorTable
{
public function __construct()
{
$this->createProcessorTable();
}
public function createProcessorTable()
{
if (function_exists('acf_register_block')) {
// register a custom vue gravity forms block
acf_register_block(array(
'name' => 'processor-table-block',
'title' => __('Processor Table Block'),
'description' => __('A Block for displaying a contracted database processors table'),
'category' => 'crg-custom-blocks',
'icon' => 'welcome-write-blog',
'render_callback' => array($this, 'render_processor_table'),
'keywords' => array( 'table' ),
));
}
}
public function render_processor_table($block, $content = '', $is_preview = false)
{
$context = \Timber\Timber::context();
// Store block values.
$context['block'] = $block
// Store field values.
$context['fields'] = get_fields();
// Store $is_preview value.
$context['is_preview'] = $is_preview;
$twigPath = TEMPLATEPATH . "/src/views/blocks/block-processor-table.html.twig";
\Timber\Timber::render($twigPath, $context, 600);
}
}
AlertNotification.php
<?php
namespace CRG\Controllers\SiteWide;
class AlertNotification {
public function AlertModal(){
$context = \Timber\Timber::context();
$context['alert_header_text'] = get_field('alert_header_text', 'options');
$context['alert_text'] = get_field('alert_text', 'options');
$context['alert_icon'] = get_field('alert_icon', 'options');
$context['alert_color'] = get_field('alert_color', 'options');
$context['alert_toggle'] = get_field('alert_toggle', 'options');
\Timber\Timber::render( TEMPLATEPATH . "/src/views/sitewide/alert-modal.html.twig", $context );
}
}
这段代码在 cpanel 服务器和 nexcess 管理的 wordpress 主机上工作,但是当我将它迁移到 kinsta 时,代码停止呈现。看起来 Timber::context() 有效,并且该方法可以找到 html.twig 文件,但它无法呈现树枝模板,并且不会产生任何错误
我尝试通过检查 composer 包版本来解决这个问题,重新安装 timber composer 包,测试 class 之外的代码直接进入 functions.php 文件,并验证代码可以到达并将文件内容输出为字符串。我检查了错误日志文件,但找不到解决方案或错误原因。
主机配置: Kinsta缓存:禁用 启用 Wordpress 调试 运行 在 PHP 7.4 使用 MySQL
我将其添加到我的 functions.php 文件中
\Timber\Timber::$locations = TEMPLATEPATH . "/src/views";
所以 functions.php 文件中的木材工作的所有内容看起来像这样
require_once(__DIR__ . '/vendor/autoload.php');
$timber = new Timber\Timber();
\Timber\Timber::$locations = TEMPLATEPATH . "/src/views";
然后在我的 ProcessorTable.php 文件中,我可以像这样调用 Twig 文件路径
$twigPath = "/blocks/block-processor-table.html.twig";
return \Timber\Timber::render( $twigPath, $context);
我猜测哪里出了问题是木材包在渲染时寻找错误的方向,基于不正确的位置信息 Timber:locations 方法允许您设置自定义位置来存储模板: https://timber.github.io/docs/guides/template-locations/
不确定为什么这在其他系统上有效,但在 Kinsta 上无效。但是,通过显式设置视图,这似乎是一种很好的做法。