Я хотел бы добавить дополнительные вкладки навигации по сайту в заголовке к стандартным.
Я пробовал работать с решением, указанным здесь, но оно у меня не работает. Я получаю ошибку Exception: menu item
apicannot be found
Это мой код plugin.py
import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit
class ApiPlugin(plugins.SingletonPlugin, toolkit.DefaultDatasetForm):
plugins.implements(plugins.IRoutes, inherit=True)
def before_map(self, m):
m.connect('api', #name of path route
'/api', #url to map path to
controller='ckanext.kimetrica_theme.controller:ApiController', #controller
action='api') #controller action (method)
return m
Это мой код header.html
{% ckan_extends %}
{% block header_site_navigation_tabs %}
{{ h.build_nav_main(
('search', _('Datasets')),
('organizations_index', _('Organizations')),
('group_index', _('Groups')),
('about', _('About')),
('api', _('api'))
) }}
{% endblock %}
И это мой код controller.py
import ckan.plugins as p
from ckan.lib.base import BaseController
class ApiController(BaseController):
def api(self):
return p.toolkit.render('api.html')
Я ожидаю, что меню API будет работать так же, как и остальная часть меню. У меня также есть мой шаблон (api.html
) на месте
Судя по тому, что вы опубликовали, похоже, вы не настроили plugins.implements(plugins.IConfigurer, inherit=True)
для регистрации нового шаблона. Попробуйте сослаться на это расширение в качестве примера. https://github.com/ckan/ckan/blob/2.8/ckanext/stats/plugin.py для создания новой страницы.
Вы находитесь на правильном пути для меню.
И какую версию CKAN вы используете? Возможно, вы захотите переключить это на план фляги. Нравится https://github.com/ckan/ckan/blob/2.8/ckanext/example_flask_iblueprint/plugin.py
Если вы используете 2.9 (в альфа-версии), ознакомьтесь с этой проблемой и комментариями ckan 2.9.0 iroute before_map не вызывает пользовательский контроллер.
Я решил этот вопрос с помощью ckanext-pages extension
Это расширение позволяет добавлять простые статические страницы и блоги и редактировать их содержимое.
Я решил этот вопрос с помощью расширение ckanext-pages Это расширение позволяет добавлять простые статические страницы и блоги и редактировать их содержимое.
Я решил это, создав новый файл HTML для заголовка, например. header_foo.html
. Кроме того, вы должны изменить page.html
:
…
{%- block header %}
{% include "header_foo.html" %}
{% endblock -%}
…
Точно так же вы можете скрыть вкладки навигации.
У меня была настройка
plugins.implements(plugins.IConfigurer, inherit=True)
, но я не поделился всем кодом. Я только поделился кодом, связанным с этой проблемой. Я использую CKAN версии 2.8. Я решил использовать расширениеckanext-pages
для достижения этой цели, но я также попробую ваше предложение. С уважением