在 concrete5 的包中设置页面类型覆盖中的自定义模板

Setting custom template in page type override in a package in concrete5

在 Concrete5.6.3.2 中,我创建了一个自定义包,其中覆盖了核心块类型 'page_list'。 在同一包的自定义页面类型中,我定义了一个新区域:

$a = new Area('main');

我希望在将 page_list 块添加到我的自定义页面类型中的该区域时为其设置自定义模板(视图)。我已经阅读了许多关于类似主题的其他答案,但我认为这对我不起作用的原因是 1) 因为我在自定义包中工作,或者 2) 在那个包中我覆盖了一个核心混凝土 5 块类型。

这是我在上面的代码行下面所做的:

$a->setCustomTemplate('page_list', 'templates/events.php'); // I have also tried without the .php
$a->display($c);

events.php 视图位于 root/packages/my_package/blocks/page_list/templates/events。php

但是,尽我所能,当我将 page_type 块添加到该区域时,自定义模板不是默认模板。我关于为什么这不起作用的假设是否正确?如何解决这个问题?

谢谢!

我相信 setCustomTemplate() 只是使模板可供使用,而不是将其设为默认模板。在 5.6 中,我认为唯一的方法是覆盖块的 view.php,这似乎不适用于包。

在 5.7 中,他们已经解决了这个问题,您可以从主题的 PageTheme class

中设置默认块模板