将自定义主题/代码应用于CKAN扩展

问题描述 投票:1回答:1

我希望我能清楚地解释自己。我有一个CKAN实例,它有一个自定义主题。此主题作为自定义扩展实现,并且功能完备。现在我想将另一个扩展的输出信息添加到此自定义模板中。

我知道如何使用{% extends %}从默认模板扩展以及{% block %}如何工作。但我不知道如何管理我的自定义扩展输出以将其放在我的自定义模板上(来自不同的自定义扩展)。

例如,我有custom_search_form.html

{% extends 'snippets/search_form.html' %}
  ...      

  {% if ok %}
        my code
  {% endif %}

  ...
{% endblock %}

如果这是我的自定义模板(并且它正在运行),我现在想要将“if”块移动到我的新扩展名。我应该在这里添加什么或者如何从这里添加到我的新代码中?我不知道如果这是可能的。

如果问题不够明确,请告诉我,我会尽力澄清。非常感谢您的时间和帮助。

python jinja2 ckan
1个回答
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 ...
© www.soinside.com 2019 - 2024. All rights reserved.