Templateにタグを新たに追加する(再)
わざわざ内部定義を追加しなくても、ちゃんとプラグイン的な機構が既にありました。
<?php Rhaco::import("tag.HtmlParser"); Rhaco::import("tag.data.SimpleTag"); class MobileHtml { function filter($src, $parser) { $tag = new SimpleTag(); /* 一部省略 */ while($tag->set($src,$parser->_getTagName("url"))){ $href = $tag->getParameter("href", ""); $session_name = htmlspecialchars( session_name() ); $session_id = htmlspecialchars( session_id() ); if (preg_match("/\?/", $href)) { if (preg_match("/&$/", $href)) { $href = substr($href, 0, length($href) - 1); } $href .= "&".$session_name."=".$session_id; } else { $href .= "?".$session_name."=".$session_id; } $src = str_replace($tag->getPlain(),'<a href="'.$href.'">'.$tag->getValue().'</a>',$src); } return $src; } }
として、これをlibrary/tag/plugin/MobileHtml.phpで保存したら、HtmlParserに
$htmlParser->afterPlugins("tag.plugin.MobileHtml");
とすると上のfilterが組み込まれます。
http://highfreq.net/dev/itwitter.zipもこの構造に修正しました。