機能の概要
MTみたいなかんじで、サムネイル画像を静的に生成する。
これまで、サムネイルの実現はnucleusのコアファイルをハックする必要があったり、
インストールの方法が面倒だったり、
ImageMagickが必要だったりして
初心者のユーザーが挑戦するは結構難しそうだったので、
もっと簡単にプラグイン一つでサムネイルが使えるようにしてみました。
使い方
インストールするだけでOKです。
<%popup()%>タグで、コメントがない、もしくはコメントが「null」のものについて、
自動的にサムネイル画像と、元のサイズの画像のポップアップイメージへのリンクが
表示されるようになります。
ちなみに<%popup()%>タグは、「ポップアップ」を選んでアイテムに画像を挿入すれば、nucleusが勝手に入力してくれるアレです。
カスタマイズ
管理画面のプラグインオプションから、生成するサムネイル画像の
最大サイズが設定できます。
オフライン
<%popup()%>タグで、コメントがない、もしくはコメントが「null」のものについて、自動的にサムネイル画像と、元のサイズの画像のポップアップイメージへのリンクが表示されるようになります。
↑これがいいですね。とっても。
ところで、このままだと2.5bata以降でインストールできないので、
function supportsFeature($what) {
switch($what){
case 'SqlTablePrefix':
return 1;
default:
return 0;
}
}
が必要だと思います。
あと、imgタグの最後は「">」で終わるのではなく、「" />」で終える方が良いと思います。
で、自分用に、alignとhspace/vspaceとclass名をタグ内に入れるように改造しました。
function install() {
$this->createOption("max_width", "maximum width of the thumbnail", "text", "200");
$this->createOption("max_height", "maximum height of the thumbnail", "text", "200");
$this->createOption("img_align", "align: left / right ?", "text", "left");
$this->createOption("img_vspace", "Vertical space around thumbnail:", "text", "8");
$this->createOption("img_hspace", "Horizonal space around thumbnail:", "text", "8");
}
としておいて、
if( trim($comment)=="" || trim($comment)=='null') return "<a href="index.php?imagepopup=$myblogid/$filename&width=$width&height=$height" onclick="window.open(this.href,'imagepopup','status=no,toolbar=no,scrollbars=no,resizable=yes,width=$width,height=$height');return false;" ><img src="".$CONF['IndexURL']."action.php?action=plugin&name=Thumbnail&p=$filename&id=$myblogid" width="".$tsize['w']."" height="".$tsize['h']."" class="thumbnail" align="".$this->getOption('img_align')."" hspace="".$this->getOption('img_hspace')."" vspace="".$this->getOption('img_vspace')."" /></a>";
に変更しました。
TODO楽しみです。
それと、似たようなものは確かにあるけど、このプラグインの存在意義は大きいと思います。徹夜の甲斐は十分にあると思いますよ
nakahara21
http://nakahara21.com/
(ただいま調整中です)
オフライン
オフライン
nakaharaさんありがとうございます。
imgタグのところと、
imgタグのクラスネームと、
gifの処理と、
ver2.5用の処理について書き加えました。
imgのalignとかはいれませんでした。
クラスネームつけたので、cssから設定すればいいかなと思って。
あとはTO DOが。。
オフライン
http://japan.nucleuscms.org/wakka/CategorizedPlugin
プラグインリストの方に加えておきました 8)
自由に書き換えられますので、プラグインを新しく作られた方は遠慮無く加えてください。
うちはNP_PopupImageGD2を適当に書き換えて使っておりましたが、
こっちの方が使い勝手いいですね。すばらしい。
オフライン
どうもありがとうございます。がんばります。
ところで、TO DOにしておいたサムネイル画像の静的生成ですが、
やっとできあがりました。
静的に生成されたサムネイル画像はデータベースの中に入るように
なります。
そのため、ver2.0を入れようと思っている方のうち、すでに以前のバージョンをインストールされている方は、
いったん古いバージョン(ver 1.1以前)を管理画面からアンインストールした後に新しいバージョン(ver 2.0)をインストールし直すことが必要となります。
お手数かけますがよろしくお願いします。
・・・けっこうbuggyかもしれないので覚悟してお使いください。 8)
オフライン
1箇所、修正すべき箇所を見つけましたので、報告します。
一番最後の所、
$myblogid = getBlogIDFromItemID($this->curItem->itemid);
ではなくて、
$myblogid = $this->curItem->authorid;
ですね。
変数名が不適当だけど別状はないので。
nakahara21
http://nakahara21.com/
(ただいま調整中です)
オフライン
ありがとうございます。
修正しておきます
オフライン
Nucleus3.0にNP_Thumbnail.zipをインストールしたのですが、どうもうまく
動作しません。次のようなエラーになります。
Warning: getimagesize(/home/****/public_html/blog/media/2/0522b.jpg): failed to open stream: No such file or directory in /home/****/public_html/blog/nucleus/plugins/NP_Thumbnail.php on line 261
アップしたファイルは実際にはmedia/1/0522b.jpgに入っているのでエラーが
出るのは当然なのですが、どうしてフォルダを正しく認識できないのでしょうか?
つい最近Nucleusを始めたので、とんでもない勘違いをしていそうですが :oops:
よろしくお願いします。
Nucleus3.0にNP_Thumbnail.zipをインストールしたのですが、どうもうまく
動作しません。次のようなエラーになります。Warning: getimagesize(/home/****/public_html/blog/media/2/0522b.jpg): failed to open stream: No such file or directory in /home/****/public_html/blog/nucleus/plugins/NP_Thumbnail.php on line 261
アップしたファイルは実際にはmedia/1/0522b.jpgに入っているのでエラーが
出るのは当然なのですが、どうしてフォルダを正しく認識できないのでしょうか?つい最近Nucleusを始めたので、とんでもない勘違いをしていそうですが :oops:
よろしくお願いします。
nakaharaさんに指摘されたところでのbugのような気もする。
とりあえず、そこのbugをなおしたバージョンをアップします。
これを入れてみて、まだだめなら教えてください。
あとは、画像が入っているフォルダのディレクトリのパーミッションも一応
確認してみてください。
お手数かけてすみません。 :cry:
オフライン
すばらしいPluginの作成お疲れ様です。
サムネイル作成条件に関して要望があります。
現在のサムネイル作成条件は
<%popup()%>タグで、コメントがない、もしくはコメントが「null」のものについて
ですが、これを
<%popup()%>タグで、画像であればもれなくサムネイルを作成する。
とすることは出来ませんでしょうか。
コメントをなくすという事によっておきる、Alt属性がなく、またポップアップした画像にもタイトルがないという状態があまり好ましくないのでは…と思うのです。
私が<%popup()%>をまったく使わないというのもあるのですが…。他の方の意見も聞いてみたいです。
藤咲
備忘録とかもろもろ
http://fjsk.tk/
オフライン
コメントをなくすという事によっておきる、Alt属性がなく、
またポップアップした画像にもタイトルがないという状態があまり好ましくないのでは…
と思うのです。
そうですね。
もしくは、ソースまだ見てないので可能かわかりませんが、
固定のAlt、タイトルをプラグインで付加するようにするとか。
画像のある程度の中身は本文で説明が必要ならするようにして、
「で、これがその画像」というのがわかるAlt、例えば「alt="画像"」・・・意味無いですね、すんません :?
ついでにこれじゃプラグインアンインストールしたらダメだもんなぁ。
やっぱ、
<%popup()%>タグで、画像であればもれなくサムネイルを作成する
で問題ないんじゃないでしょうか。
テキストリンクにしたい場合は、プラグインインストールしなければいいだけだし。
で、両方どうしても使いたい場合のために、プラグインオプションで、
コメントに特定の文字が入力されていた場合のみ、ポップアップを作成する
オプションを付けといて(デフォルトはno)、これがnoなら、もれなく作成、
yesなら、コメント内に何か特定の文字が入力されていれば作成するようにしたらいかがでしょう。
オフライン
オプションが良さそうですね。
取り込みたいと思います。
ありがとうございます。
オフライン
nakaharaさんに指摘されたところでのbugのような気もする。
とりあえず、そこのbugをなおしたバージョンをアップします。
これを入れてみて、まだだめなら教えてください。
早速対応ありがとうございました。正しく動作するようになりました
上のバグ? から・・・・新しいのを入れて試してみました・・・・
結果
Warning: getimagesize(/home/usr/****/public_html/blog/media/1/common/20040531-qe07.jpg): failed to open stream: No such file or directory in /home/usr/****/public_html/blog/nucleus/plugins/NP_Thumbnail.php on line 262
あう・・・・
上のレスと同じく3.0です。
オフライン
上のバグ? から・・・・新しいのを入れて試してみました・・・・
結果
Warning: getimagesize(/home/usr/****/public_html/blog/media/1/common/20040531-qe07.jpg): failed to open stream: No such file or directory in /home/usr/****/public_html/blog/nucleus/plugins/NP_Thumbnail.php on line 262あう・・・・
上のレスと同じく3.0です。
commonってなんでしょうか。
もしかして、アップロードファイルのカテゴリ分けなんていうことが
Nucleus 3.0からできるようになっているのでしょうか?
Nucleus 2.0しか使ったことがないので、よくわからないのです。 :oops:
オフライン
えと、privateフォルダとcommonフォルダに分けることができます。
private指定するとエラーは出ませんが、サムネイルが作成されません。
いろいろ調べてみたら、どうやらサーバー機のGDをVer.UPする必要が
あるみたいです。Vine付属の1.8じゃ動かないらしい。
commonだと上記エラーが吐き出されます。
こっちは私には手におえないものです。
ってあ・・・・2.0だとcommonファイルが無いからUPフォルダが一つでこういうことがおこらないのかな?
ということは
(/home/usr/****/public_html/blog/media/1/common/20040531-qe07.jpg):を
(/home/usr/****/public_html/blog/media/common/20040531-qe07.jpg):
になるようにすればエラーでないのか。
ちなみにprivate指定で画像UPすると1,2,3.....ってフォルダ作られていくんですが
commonの場合、ユーザー同士でその画像を共有できる状態になり、フォルダは下位にも作られません。
commonにどんどんつめこまれていく感じです。
オフライン
えと、privateフォルダとcommonフォルダに分けることができます。
ポップアップヘルプに
メンバーはそれぞれ、自身のメディアファイルのプライベートなコレクションを持ちます。あとは、メディア・ディレクトリ下のサブディレクトリがグローバルなコレクション(メンバー間で共有)とみなされます。
という記述がありますね。これってどのバージョンからなんでしょう。
3.0CMSですが、アップロードのどこでこれを指定するのかわからないので…。
p.s.
3.0正式版にUPするのは、NP_ThumbnailのALT属性付与ができてからにしようかなぁと思っています。
サムネイル表示のためにコアをいじるのが面倒なので、この際現状のサムネイルの記述を全部に変更して…と思いまして
藤咲
備忘録とかもろもろ
http://fjsk.tk/
オフライン
えと、privateフォルダとcommonフォルダに分けることができます。
private指定するとエラーは出ませんが、サムネイルが作成されません。いろいろ調べてみたら、どうやらサーバー機のGDをVer.UPする必要が
あるみたいです。Vine付属の1.8じゃ動かないらしい。commonだと上記エラーが吐き出されます。
こっちは私には手におえないものです。ってあ・・・・2.0だとcommonファイルが無いからUPフォルダが一つでこういうことがおこらないのかな?
ということは
(/home/usr/****/public_html/blog/media/1/common/20040531-qe07.jpg):を
(/home/usr/****/public_html/blog/media/common/20040531-qe07.jpg):
になるようにすればエラーでないのか。ちなみにprivate指定で画像UPすると1,2,3.....ってフォルダ作られていくんですが
commonの場合、ユーザー同士でその画像を共有できる状態になり、フォルダは下位にも作られません。
commonにどんどんつめこまれていく感じです。
>>藤咲さん、にゃんこさん
なるほど、ということは
3.0に対応するには結構コードを書き換えなきゃ
いけなそうですね。
とうことで、
もう少し待ってください。
いま実験しに出張中なんです。
オフライン
もしかして、アップロードファイルのカテゴリ分けなんていうことが
Nucleus 3.0からできるようになっているのでしょうか?
Nucleus 2.0しか使ったことがないので、よくわからないのです。 :oops:
参考までに。
mediaディレクトリ内に1,2,3...以外の任意のディレクトリを作成していれば、そのディレクトリも1,2,3...と同じように格納ディレクトリとして使えるみたいです。
で、例えばcacheというディレクトリを作成していてそこに画像を入れていたとすると、
このディレクトリ内の画像を選択した時の埋込みコードは
<%image(cache/20040601-bbb.jpg|400|300|)%>
となっています。
さらに、BLOG.phpでは、
if (!strstr($filename,'/')) {
$filename = $this->currentItem->authorid . '/' . $filename;
}
と、埋込みコード内にスラッシュがない時は1,2,3...ディレクトリ名を補完するという仕組みになっていました。
同じ判定方法でいい気がします。
nakahara21
http://nakahara21.com/
(ただいま調整中です)
オフライン
具体的には、一番最後の所、
$filename = $matches[1];
if (!strstr($filename,'/')) $filename = $myblogid . '/' . $filename;
$width = $matches[2];
として、returnする内容の「$myblogid/」と「&id=$myblogid」は削除してしまえばいいのではないでしょうか?
ついでに、doActionでは
$p = $DIR_MEDIA.$p; //元画像へのパス
とすればいいのでは?
nakahara21
http://nakahara21.com/
(ただいま調整中です)
オフライン
>藤咲さん
にゃんこ さんの発言:えと、privateフォルダとcommonフォルダに分けることができます。
ポップアップヘルプに
メンバーはそれぞれ、自身のメディアファイルのプライベートなコレクションを持ちます。あとは、メディア・ディレクトリ下のサブディレクトリがグローバルなコレクション(メンバー間で共有)とみなされます。
という記述がありますね。これってどのバージョンからなんでしょう。
3.0CMSですが、アップロードのどこでこれを指定するのかわからないので…。
えと、今使ってるのが3.0RCです。これにはすでに搭載されてました。
アップロードする際にセレクトメニューでUPするフォルダを変更できたと思います。
初期状態であれば、画像のようにPrivate CollectionというのとCommonの2つが
選択できるようになっています。画像の貼り付け方よくわかんなくてごめんなさい。
修正箇所がたりなかったみたいでした。直してみました。
直した箇所:一番後ろのほう
[修正前]
$p = $DIR_MEDIA.$myblogid.'/'.$filename; //ファイルタイプの判定用に、ファイルのパスを入れる[修正後]
$p = $DIR_MEDIA.$p.'/'.$filename; //ファイルタイプの判定用に、ファイルのパスを入れる
そして、直したと思ったら今度はprivateの方がエラーでるように。
とんでもない欠陥修正してしまったのでファイルは消しておきます。
すいませんでした。
オフライン
お世話になります。
にゃんこ様と同様のエラーが発生したため、アンインストールを行ったのですがアンインストール以前のままデフォルトの状態に戻りません。
Nucleusそのものの再インストールでしか修正できないのでしょうか。
他のプラグインについてはアンインストールを行えたのですが…
よろしくお願いします。
ブログに表示される部分が消えないのでしょうか?
それでしたら、そのアイテムを削除すれば消えると思います。
また、プラグインでのエラーでアンインストールが効かない状態であれば
このスレッドの一番最初の方にあるプラグインをUPしてもらえれば
アンインストールできるようになると思います。
オフライン
いろいろ調べてみたら、どうやらサーバー機のGDをVer.UPする必要が
あるみたいです。Vine付属の1.8じゃ動かないらしい。
Nucleus 3.0を使用していますが、サムネイルが作成されません。
にゃんこ様同様 GDのバージョンが1.8なんですが、GDのバージョンはどれ以上だと正常に動作するか教えていただけないでしょうか。
オフライン