Применить пользовательскую тему / код к расширению CKAN - PullRequest
0 голосов
/ 04 сентября 2018

Надеюсь, я смогу четко объяснить. У меня есть экземпляр CKAN, который имеет собственную тему. Эта тема реализована в виде пользовательского расширения и полностью функциональна. Теперь я хочу добавить выходные данные из другого расширения в этот пользовательский шаблон.

Я знаю, как расширить {% extends %} из шаблона по умолчанию и как работает {% block %}. Но я не знаю, как управлять выводом моего пользовательского расширения, чтобы поместить его в свой пользовательский шаблон (из отдельного пользовательского расширения).

Например, у меня есть custom_search_form.html:

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

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

  ...
{% endblock %}

Если это мой пользовательский шаблон (и он работает), сейчас я хочу переместить этот блок «если» в мое новое расширение. Что я должен добавить здесь или как я ссылаюсь из этого на мой новый код? Я не знаю, возможно ли это вообще.

Если вопрос недостаточно ясен, пожалуйста, скажите мне, и я постараюсь уточнить. Большое спасибо за ваше время и помощь.

1 Ответ

0 голосов
/ 11 сентября 2018

Прекрасно использовать {% 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 ...
...