我想要通过在CKAN的主导航菜单的菜单项可自定义扩展的功能。 不知道我怎样才能从我的扩展代码添加这个新的菜单项。 任何帮助,将不胜感激。
谢谢,PK
我想要通过在CKAN的主导航菜单的菜单项可自定义扩展的功能。 不知道我怎样才能从我的扩展代码添加这个新的菜单项。 任何帮助,将不胜感激。
谢谢,PK
如果你想利用CKAN的主导航菜单,它变得有点棘手。 (我们只是图了这一点不知道,如果我们这样做,是正确的做法,但我们没有得到它与2.2 CKAN工作。):
首先,您需要在您的扩展路径中的附加内容的地方。 假设它在my_extension/amazing.html
,要添加以下到my_extension /模板/ header.html中的文件(在你的自定义扩展):
{% ckan_extends %}
{% block header_site_navitagtion_tabs %}
{{ h.build_nav_main(
('search', _('Datasets')),
('organizations_index', _('Organizations')),
('group_index', _('Groups')),
('about', _('About')),
('amazing', _('Amazing Extension'))
) }}
{% endblock %}
这将导致服务器错误,因为“惊艳”尚未在塔为映射路径注册。 我们会解决这个问题下一个。 如果你已经建立了你的扩展正确,你应该有一个my_extension / plugins.py,到你需要添加以下到您的插件的类定义:
class AmazingPlugin(plugins.SingletonPlugin, tk.DefaultDatasetForm):
#or
plugins.implements(plugins.IRoutes, inherit=True)
def before_map(self, m):
m.connect('amazing', #name of path route
'/amazing', #url to map path to
controller='ckanext.my_extension.controller:AmazingController', #controller
action='amazing') #controller action (method)
return m
..where ckanext.my_extension.controller
是包括路径my_extension / controller.py,我们将创造未来。 它应包括:
import ckan.plugins as p
from ckan.lib.base import BaseController
class AmazingController(BaseController):
def amazing(self):
return p.toolkit.render('amazing.html')
而已。 现在,您已经有了一个控制器映射的URL,你可以调用一个导航项目h.build_nav_main()
简单吧? ;) 最后一件事。 你需要重新启动Apache使其生效。
该CKAN网页扩展 (用于CKAN 2.2+)允许添加基本的页面CKAN,包括增加了相应的链接到主菜单。 管理员用户可以在菜单中设置的页面顺序并使用CKAN的首选降价语言设置页面的内容。 从本质上说,它使CKAN成基本CMS。
更多信息: https://github.com/ckan/ckanext-pages
该扩展是一个官方扩展最初由OKNF(CKAN的制造商)创造,所以它做得很好,(目前)很好的支持。
你只需要到相关的模板添加到您的扩展与HTML为您的菜单项。 见http://docs.ckan.org/en/latest/theming/index.html