さらにダッシュボードウィジェットについて。
以前の記事。
codeあるいはhandlerには「($app, $tmpl, $widget_param)」が渡されるという話だった。
具体的にどんなのが返ってくるかしらべた。
$app
$appはよく出てくるし簡単なので略。
Movable Type オブジェクト・リファレンス MT::App
$widget_param
- 'widget_scope' => 'dashboard:blog:1',
- 'selector_hide_chooser' => 1,
- 'support_path' => '/Users/*/Sites/MT/mt-static/support/userpics'
- 'magic_token' => 'HYXnySWd8n9ijz7cjOfQeO4Oq2Pj5RsbrOZp1zHk',
- 'widget_block' => 'sidebar',
- 'no_breadcrumbs' => 1,
- 'top_blog_loop' => [],
- 'dynamic_all' => '',
- 'quick_search' => 0,
- 'redirect' => undef,
- 'screen_class' => 'dashboard',
- 'screen_id' => 'dashboard',
- 'aaw_current_month' => '100',
- 'has_uploads_path' => 1,
- 'widget_id' => 'AmazonAffiliateWidet-1',
- 'blog_id' => '1',
- 'html_head' => '',
- 'aaw_previous_month' => '100',
- 'saved' => undef,
- 'js_include' => '',
- 'system_overview_nav' => 0,
- 'permission' => undef,
- 'widget_singular' => 1,
- 'all_widget_loop' => [
- { 'widget_label' => '最近の投稿', 'widget_id' => 'recent_submissions' },
- { 'widget_label' => '最近評価されたブログ記事', 'widget_id' => 'recently_scored' },
- { 'widget_label' => '評価の高いブログ記事', 'widget_id' => 'most_popular_entries' }
- ],
- 'main' => '(長いので略。ダッシュボードメイン部のテンプレート)',
- 'sidebar' => '(長いので略。ダッシュボードサイドバー部のテンプレート)',
$tmpl
これは長すぎる。。。解読不能。
大枠はテンプレートクラス。
MT::Templateクラスがブレスされる。
最上位のパラメータは、
- 'column_values'
- 'include_path'
- 'changed_cols'
- '__file'
- 'needsdbsync'
- '__classes'
- '__meta'
- 'include_filter'
- '__tokens'
- 'context'
- '__ids'
となっている。
そのうち、「'column_values'」にはウィジェットをレジストするときに、 templateで記述したテンプレートの情報が入っている。
'column_values' => { 'build_dynamic' => 0, 'build_interval' => 0, 'text' => '<mtapp:widget class="widget hw-widget" label="Amazon Affiliate Widget" can_close="1"> (テンプレートの内容) </mtapp:widget>', 'rebuild_me' => 1, 'build_type' => 1 },
$tmpl->column_values->{text} = "hogehoge"
とやることで、テンプレートの内容をまるごと変えることができる。
あるいは、$tmpl->text( $str )とやっても書き換えができた。
それから、大事なのが「'context'」。
これにはMT::Template::Contextクラスがブレスされており、ものすごく膨大なパラメータがぶら下がっている。