2022年5月5日 星期四

CKAN v2.9 templates 1: 空的example_theme

http://docs.ckan.org/en/2.9/theming/templates.html

CKAN 網頁由 Jinja2 template 產生。以下練習將修改 layout 及預設內容。

CKAN theme 就是 CKAN plugin,內含自訂的 templates、靜態檔案。

建立: ckanext-example_theme

  • 啟用 CKAN Virtual Environment
. /usr/lib/ckan/default/bin/activate
  • 切換到 /usr/lib/ckan/default/src 執行 ckan generate extension
Extension's name [must begin 'ckanext-']: ckanext-example_theme
 
ckanext-example_theme
├── ckanext
│   ├── example_theme
│   │   ├── assets
│   │   │   └── webassets.yml
│   │   ├── fanstatic
│   │   ├── i18n
│   │   ├── __init__.py
│   │   ├── plugin.py
│   │   ├── public
│   │   ├── templates
│   │   └── tests
│   │       ├── __init__.py
│   │       └── test_plugin.py
│   └── __init__.py
├── dev-requirements.txt
├── LICENSE
├── MANIFEST.in
├── README.md
├── requirements.txt
├── setup.cfg
├── setup.py
└── test.ini
 

修改 plugin.py 

所有 CKAN plugin 都需繼承自 plugins.SingletonPlugin。修改 ckanext-example_theme/ckanext/example_theme/plugin.py 如下:

import ckan.plugins as plugins

class ExampleThemePlugin(plugins.SingletonPlugin):
    '''An example theme plugin.

    '''
    pass


        修改並執行 setup.py 

        修改 ckanext-example_theme/setup.py 的 entry_points
        entry_points='''
            [ckan.plugins]
            example_theme=ckanext.example_theme.plugin:ExampleThemePlugin
        ''',

        切換到 ckanext-example_theme 目錄,執行:

        cd ckanext-example_theme
        python setup.py develop


        修改 /etc/ckan/default/ckan.ini 並重啟 CKAN

        extension plugins 必須加到 CKAN 設定檔的 ckan.plugins 中,CKAN 才會呼叫。

        ckan.plugins = stats text_view 略... example_theme

        重啟 CKAN

        1. 進入Python Virtual Environment: 
          . /usr/lib/ckan/default/bin/activate
        2. 重啟 CKAN 服務:
          (production版) sudo supervisorctl restart ckan-uwsgi:*
          (develop版) ckan -c /etc/ckan/default/ckan.ini run

        測試

        重新載入 http://[CKAN web site]/

        沒錯就是對了。

        沒有留言:

        張貼留言