{% ckan_extends %}
用 Jinja 的 {% ckan_extends %} 可讓自訂 template 「擴充」預設內容,而不是取代它。
修改 index.html
修改上個 tutorial 產生的 home/index.html 如下:
{% ckan_extends %}
重新瀏覽 CKAN 首頁,自訂 index.html 裡的 {% ckan_extends %} 告訴 CKAN 先執行原本的 home/index.html。
{% block %}
Jinja templates 中可嵌入 block 讓其它 templates 取代其內容,如 CKAN 預設 /usr/lib/ckan/default/src/ckan/ckan/templates/home/layout1.html:
<div role="main">
<div class="main hero">
<div class="container">
<div class="row row1">
<div class="col-md-6 col1">
{% block promoted %}
{% snippet 'home/snippets/promoted.html' %}
{% endblock %}
</div>
<div class="col-md-6 col2">
{% block search %}
{% snippet 'home/snippets/search.html' %}
{% endblock %}
</div>
</div>
</div>
</div>
<div class="main">
<div class="container">
<div class="row row2">
<div class="col-md-6 col1">
{# Note: this featured_group block is used as an example in the theming
tutorial in the docs! If you change this code, be sure to check
whether you need to update the docs. #}
{# Start template block example. #}
{% block featured_group %}
{% snippet 'home/snippets/featured_group.html' %}
{% endblock %}
{# End template block example. #}
</div>
<div class="col-md-6 col2">
{% block featured_organization %}
{% snippet 'home/snippets/featured_organization.html' %}
{% endblock %}
</div>
</div>
</div>
</div>
</div>
CKAN 支援不同的layout: layout1, layout2, layout3 等。由 sysadmin 在 admin 頁設定。假設使用第一個 layout1.html。
以 {% ckan_extends %} 擴充 CKAN 預設的 template,可用 {% block %} 取代預設 template 中的任何 block。
新增 layout1.html
建立 ckanext-example_theme/ckanext/example_theme/templates/home/layout1.html ,內容如下:
{% ckan_extends %}
{% block featured_group %}
取代原本的 featured_group: Hello block world!
{% endblock %}
這個檔案擴充原本的 layout1.html,覆寫其中的 featured_group block。
重啟 web server,瀏覽 CKAN 首頁,可看到 featured_group 區塊已被取代為 Hello block world!,但其它內容都沒有動。
{{ super() }}
{{ super() }} 可在 block 加入內容,而不是取代它。
修改:layout1.html
{% ckan_extends %}{% block featured_group %}
<p>這段文字會出現在 <code>featured_group</code> block 上方</p>
沒有留言:
張貼留言