我希望我能清楚地说明自己。我有一个具有自定义主题的CKAN实例。该主题实现为自定义扩展,并且功能齐全。现在,我想将另一个扩展的输出信息添加到此自定义模板。
我知道如何使用默认模板中的{% extends %}
进行扩展,以及{% block %}
的工作方式。但是我不知道如何管理我的自定义扩展名输出以将其放在我的自定义模板中(来自不同的自定义扩展名)。
例如,我有custom_search_form.html
:
{% extends 'snippets/search_form.html' %}
...
{% if ok %}
my code
{% endif %}
...
{% endblock %}
如果这是我的自定义模板(并且正在运行),那么我现在想将该“ if”块移动到新的扩展名中。我应该在这里添加什么,或者如何从中引用我的新代码?我不知道这是否有可能。
如果问题不够清楚,请告诉我,我将尽力澄清。非常感谢您的时间和帮助。
答案 0 :(得分:0)
使用{% extends '...' %}
覆盖第二个插件中一个插件的模板是完全可以的。扩展原始模板时,只需使用原始模板的路径(没有模板目录的前缀)。例如,如果您的主题有模板
/path/to/your/theme/ckanext/my_custom_theme/public/templates/my_custom_theme/some_snippet.html
然后您可以使用扩展名扩展它
{% extends 'my_custom_theme/some_snippet.hml' %}
如上所示,扩展程序应将新模板放在单独的子目录中,以避免名称冲突。
您唯一需要记住的是production.ini
中列出的插件的顺序:前面列出的插件可以扩展后面列出的插件,反之亦然。
由于要覆盖扩展中的主题,因此这意味着您需要先列出扩展:
ckan.plugins = ... my_custom_extension ... my_custom_theme ...