Hideki Abe

search_post_render コールバックで編集した HTML が画面に反映されない

0

お世話になります。
Perl と MT のプラグインを学習しているのですが、解決できない点があるのでお伺いします。

search_post_render コールバックで、検索結果画面の HTML を編集したいと考えています。
試したところ、 HTML の書き換えまではできているのですが、画面出力に反映されない状況です。
$out_html を return してみたりしたのですが...。

お分かりになる方がいらっしゃいましたら、教えて頂ければ幸いです。
よろしくお願いいたします。

sub hdlr_sub_search {
    my ($cb, $app, $count, $out_html) = @_;
    my $blog = $app->blog;
    my $setting_blog_id = $blog->parent_id || $blog->id;

my $items = &load_json($setting_blog_id);

while((my $key, my $value) = each($items)) {
if ($key =~ /\.css$/) {
$out_html =~ s/<link(.*)href="(.*)$key/<link$1href="$2$value/;
}

if ($key =~ /\.js$/) {
}
}
}

※Gistにもアップしています。
https://gist.github.com/hideki-a/798a545892593ea5700f

返信(2)

| 返信する
  • 取り急ぎ画面出力に反映されない原因としては、コールバック search_post_render で渡されている引数 $result が参照渡しではないことによります。

    (現状こうなので不可)

    $app->run_callbacks( 'search_post_render', $app, $count, $result );

    (こうだったら可)

    $app->run_callbacks( 'search_post_render', $app, $count, \$result );

    正直 MT::App::Search にはあまり知見がないのですが、このコールバックで検索結果 HTML を書き換えるのは難しいと思うので、あまりこだわらずアプローチを変えた方がいいかなあと思います。

    • ご回答ありがとうございます。
      参照渡しのことは気になっていたのですが、渡す側には思いが至りませんでした。
      参考になりました。

返信する


カテゴリグループ

フォーラムカテゴリー

21 76

最新のトピック: 公開終了日の取り消し (2013年10月18日 gsk)

796 2705

最新のトピック: rss・atom配信について (2015年9月18日 IC)

154 454

最新のトピック: MT6.1 のフォルダ管理について (2015年4月 7日 yokota)

346 1001

最新のトピック: ユーザー登録時のブログ自動作成のURL (2015年8月28日 しょうちゃん)

OpenID対応しています OpenIDについて