每個商品的採購頁籤中可設定多個供應商,每個供應商的供貨價格及交貨時間,如下:
也可設定對客戶訂單的前置時間:
賣家不囤貨、不經手商品物流,只當中間人賺取差價。
每當客人下單,賣家就把訂單和發貨細節轉交批發商,直接發送給客戶。
https://github.com/ckan/ckan/blob/2.9/ckanext/example_iconfigurer/plugin.py
參考 CKAN Extensions Tutorial(v2.9):一個空的 CKAN extension,建立 ckanext-example_iconfigurer 擴充套件。
修改 ckanext-example_iconfigurer/ckanext/example_iconfigurer/plugin.py。參考完整程式,主要內容如下:
略...
import ckanext.example_iconfigurer.blueprint as blueprint
參考完整程式,主要內容如下:
修改 ckanext-example_iconfigurer/setup.py 的 entry_points:
ckan.plugins = stats text_view 略... example_iconfigurer
瀏覽 http://CKAN web site]/ckan-admin/ 可看到兩個新增的管理頁籤。
參考 CKAN Extensions Tutorial(v2.9):一個空的 CKAN extension,建立 ckanext-example_flask_iblueprint 擴充套件。
修改 ckanext-example_flask_iblueprint/ckanext/example_flask_iblueprint/plugin.py。參考完整程式,主要內容如下:
修改 ckanext-example_flask_iblueprint/setup.py 的 entry_points:
ckan.plugins = stats text_view 略... example_flask_iblueprint
瀏覽 http://[CKAN web site] 下的 /, /hello_plugin, /helper, /helper_not_here, /flask_request 可看到對應的程式內容。
http://docs.ckan.org/en/2.9/theming/webassets.html
CSS 檔等靜態檔案有兩種方式加入:簡單的 extra_public_paths 作法或是 Webassets。但 JavaScript module 就只能透過 Webassets。
Webasset 的好處是在 production 版中會自動最小化檔案、快取並打包/bundling,以減少下載時間,載入指定相依檔⋯⋯。
CKAN 只有 *.js、*.css 會以 Webasset 資源處理,其它的靜態檔(圖檔、PDF)要透過 extra_public_paths 方式處理。
延續 CKAN Theming Tutorial 1(v2.9): 靜態檔案(圖片與CSS) 往下做。
把 example_theme.css 改放到 assets 目錄下:
另外再加一個 webassets.yml ,內容如下:
example_theme:output: example_theme/example_theme.csscontents:- example_theme.css
編輯 ckanext-example_theme/ckanext/example_theme/plugin.py ,在 update_config() 中呼叫 add_resource() 向 CKAN 註冊 assets 目錄,如下:
編輯 ckanext-example_theme/ckanext/example_theme/templates/base.html,在其中以 Jinja2 的{% asset %} 取代<link> 匯入檔案,如下:
所有 template 都可用 {% asset %},Webassets 會加入需要的 <style> 、 <script> 來 include CSS 及JavaScript檔案,但最好把他們集中在 Jinja2 的 styles、scripts block.
Assets 不會在 {% asset %} 出現那行被 include。
用一個設定檔設定 Webassets 如何處理每個 asset 檔(是否打包/bundle,include的順序,include 檔要放在網頁的最前面還是最後面,檔案間的相依性...),參考:Assets。
檢視 http://[CKAN Website IP] 的網頁原始碼,在HTML的 <head>...</head> 可發現:
<link href="/webassets/webassets-external/2dce0ddda2882168f0c12c639a912e24_example_theme.css" rel="stylesheet"/>
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。
如下 show_most_popular_groups 設定,決定首頁是否顯示最受歡迎群組。
修改 extension 根目錄下的 plugin.py,新增 helper function 存取自訂的 show_most_popular_groups 設定:
extension 加入的 config 設定名稱要以 extension 名稱開頭,以避免與其他 extension 或 CKAN 內建設定衝突(參考 Avoid name clashes)。
修改 templates/home/layout1.html 如下:
/etc/ckan/default/ckan.ini