http://docs.ckan.org/en/2.9/theming/templates.html#accessing-custom-config-settings-from-templates
template 裡的 app_globals 不是所有 CKAN config 設定都能存取,自訂的 config 設定無法取得,但透過 helper function 就可以。
參考:Using custom config settings in extensions。
延續 上個 CKAN templates CSS tutorial。
新增自訂 config 設定
如下 show_most_popular_groups 設定,決定首頁是否顯示最受歡迎群組。
修改 extension 根目錄下的 plugin.py,新增 helper function 存取自訂的 show_most_popular_groups 設定:
# encoding: utf-8
import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit
from ckan.common import config
def show_most_popular_groups():
'''Return the value of the most_popular_groups config setting.
To enable showing the most popular groups, add this line to the
[app:main] section of your CKAN config file::
ckan.example_theme.show_most_popular_groups = True
Returns ``False`` by default, if the setting is not in the config file.
:rtype: bool
'''
value = config.get('ckan.example_theme.show_most_popular_groups', False)
value = toolkit.asbool(value)
return value
略⋯⋯
class ExampleThemePlugin(plugins.SingletonPlugin):
略⋯⋯
def get_helpers(self):
'''Register the most_popular_groups() function above as a template
helper function.
'''
# Template helper function names should begin with the name of the
# extension they belong to, to avoid clashing with functions from
# other extensions.
return {'example_theme_most_popular_groups': most_popular_groups,
'example_theme_show_most_popular_groups':
show_most_popular_groups,
}
extension 加入的 config 設定名稱要以 extension 名稱開頭,以避免與其他 extension 或 CKAN 內建設定衝突(參考 Avoid name clashes)。
在 layout1.html 中呼叫自訂 helper function
修改 templates/home/layout1.html 如下:
{% ckan_extends %}
略⋯⋯
{# Show the most popular groups if the show_most_popular_groups config setting
is True, otherwise call the super block. #}
{% block featured_organization %}
<p>example_theme_show_most_popular_groups: [{{h.example_theme_show_most_popular_groups()}}]</p>
{% if h.example_theme_show_most_popular_groups() %}
{% snippet 'snippets/example_theme_most_popular_groups.html' %}
{% else %}
{{ super() }}
{% endif %}
{% endblock %}
修改 ckan.ini 設定
/etc/ckan/default/ckan.ini
[app:main]
## example_theme
ckan.example_theme.show_most_popular_groups = False
安裝
- 進入Python Virtual Environment:
. /usr/lib/ckan/default/bin/activate - 切換目錄:
cd /usr/lib/ckan/default/src/ckanext-example_theme - 安裝 Plugin:
python setup.py develop - 重啟 CKAN 服務:
(production版) sudo supervisorctl restart ckan-uwsgi:*
(develop版) ckan -c /etc/ckan/default/ckan.ini run
沒有留言:
張貼留言