加入 ckanext-pages 中 blog 清單 (最新消息為例)
原模組
- 此統計模組為原 layout2.html 的 snippet 模組,原相依位置為
# 位於 template 底下,為 homepage 中顯示的一部分
/usr/lib/ckan/default/src/ckan/ckan/templates/
|- home/
|- layout2.html # 於此呼叫 promoted.html 內容
|- snippets/customized_promoted.html # 顯示框架
|- snippets/latest_item.html # 顯示項目
- 將此取出,並假設以 layout1.html 為主模版開發
# 複製一份 promoted.html 內容為 customized_promoted.html 並準備引用
cd /usr/lib/ckan/default/src/ckan/ckan/templates
cp ./home/snippets/promoted.html ./home/snippets/customized_promoted.html
# 位於 template 底下,為 homepage 中顯示的一部分
/usr/lib/ckan/default/src/ckan/ckan/templates/
|- home/
|- layout1.html # 以此為模版,並於此頁面下加入客製化統計頁面
客製化模組
假設使用 layout1.html 作為主要顯示的模組,此需要管理員登入後於「設置」中「首頁」項目中亦選擇「Introductory area, search, ... 」選項才是以 layout1.html 為模組。
將剛複製出的 customized_promoted.html 加入 layout1.html ,並放置於主畫面牆之下。
<div role="main" class="homepage-data-section">
<div class="container">
<div class="row row1 section-topic general-font-family">
{# 重新設定區塊主題,getLangLabel 為自定義函式 (位於 helper.py 中) #}
{{ h.getLangLabel("Browser more topics and data.", "瀏覽更多的資料與內容") }}
</div>
<div class="row row2">
<div class="span6 col1">
{% block stats %}
{% snippet 'home/snippets/customized_promoted.html' %}
{% endblock %}
</div>
<div class="span6 col2">
</div>
</div>
</div>
</div>
- customized_promoted.html 內容為顯示最新消息的清單
{% set intro = g.site_intro_text %}
<div class="box" style="padding-bottom: 20px;">
<header class="hp-header-bg">
{% if intro %}
{{ h.render_markdown(intro) }}
{% else %}
<h3 class="page-heading module-content">
{{ h.getLangLabel("Latest News","最新消息") }}
</h3>
{% endif %}
</header>
{# cdc #}
{% block home_image %}
{% snippet 'snippets/latest_item.html' %}
{% endblock %}
</div>
- latest_item.html 內容為顯示最新消息的3則清單
{% set posts = h.get_recent_blog_posts(number=3) %}
{% for post in posts %}
<div class="blog-title dataset-item module-content">
<h3 class="dataset-heading">
<i class="icon-pushpin"></i>
<a href="{{ h.url_for(controller='ckanext.pages.controller:PagesController', action='blog_show', page='/' + post.name) }}">{{ h.getLangLabel(post.ename,post.cname) }}</a>
<br>
{% if post.publish_date %}
<small> {{ h.render_datetime(post.publish_date) }} </small>
{% endif %}
</h3>
{{ h.markdown_extract(h.getLangLabel(post.econtent, post.content))| truncate(50) }}
<br>
</div>
{% endfor %}