Jinjia2
CKAN template 以 Jinja2 撰寫。
敍述式及變數
{{ ... }} 中即 Jinja2 敍述式,最後放入執行結果。
{{ foo }} 會顯示成變數 foo 的值。
template 可用 CKAN 的許多全域變數,像是 app_globals 用 g 別名取得 CKAN 設定檔中部分設定,例如 ckan.site_title:
其他可參考:http://docs.ckan.org/en/2.9/theming/variables-and-functions.html。
並不是所有設定都讀得到,自訂設定就讀不到,參考:CKAN Templates Tutorial 9(v2.9): 存取自訂的 config 設定。
若 template 要讀取的變數不存在,不會 crash 也不會有錯誤訊息,Jinja2 只會傳回空字串。
但如果要產生不存在變數的 attribute,Jinja2 會 crash,如下:
{{ a_variable_that_does_not_exist.an_attribute_that_does_not_exist }}
UndefinedError: 'a_variable_that_does_not_exist' is undefined
Jinja2 不只是列印變數,還可以呼叫 Jinja2 的 global functions, CKAN 的 template helper functions 及自訂的 template helper functions。參考:Variables and functions available to templates。
Jinja tags
{% ... %} 裡的 Jinja tags 可控制程式邏輯。我們可以顯示啟用的 plugin 清單:
用 Jinja’s {% if %} 測試條件:
註解
{# ... #} 裡的是註解。
{# This text will not appear in the output when this template is rendered. #}
修改 index.html
重啟 CKAN
- 進入Python Virtual Environment:
. /usr/lib/ckan/default/bin/activate - 重啟 CKAN 服務:
(production版) sudo supervisorctl restart ckan-uwsgi:*
(develop版) ckan -c /etc/ckan/default/ckan.ini run
沒有留言:
張貼留言