$prev_page = next($pages); prev($pages); $next_page = prev($pages); $this->run_hooks('get_pages', array(&$pages, &$current_page, &$prev_page, &$next_page)); // ここから $summary = ""; $tmp_front = mb_split("<h2>", $content); for ($i = 0; $i < count($tmp_front); $i += 1) { $tmp = mb_split("</h2>", $tmp_front[$i]); if (strcmp($tmp[0], "概要") == 0) { $summary = "<h2>" . $tmp[0] . "</h2>" . $tmp[1]; } } // ここまで // Load the theme $this->run_hooks('before_twig_register'); Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem(THEMES_DIR . $settings['theme']);
Picoの改造 その1 RSSフィードの改造
作成日 | : | 2015/07/03 |
---|---|---|
最終更新日 | : | 2020/07/05 |
Picoの改造 その1 RSSフィードの改造
作成日 | : | 2015/07/03 |
---|---|---|
最終更新日 | : | 2020/07/05 |
概要
しかし、Pico-RSS-Pluginを利用した場合、本文がすべて出力されます。
そこで、概要のみ出力するように修正しました。
修正内容
以下のファイルを修正します。
- lib/pico.php
- plugin/pico_rss/rss.html
lib/pico.php
PicoはテンプレートエンジンとしてTwigを採用しています。 各ページの本文は {{ content }} として呼び出されます。 この、contentは lib/pico.phpで生成されます。
{{ summary }}表記した場合に、{{ content }}の中の概要の節のみ出力されるよう修正します。 コンストラクタの中で生成されているので、適当な箇所に追記します。
ソース1. pico.phpの__construct()の修正
同様にページのリストからもsummaryを読み出せるようにget_pages()を修正します。
ソース2. pico.phpのget_pages()の修正
// Get title and format $page $page_content = file_get_contents($page); $page_meta = $this->read_file_meta($page_content); $page_content = $this->parse_content($page_content); // ここから $tmp_front = mb_split("<h2>", $page_content); $page_summary = ""; for ($i = 0; $i < count($tmp_front); $i += 1) { $tmp = mb_split("</h2>", $tmp_front[$i]); if (strcmp($tmp[0], "概要") == 0) { $page_summary = "<h2>" . $tmp[0] . "</h2>" . $tmp[1]; } } // ここまで $url = str_replace(CONTENT_DIR, $base_url .'/', $page); $url = str_replace('index'. CONTENT_EXT, '', $url); $url = str_replace(CONTENT_EXT, '', $url);
plugin/pico_rss/rss.html
page.content となっている箇所を page.summaryに書き換えます
ソース3. rss.htmlの修正
<description><![CDATA[{{ page.summary }}]]></description>
結果
Twigで呼び出せる変数の追加方法が判りました。 徐々に機能を足していきたいと考えています。