wordpress テクニカルメモ③

WordPress3.0に対応した最新版ができました。
こちらを参照してください。
今回はエントリー中にあるイメージを収集するプラグインの紹介です。
ちょっと改造してます。




▼概要
私はギャラリーを出力するのにSOMY IMG Collectを使用しています。
(正確にはSOMY様が制作され、2.2.0用にkvex様が修正されたものです。)
このプラグインは記事からIMGタグを抽出して任意の形に出力するものです。
特定のカテゴリーの記事から画像を抽出することもできます。

つまり、絵のカテゴリーなり写真のカテゴリーなりを作り、記事を書いていくだけで自動的にギャラリーが生成されていきます。前回のXML版ギャラリーは物凄く手間でしたが、この自動生成はとても楽です。
私はこのプラグインを2.2.3用に修正し、独自に機能を追加したものを使っています。

▼使用方法
まずrunphpなどでページでphpコードが使えるように設定してください。
専用のタグを使ってページを記述していってください。
(以下:〖IMG Collect専用タグの説明〗や〖使用例〗を参考にしてください)

▼追加機能
name値によるパージ(以下:〖使用例〗参照)
型設定によるサムネイルの自動検出(以下:〖独自機能〗参照)

▼ダウンロード
PHPのバージョン?によって若干挙動が違うようなのでサーバーにあったものを使ってください。

IMG Collect( ver 1.24 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗

IMG Collect( ver 1.24 | L.Project custom ) 【XREA用】〖WP2.5用〗

※[2009/02/11]追記  コードのミスを修正しました。
※[2009/02/09]追記 「WordPress ThickBox plugin」との連携機能をつけ、画像タグのclassを出力する機能を廃止しました。








▼使用例
当のサイトのギャラリーでは以下のようなコードで出力を行なっています。

'[POST_LOOP category="任意のカテゴリー"]
.'[a href="POST_URL"]'.'POST_TITLE'.'[/a]'
.'POST_DATE'

.'[IMG_LOOP lastn="1つの記事から抽出する画像の上限" pname="パージする画像のname値"][POST_IMG][/IMG_LOOP]'
.'[/POST_LOOP]';
image_collect($output);?>

基本的な動作仕様は元の作者様SOMY様の解説と修正なされたkvex様の解説に準拠します。

独自に追加した機能の一つに特定の画像のパージがあります。
『IMG_LOOP』の「pname」がそれです。これに指定されたname値を持つ画像は対象カテゴリーであろうとコレクトされません。
シンボルマークやイメージ画像を使う場合、name値で指定しておけばギャラリーに追加されることはありません。

また逆の場合(コレクトしたい数<コレクトしたくない数)に備えて特定のname値を持つ画像のみを集める機能もつけています。
『IMG_LOOP』で「name」を指定すればそのname値を持つもののみがコレクトされます。
お気に入りの画像コレクションなどを後から作る場合に便利だと思います。

※『IMG_LOOP』では「name」と「pname」両方を指定することができますが「name」が優先されます。






▼独自機能
このプラグインでは以下3パターンのサムネイル名に対応してます。
「アップロードフォルダ/ファイル名.サムネイル.拡張子」
「アップロードフォルダ/サムネイル/ファイル名.拡張子」
「アップロードフォルダ/サムネイル.ファイル名.拡張子」

いずれも記事の画像イメージからの相対で指定しているので、パターンが合ってさえいれば、どのようなフォルダ構築でもサムネイルを表示できます。また記事の画像URLがサムネイルのパターンと合致した場合、それをサムネイルとしてメインイメージを逆算するので、記事に貼る画像はサムネイルでもメインイメージでもどちらでも構いません。さらにメインイメージにリンクが貼られている必要もありません。
この機能を有効化するには『img_collect.php』の26行目~37行目で設定します。
具体的にはこうなっています。

///サムネイルを表示(0=無効 1=有効 以下の設定無効)[既定値]無効
$thum_mode = 0;
///サムネイルリンクの有無(0=無効 1=有効 以下の設定無効)[既定値]有効
$thum_link = 1;

///サムネイルとしてマークする名前
$thum = "thumbnail";

///マークの直後に付加される文字
$thum_ins = ".";

///最後のスラッシュの直後にマークを挿入する(0=無効 1=有効)[既定値]無効
$thum_mode_cn = 0;

順番に解説します。

$thum_mode = 0;

ここで機能の有無を選択します。1で有効、0で無効です。

$thum_mode = 0;

ここでサムネイルから画像本体へのリンクの有無を選択します。サムネイルへのリンクにページへのリンクを張りたい場合は無効にします。1で有効、0で無効です。


$thum = "thumbnail";

これはサムネイルとして付加されている名前を入れます。
私のサイトだと「thumbnail」となってます。
各自の環境に合わせて設定してください。

$thum_ins = ".";

これは付加されている名前の直後に付く文字を指定します。
「アップロードフォルダ/ファイル名.サムネイル.拡張子」であれば「.」を
「アップロードフォルダ/サムネイル/ファイル名.拡張子」であれば「/」を入れてください。

$thum_mode_cn = 0;

「アップロードフォルダ/サムネイル.ファイル名.拡張子」の場合この値を1にしてください。
また有効にする場合、前述の[$thum_ins]は「.」としてください。


4つの設定をちっちり設定すればサムネイルの自動検出は機能します。
「.」や「/」以外にも区分け文字として使え[$thum_ins]に設定可能ですが、全ての可能性を検証してないので動作は保障できません。





▼独自機能②
一度に全画像を表示するのではなく、
いったんjavascriptで出力するタグを受け取って出力を分割する機能です。
設定するにはまずプラグインの52行目付近の以下の項目を調節してください。

//分割出力の有効化(0=無効 1=有効 以下の設定無効)[既定値]無効
$spl_mode = 0;
//1ページに出力する画像の数
$spl_num = 3;
//最初に出力するページ[既定値]0
$spl_start_num = 0;
//デリミタとして使用する文字列
$spl_deli = 'いめーじでりみた';
//入力エリアとなるDIV要素のID
$spl_in = "img_collect_input_area";
//出力エリアとなるDIV要素のID
$spl_out = "img_collect_output_area";
//thickbox連携オプションの有効化(0=無効 1=有効 以下の設定無効)[既定値]無効
$spl_thickbox_mode = 0;

基本的にコメントの記述どおりですが、実際に設定すべき箇所は
$spl_mode 」で機能を有効「1」
$spl_num」で分割数を指定すればOKです。

また、この設定で出力の分割はできますが分割したページの切り替えができないので
各自でページ切り替え用のリンクを用意していただく必要があります。
次のページに切り替えるリンクはjavascriptの関数『imgc_add(); 』、
前のページに切り替えるリンクはjavascriptの関数『imgc_sub(); 』を呼び出してください。

サンプルとして以下のコードを参考にしてください。

<a href="#" onclick="imgc_sub(); return false;">前へ</a>
<a href="#" onclick="imgc_add(); return false;">次へ</a>


※補足説明
この機能が動作する前提条件としてjavascrptが有効である必要があります。
設定値『$spl_deli』は非表示タグ内で使われる個々のイメージタグの境界に挿入される文字です。
表示ダグには出ない文字ですが、各自で好きな言葉を設定していただいて構いません。
ただし画像URLやタイトルと被らない名前にしてください。
設定値『$spl_in』と『$spl_out』は非表示用DIVタグと表示用DIVタグのID属性となります。
javascrpt内部で使うものなので別段意識する必要はありませんが、
自分で設定する場合、既存のID属性と被らない名前にしてください。
設定値『$spl_thickbox_mode』はサムネイル機能有効かつ、「WordPress ThickBox plugin」を有効にしている環境への固有機能となります。
jQueryが組み込まれいてる前提のコードとなっていますので対象環境以外では有効にしないでください。






▼IMG Collect専用タグの説明(kvex様の解説より転載)
[post_loop] ~ [/post_loop]
タグで囲まれた部分をimgタグを含むエントリーの内容が入ります。
■設定項目:
category=”CategoryID”
 表示するカテゴリの指定。複数指定する場合は”,”(カンマ)区切りで指定できます。
 指定しない場合は全てのカテゴリ
□独自拡張
pcategory=”CategoryID”
 対象外にするカテゴリの指定。指定したもの以外の全てを表示します。
 categoryとは排他的でどちらか一方を使用できます。
■設定項目:
lastn=”Number”
 表示するエントリーの数の指定。(ループの回数)
 指定しない場合はimgタグを含むエントリーの数だけループします。
offset=”Number”
 指定された数だけ、imgタグを含むエントリーを飛ばして表示します。
 指定しない場合は”0″

[POST_TITLE]
エントリーのタイトルが入ります。

[POST_URL]
エントリーのURLが入ります。

[POST_BODY]
タグ部分にエントリーの本文が入ります。
■設定項目:
length=”Number”
 エントリーの本文の表示文字数指定。
 指定しない場合は、までの内容を表示します。

[img_loop] ~ [/img_loop]
エントリー内に複数イメージがある場合、タグで囲まれた部分をループします。
■設定項目:
lastn=”Number”
 表示するイメージ数の指定。(ループの回数)
 指定しない場合はイメージがある数だけループします。

[POST_IMG]
イメージタグが入ります。
必ずタグ内に記述して下さい。









▼最後に
私の加えたコードはほんの少しに過ぎません。
もとのコードが凄すぎます。。。。
元となった素敵なプラグインの製作者SOMY様にこの場を借りて感謝申し上げます。

このエントリをつぶやく このエントリーを含むはてなブックマーク この記事をクリップ! Yahoo!ブックマークに登録 Bookmark this on Delicious Buzzurlにブックマーク FriendFeedで共有 Googleブックマークに追加 FC2ブックマークへ追加

「wordpress テクニカルメモ③」 に対して55つコメントがあるよ

  • violet

    はじめまして。素晴らしいプラグインをありがとうございます。(^^ゞ

    私はまだwordpress初心者なのですが、SOMYさんのプラグインを知りまして、早速導入してみた所、wordpressのバージョンの違いで上手く行きませんでした。

    そして、こちらのL.Project様のサイトにたどり着きました。

    しかし、運悪くwordpress2.3を使っていたので、やっぱり上手くいかなったのですが、ありがたいことに、要望があれば2.3用も作っていただけるとのこと!!

    初めて来てあつかましいお願いですが、どうか、2.3用も作っていただけませんでょうか?
    どうぞよろしくお願いいたします。 m(_ _)m

  • らもゆん

    こんにちわ、はじめまして o(^-^)o

    早速ですが、ご要望にお答えして2.3対応版作りました。
    IMG Collect( ver 1.3 | L.Project custom )

    大まかな動作チェックはローカルサーバーでテストしてますが、もし動かないようだったらご連絡ください。
    それではよいwordpressライフを (^_^)

    P.S
    wordpress2.3のDBをざっと見てみたのですが、画像ファイルなどを記事に関連付けられたテーブルがあるようです。現存のIMG Collectでは全記事の本文から画像を探しているので動作が遅いのですが、この新しいテーブルから直接データを取り出すように変えれば動作が格段に速くなりそうです。

  • violet

    らもゆん様。こんにちは。violetです (^o^)

    早速のご対応ありがとうございます! m(_ _)m
    \(^o^)/ お陰様で、できました!!

    本当に助かりました。ありがとうございました!
    これからもらもゆんさんのご活躍、陰ながら応援しております (^_^)/

  • らもゆん

    報告ありがとうございます o(^-^)o
    ちゃんと動いてよかった・・・(汗)

    お役に立てて何よりです (^_^)V

  • pacpac

    らもゆん様。はじめまして、pacpacです 。
    希望通りのプラグインを見つけて、早速使ってみようと思ったのですが・・・
    記事のタイトルと日付は表示されるのですが、画像の表示が出来ません。
    試しにSOMY様のプラグインを使ってみると、画像の表示が出来ました。
    しかし、サムネイル表示をしたく、どうしてもこちらのプラグインを使わせていただきたいと思っております。
    現在wordpress ME2.2.3を使用しています。

    何か解決策があれば、教えていただけ無いでしょうか。
    よろしくお願いします。

  • らもゆん(携帯電話)

    はじめまして。携帯からコメントします。管理人のらもゆんです。

    画像のサムネイルに関してですが、通常の画像収集機能は働いてますか?サムネイルだけが問題を起すなら他の画像投稿系プラグインとの問題だと思います。

    その場合、サムネイルを表示させるページでの表示が失敗した画像のURLを確かめてください。実際に画像が存在していないURLを指している可能性があります。変則的なフォルダでなければ本プラグインのサムネイルに関する設定をいじれば解消できます。もしも設定できる範囲外ならフォルダ環境を言っていただければある程度こちらで改良します。

    また収集機能自体働かない場合はまた別の原因が考えられますが、おそらく原因は前者のほうだと思います。

  • pacpac

    pacpacです。

    説明不足ですみません。
    画像は元画像もサムネイルも全く表示されない状態です。
    画像の表示自体が無くURLの確認が出来ません。

    また、プラグインも画像投稿系の物は入れていません。

    画像の保存先は「uploadsフォルダ」に月別で保管しております。

    お手数をお掛けして申し訳ありません。

  • らもゆん

    そうですか。。。
    SONYさまのプラグインが動くというのはkvexさまが修正したものですよね?

    でしたら心当たりがあります。家に戻って修正したものをアップロードしますのでちょっと待っててください。明日にはできると思います。

  • らもゆん

    お待たせしました。
    IMG Collect ( ver 1.3 | L.Project custom )〖WP2.2用〗

    kvexさまのが動くなら、これで動くと思います。
    試してみてください。

  • pacpac

    らもゆん様

    出来ました。
    なんとお礼を言っていいやら。。。
    すばやい対応に感謝致します。
    本当にありがとうございました。

    有効に使わせていただきます。

  • pacpac

    らもゆん様

    何度も質問すみません。

    表示された画像のリンク先を投稿記事に飛ぶようにしたいのですが、拡大表示しかされません。
    タグ内に以下の様に書いたのですが、間違いでしょうか?

    '[img_loop][a href="POST_URL"][POST_IMG][/a][/img_loop]'

    よろしくお願いいたします。

  • らもゆん(携帯電話)

    ダグの打ち方に関してはkvexさまのものと同様の仕様になっていますが、サムネイル表示機能と記事へのリンクを同時使用した場合、本体画像の表示が優先されてしまいます。

    リンクなしのサムネイルを表示する機能を盛り込んだものをつくりますので少々お待ちください。

  • pacpac

    何度もすみません。
    ありがとうございます。

  • らもゆん

    とりあえずそれっぽい機能をつけてみました。IMG Collect ( ver 1.4 | L.Project custom )?WP2.2用?

    動作チェックしていないので何かあったら言ってください (@_@)

  • pacpac

    問題なく動作いたしました。
    ありがとうございます。

  • pacpac

    らもゆん様

    プラグイン大切に使わせていただいております。
    ありがとうございます。

    またまた、質問なんですが2つ目のブログをwordpress2.5で作成し同じようにコチラのプラグインを入れようと思ったのですが・・・
    サムネイルの作成が以前のバージョンと違い、ファイル名.thumbnail.jpgでは無く、ファイル名-150x150.jpgになっています。
    プラグインはちゃんと動作しているのですが、.が付かない為ファイルの読み込みが出来ません。
    これは、wordpressの方を変更しないといけないのでしょうか?

  • らもゆん(携帯電話)

    $thum_insに「.」や「/」以外にも「-」を指定することは可能です。またその上で$thumを「150x150」にすればサムネイルが表示できると思います。

    ただ恐らく「150x150」はサムネイルの寸法をさしており画像ごとに変わると思われます。

    この仕様では本ファイルからサムネイル名を推定する現在の方法では完全に一致させることはできません。

    考えうる対処として
    1.WP本体のサムネイル作成設定を変えるか別途画像管理プラグインを入れる

    2.WP本体のDBから情報を引き出すように本プラグインを改良する

    3.サムネイルのサイズを一定にする

    があります。ちょっと今は大規模の改良をする時間かないので、1や3の対処でお願いできますか?

  • pacpac

    らもゆん様

    ありがとうございます。
    WP本体を改良してみます。

  • ジル

     らもゆん様、はじめまして。
     WPでフォトギャラリー作りたい、とプラグインを探しておりましたところ、こちらに辿りつきました。
     さっそくver 1.3を使ってみようと思ったのですが、以下のようなエラーが出てしまいました:

    Warning: Invalid argument supplied for foreach() in /(省略)/plugins/img_collect.php on line 180

     このエラーの下に、指定したカテゴリに投稿した記事のタイトル(リンク付き)と投稿日時が表示されています。
     バージョンはWordPress 2.3.3です。
     お手数をおかけしますが、もし解決策があれば、教えて頂けないでしょうか。どうぞよろしくお願いします。

  • らもゆん(携帯電話)

    こんにちは。

    WP2.3.3をまだ使ったことがないので、環境を再現するまで少々お待ちください。月曜日までにはなんとかします。たぶん記事を読み込みにいくときのエラーだと思いますが。。。

  • らもゆん

    「WP2.3.3」+「runphp2.3.1」+ 「IMG Collect( ver 1.3 )〖WP2.3用〗」の環境で動作試験してみたところ、エラーが再現されませんでした。
    以下のコードでもエラーは出ますでしょうか?

    < ?php $output =
    '[POST_LOOP]'
    .'[IMG_LOOP][POST_IMG][/IMG_LOOP]'
    .'[/POST_LOOP]';
    image_collect($output);?>

    またエラーと該当コードから推測するに、何らかの問題があって画像のURLが配列に格納できていない可能性があります。実際の記事の画像<IMG>要素は特殊な記述をしてませんか?またSQLやPHPのバージョンにより微妙にデータ格納のされ方が違う場合があります。こちらのバージョンも試してみてください。

    もしよろしければページに記録したコード等を教えてください。
    ちなみにコメントにコードを記述する場合<CODE>~</CODE>で括ることで直接書くことができます。

  • ジル

     こんにちは。

     結論から申しますと、ver 1.4で正常に動作しました!以下、エラー報告(?)をさせて頂きます。

     サーバはXREA、PHP 5.2.5、MySQL 5.1.11にて、「WP2.3.3」 「Exec-PHP 4.6」 「IMG Collect( ver 1.3 )〖WP2.3用〗」を用いて、以下のコードを記述しました:

    <CODE>< ?php $output =
    '[POST_LOOP category="3"]'
    .'[a href="POST_URL"]'.'POST_TITLE'.'[/a]'
    .'POST_DATE'

    .'[IMG_LOOP lastn="1" pname="1234"][POST_IMG][/IMG_LOOP]'
    .'[/POST_LOOP]';
    image_collect($output);?>
    </CODE>

     エラーは前回の投稿の通りです。また、提示して頂いたコード:

    <CODE>< ?php $output =
    '[POST_LOOP]'
    .'[IMG_LOOP][POST_IMG][/IMG_LOOP]'
    .'[/POST_LOOP]';
    image_collect($output);?></CODE>

    を記述したところ、エラーは出ないものの、画像URLの取得が正常にできていないようでした。ソースを見ると:

    <CODE></CODE>

    となっていました。

     次に、「WP2.3.3」 「Exec-PHP 4.6」 「IMG Collect( ver 1.4 )」で同じコードを記述したところ、上記のコード両方とも正常に表示されました。

    >実際の記事の画像<IMG>要素は特殊な記述をしてませんか?
     デフォルトのままです。また使用中のプラグインは「Akismet 2.1.4」「Customizable Post Listings 3.0.1」「Exec-PHP 4.6」ですので<IMG>要素には関係無いと思われます。

     以上です。迅速に対応してくださり、ありがとうございました!

  • らもゆん(携帯電話)

    動いて何よりです。
    どうやらサーバーの種類によって文字列抽出のコマンドが若干違うみたいですね。

    これからは2バージョン用意した方がよさそうです。

  • ジル

     らもゆん様、こんにちは。先日はどうもありがとうございました。
     プラグインは快適に動作しておりますが、また質問があります。
     私のブログでは、画像を収集したページを表示し、画像(サムネイル)をクリックすると、該当記事にジャンプし、更にサムネイルをクリックすると、liteboxで画像を開く、という風にいたしました。
     これを、らもゆん様のギャラリーのように、画像を収集したページの画像(サムネイル)をクリックすれば、liteboxで画像を開く、というようにしたいと思っております。
     もし差し支えなければ、どのようにギャラリーを生成していらっしゃるのか、教えて頂けないでしょうか。
     度々すみません。どうぞよろしくお願いします。

  • らもゆん(携帯電話)

    こんばんわ。
    私のページではただのリンクつきサムネイルを独自の置換によってJSを適用してます。具体的な方法は「てくめも」の1か2に書いていたと思います。

    またこの置換はライトボックスの拡張プラグインを参考にしたものなので、それを使えばよいかもしれません。

  • ジル

     らもゆん様、お久しぶりです。色々試行錯誤を重ねましたが、うまくいかないので相談させて頂けないでしょうか…
     まず、てくめも1を拝読し「サムネイル画像からメイン画像へのリンクに、rel="lightbox"を自動付与する」ことに成功いたしました。
     次は「IMG Collectによって取得されたサムネイル画像からメイン画像へのリンクを貼る」ことに挑戦しました。しかし以下のコードでは、デフォルトの状態では「画像取得先の記事へのリンク」が貼られてしまいます:

    < ?php $output =
    '[POST_LOOP category="3"]'
    .'[a href="POST_URL"]'
    .'[IMG_LOOP][POST_IMG][/IMG_LOOP]'
    .'[/a]'
    .'[/POST_LOOP]';
    image_collect($output);?>

     ここで独自機能を使い、[POST_IMG]にメイン画像へのリンクが付与されるよう、以下の変更を加えました:

    $thum_mode = 1;
    $thum_link = 1;

    < ?php $output =
    '[POST_LOOP category="3"]'
    .'[IMG_LOOP][POST_IMG][/IMG_LOOP]'
    .'[/POST_LOOP]';
    image_collect($output);?>

     すると、画像取得ができなくなってしまいました。ページのソースを見ると、以下のようになっていました:

     理想といたしましては、
    ・記事にはメイン画像
    ・ギャラリーページではサムネイル表示+メイン画像へのリンク
    としたいのですが…
     何度も申し訳ないのですが、何かご助言頂けないでしょうか。どうぞよろしくお願いします。

  • らもゆん

    こんばんわ。
    リンク生成の件ですが[a href="POST_URL"]は記事へのリンクを生成していますので、外せばサムネイル本体へのリンクが張られるはずです・・・。

    たぶんサムネイル取得のミスだと思います。
    lightboxを使用しない状態でサムネイルは表示されますか?
    【$thum】は正しく設定されてますか?

    ちょっと試してみてください。

  • ジル

    こんにちは。Lightboxを使用しない状態では、以下のようになります。

    【IMG Collect 本体の設定】
    ///サムネイルを表示(0=無効 1=有効 以下の設定無効)[既定値]無効
    $thum_mode = 0;
    ///サムネイルリンクの有無(0=無効 1=有効 以下の設定無効)[既定値]有効
    $thum_link = 1;
    ///サムネイルとしてマークする名前
    $thum = "thumbnail";
    ///マークの直後に付加される文字
    $thum_ins = ".";
    //最後のスラッシュの直後にマークを挿入する(0=無効 1=有効)[既定値]無効
    $thum_mode_cn = 0;

    サムネイルのファイル名は、「アップロードフォルダ/ファイル名.thumbnail.拡張子」です。

    【各記事の状態】
    サムネイル画像(メイン画像へのリンクあり)

    【ギャラリーページのコード】

    < ?php $output =
    '[POST_LOOP category="3"]'
    .'[IMG_LOOP][POST_IMG][/IMG_LOOP]'
    .'[/POST_LOOP]';
    image_collect($output);?>


    【結果】
    ギャラリーページに、各記事のサムネイル画像が一覧で正常に表示される。しかし、リンクは無し。ソース:

    画像タイトル


     ここに、2008/5/5に書き込みをした通り、IMG Collect本体の変更を加えると、画像の取得ができなくなります。

     毎回申し訳ありません… どうぞよろしくお願いします。

  • らもゆん

    すいませんジルさん。
    画像タグの関係でコメントがスパムとして扱われたようです。

    頂いた条件と結果を検証してみたところ、原因がわかりました。
    img要素のscrに「scr = 」と空白を入れてませんか?
    たぶんそれでURLの取得に失敗しているのだと思います。
    私の作成時の配慮不足でした。すいません。

    空白が入っててもうまく処理できるように改良したものを作りましたので試してみてください。

    IMG Collect( ver 1.6 | L.Project custom ) 【XREA用】〖WP2.3用〗

  • ジル

    らもゆん様、こんにちは。
    せっかく作っていただいた新しいバージョンでも、正常に動作しませんでした…が、原因が分かりました。

    WPのアップロード機能によって画像を組み込むと、href='...' や src='... 'というように、"の代わりに'が使われており、直すと正常に動作しました。

    お騒がせして申し訳ありませんでした!また、毎回早急に対処して頂き、ありがとうございました。

  • ao

    特定のカテゴリー以外を表示の対象にする事はできますか?
    今の状態だと表示するカテゴリーしか選べないので、どうにかできたら嬉しいです。

  • らもゆん

    はじめましてaoさん。
    特定のカテゴリーを対象外する機能をつけてみました。
    試してみてください。

    IMG Collect( ver 1.1 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗
    IMG Collect( ver 1.1 | L.Project custom ) 【XREA用】〖WP2.5用〗

    設定方法は従来【category="任意のカテゴリー"】としていたところを
    【pcategory="対象外にするカテゴリー"】とすることで機能します。

    ただ対象外の記事に複数のカテゴリーがつけられていた場合は表示されてしまいます。
    もし複数のカテゴリーで使うようなのであれば修正しますので気軽に言ってください。

  • ao

    お返事遅れてすいません。
    希望通りの動作をしてくれました。
    今は複数のカテゴリーを除外する必要性はないので、なくても問題ありませんが、categoryと動作を同一にする方が望ましいかも知れませんね。
    すばらしいプラグインをありがとうございます。

  • snow

    はじめまして。
    自分はWPの投稿にWINDOWS LIVE Writerを使用しているのですが。
    このソフトを使用して画像をアップすると、

    leafmap-150x150.jpg
    leafmap-thumb.jpg
    leafmap-thumb-150x150.jpg

    こんな感じでアップロードされています。

    こういう時は、
    $thum = "thumbnail";

    $thum_ins = ".";
    の設定はどうすればいいのでしょうか?

  • ぽぷり

    はじめまして。
    らもゆん様バージョン、快適に使用させていただいております。
    使用法やコメントを参照して、問題なく動作しています。

    当方は一つの記事に対して、複数の画像を使用することもあります。
    そうすると、一度に複数の画像が表示されますので、どうしても重たいページになってしまいます。

    そこで、一定画像数、もしくは一定記事数で、複数ページに分ける機能があったらいいなと思うのですが、あまり要望はないのでしょうか。

    お返事はお時間のあるときで結構です。

    最後になりましたが、素晴らしいプラグインを提供してくださって、どうもありがとうございます。

  • らもゆん

    はじめましてsnowさん。
    $thumの設定ですが、あくまでも固定文字列を除去するものです。
    例えば挙げられた3つのファイルのうち
    1.leafmap-150x150.jpg
    2.leafmap-thumb.jpg
    3.leafmap-thumb-150x150.jpg

    3から1を導出することは可能ですが、
    2から1を導出することはできません。
    頂いた情報からどれが本体の画像ファイル名かは判断しかねますが、
    もし1が本体ファイルで3がサムネイルファイルなら
    以下の設定で実現可能です。

    $thum = "thumbnail";
    $thum_ins = "-";

    もしも2から1もしくは「leafmap.jpg」などのファイル名を導出するのであれば
    プラグイン自体の修正が必要になります。
    その場合、サムネイルファイル名から本体ファイル名を導出するのは
    比較的簡単に実装可能なのですが、逆の導出は根本的な仕様変更が
    必要になります・・・。

    ちょっとやってみたい気もしますが(ぇ

  • らもゆん

    はじめましてぽぷりさん。
    確かに全部の画像が多くなると厄介ですね。
    そもそも最初に全記事に検索をかけて画像タグを探しているので
    その処理自体が結構重いです。
    画像を別のテーブルで持ってる現バージョンのDB構造だと
    相当無駄なことやってます・・・・ORZ

    さて複数ページに区切る機能の件ですが、
    ギャラリーページにAjaxを使ったjavascriptを書いていただき
    動的に表示切替え・・・というのが良いかと思っています。
    プラグインの修正でページに分けて出力する機能をつけることは可能ですが、
    runphp内でパラメータを受けるのが怖いのと、
    前述した重い全文検索がページ切り換えのたびに走ると思われるので、
    できればjavascriptで対処したいです。

    javascriptでの対応でよければサンプルコードなどを書こうと思いますが
    いかがいたしましょう?

  • ぽぷり

    こんばんは、ぽぷりです。
    お返事くださり、ありがとうございます。
    ちょっと間があいてしまいました。
    質問しておきながら申し訳ございません。

    複数ページ化、対応する手段があるとのこと、すごく嬉しいです。
    何でもできてしまいそうならもゆん様を尊敬してしまいます。

    おっしゃるとおりの方法(javascript)での対応で、もちろん結構です。
    お忙しいとは思いますが、お願いしてもよろしいでしょうか?

  • らもゆん

    こんばんわ、ぽぷりさん。
    遅くなりましたが、javascrptでの出力に関するドキュメントを作成しましたので
    参考にしながらご自身の環境で試してみてください。
    コメント欄に書くとすごく長くなるので、お手数ですが下記URLからダウンロードしてください。
    IMG Collectの分割出力に関して

    よくよく考えたらAjax使わなくてもできました(´・ω・`;)
    ドキュメント内のjavascriptは割と簡単な構造になってます。

  • ぽぷり

    らもゆん様、こんばんは。
    コードを作成してくださり、どうもありがとうございます。
    早速ドキュメントをDLし、記載の手順に沿ってギャラリーページを編集しました。
    私の環境で上手く動作しないのでご相談させてください。

    現在以下のような内容で問題なく動作しています。
    【XREA用・WP2.5用】使用
    【画像検出の設定】
    $thum_mode = 1;
    $thum_link = 1;
    $thum = "";
    $thum_ins = "_";
    $thum_mode_cn = 0;
    【ギャラリーページの本文】


    ギャラリーページの本文を以下のように編集しました。

    前へ次へ

    (img_split.jsをペースト)


    すると、本文部分に何も表示されなくなり、
    「前へ|次へ」のリンクのみ出ている状態になります。
    テーマをデフォルトに戻してみても変わりませんでした。
    私の編集の仕方に問題があるのだと思い、挿入位置を変えてみたりしても解決できませんでした;;
    度々申し訳ございませんが、ヒントをいただけますでしょうか?
    よろしくお願いいたします。

  • らもゆん

    こんばんわ、ぽぷりさん。
    分割出力で画像が出力されないとのことですがいくつか質問させてください。

    1.非表示にしたdiv要素のIDがほかのID競合してませんか?

    2.分割して出力する場所が正しく指定されていますか?
    非表示にしたdiv要素の外側にしていされていますか?
    またdiv要素のIDがほかのID競合してませんか?

    3.スクリプトをペーストした際、無駄な改行が含まれていませんでしたか?

    4.デリミタを[/POST_LOOP]の直前に正しく追加してますか?

    ページのソースがもう少し原因がハッキリすると思うのですが、とりあえず上記4点を確認してみてください。

  • ぽぷり

    らもゆん様、こんばんは。
    返信ありがとうございます。
    コメントする際に<CODE>タグで括ったコードが飛んでしまいました;;
    変なコメントになってしまい、すみません。
    同じ内容をメールでお送りしてしまいました。

    ひとまず、提示していただいた質問にお答えしますね。
    >1.非表示にしたdiv要素のIDがほかのID競合してませんか?
    かなりひねったIDをつけたので、まず競合はないかと思います。

    >2.分割して出力する場所が正しく指定されていますか?
    >非表示にしたdiv要素の外側にしていされていますか?
    >またdiv要素のIDがほかのID競合してませんか?
    非表示にしたdiv要素の外側に設置しました。
    IDについては問1同様です。

    >3.スクリプトをペーストした際、無駄な改行が含まれていませんでしたか?
    確認したところ、余分な改行はないようです。

    >4.デリミタを[/POST_LOOP]の直前に正しく追加してますか?
    ここが正しいかどうか心配なところですが、
    [/POST_LOOP]の直前に記入しました。

    編集後のページのソースを書いておきます。
    (うまく表示されないので全角で・・・)
    <div id="img_in" style="display:none;">
    < ?PHP
    $output = '[POST_LOOP]'
    .'[IMG_LOOP name="●●"][POST_IMG][/IMG_LOOP]'
    .'[a href="POST_URL" title="POST_TITLE"]'.'[POST_TITLE]'.'[/a]'
    .'イメージコレクト切り取り線'
    .'[/POST_LOOP]';
    image_collect($output);
    ?>
    </div>
    <div id="img_out"></div>
    (前ページへのリンク|次のページへのリンク)
    (img_split.jsをペースト)

    何度もすみません。
    助言よろしくお願いいたします。

  • らもゆん

    こんばんわ、ぽぷりさん。
    ページの記述は問題ないです。
    javascriptの問題だと思います。

    私自身も作るときに苦労したのですが、WP記事入力フォームからの入力は
    引用符の参照置換や意図しない改行タグが行なわれるので直接コードを書くには向いてません。
    開発用のWP2.5ではそのままペーストしても上手く動作するように調節しましたが、
    そちらの環境ではうまく動作してないようです。

    なので急仕立てではありますが、プラグイン自体に分割機能つけてみました。
    IMG Collect( ver 1.2 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗
    IMG Collect( ver 1.2 | L.Project custom ) 【XREA用】〖WP2.5用〗

    前ページへのリンクや次のページへのリンクは別途記述する必要がありますが、
    javascriptやDIV要素は自動で挿入されます。
    デリミタの挿入も必要ありません。
    以前使用していたimage_collectのフォーマットをそのまま使ってください。
    設定はプラグインの52行目付近の以下の項目を調節してください。
    ---------------------------------------------
    //分割出力の有効化(0=無効 1=有効 以下の設定無効)[既定値]無効
    $spl_mode = 1;
    //1ページに出力する画像の数
    $spl_num = 3;
    //最初に出力するページ[既定値]0
    $spl_start_num = 0;
    //デリミタとして使用する文字列
    $spl_deli = 'いめーじでりみた';
    //入力エリアとなるDIV要素のID
    $spl_in = "img_collect_input_area";
    //出力エリアとなるDIV要素のID
    $spl_out = "img_collect_output_area";
    ---------------------------------------------

    これで動かなかったら、ブラウザのセキュリティ設定とか他のjavascriptとの干渉とかだと思います・・・。
    動くことを祈ります(汗

  • ぽぷり

    らもゆん様、こんにちは。
    作成してくださったver1.2ありがとうございます!
    使用してみたところ、こちらのWP2.6でも動作しました。

    ただ、やはり他のプラグインやjavascriptとの相性なのか、
    ページ分割した際、最初の1ページ目は今までどおり、thickboxでサムネイル→元画像へ表示できます。
    2ページ目以降は、thickboxは無効で通常の同窓リンクになります。

    また、1ページに表示する画像数を指定すると、最後の方で指定数に満たない部分は表示されないようでした。
    現在67枚の画像がありますが、10枚ずつ表示するように指定すると、
    6ページ目までしかない状態です。

    ギャラリープラグインは色々ある中で、IMGCollectは投稿内の画像をそのまま引っ張ってこれる素敵なプラグインなので、複数ページ化ができればと思ったのですが、なかなか難しいようですね。

    とりあえず、ちょっと様子を見てみることにします。
    これからも、訪問させていただきますので、お体に気をつけて頑張ってくださいね。
    色々としていただき、本当にどうもありがとうございました。

  • らもゆん

    こんばんわ、ぽぷりさん。
    thickboxなんて便利なものがあるんですね~。
    動かないのがなんか悔しいので、対応ぽいことしてみました(`・ω・´)
    動くかもしれません(無責任
    あと、最後のページが表示されない件はコーディングミスでしたので修正しました。

    IMG Collect( ver 1.21 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗

    IMG Collect( ver 1.21 | L.Project custom ) 【XREA用】〖WP2.5用〗

    気が向いたら動作報告していただけると助かります~。

  • ぽぷり

    らもゆん様、こんばんは。
    Ver1.21で、最後のページまで表示されるようになりました。
    感謝です♪

    Thickboxの動作の方は、残念ながら変わらずでした;;
    ロリポップ用とXREA用、どちらも試してみましたが同じでした。
    何故か、一番最初のページだけはThickbox動いてます。
    私が使っているのは、「WordPress ThickBox plugin」というjQueryを使ったプラグインですが、これと相性が悪いのかもですね。

    ここまでしてくださったのに何か申し訳ないです。

    ひとまずご報告まで。でもこのまま使わせていただきますね。
    どうもありがとうございました。

  • らもゆん

    こんばんわ、ぽぷりさん。
    報告ありがとうございます。

    Thickboxの方は動きませんでしたかー。
    ちょっと残念です。
    特定のプラグインとの調整なら割と簡単なので、
    また今度時間のできたときにチャレンジしてみますね。

    余談ですが、プログラミングの仕事は頑張っても全く評価されませんが、
    フリーのプラグインなどはこうやって使っていただいている方の要求や
    反応があってすごく楽しいです。
    作り甲斐がありますね!

  • ちょち

    こんにちは!お世話になります。

    IMG Collectを使用している者です。
    ファーストサーバにこのプラグインを設置したのですが、ファーストサーバではタイトルだけ機能し、画像が全く表示されないという症状がでています。

    同じものをローカル環境、チカッパ、ロリポップにも入れて確認していますが、正常に動作しています。
    使用環境はWP2.6、2.7ですが、上記サーバでもすべて正常に動作しています。
    問題はファーストサーバです。

    サーバによって動作が異なるということですが、もし何かヒントになる部分でもありましたらご教授いただけないでしょうか?

    お忙しい所、申し訳ありません。
    よろしくお願いいたします。

  • ちょち

    らもゆん様

    前記の部分において、解決いたしましたのでご報告いたします。
    こちらの単純な画像パスの記述ミス(エントリ内)だったことがわかりました。
    お騒がせし、大変申し訳ありません。

    ちなみにファーストサーバではIMG Collect( ver 1.1 | L.Project custom ) 【XREA用】〖WP2.5用〗で動作しました。

    同じくお悩みの方がいらっしゃるかもしれないので、簡単に解決報告させていただきました。

    プラグイン開発がんばってくださいね!
    ありがとうございました!

  • らもゆん

    >ちょちさん
    報告ありがとうございます。
    うーん・・・いつまでサポートできるかわかりませんがボチボチがんばっていきます(´・ω・`;)

    >ぽぷりさん
    だいぶ遅くなりましたが「WordPress ThickBox plugin」に関して報告です。
    結論から言いますと本のプラグインだけの対応ではムリでした。
    ページを表示するタイミングでパースをするらしく、
    javascrptで中身を差し替えると感知してくれないみたいです。
    とりあえず元の画像のclassを拾ってくるように改良したものをおいておきますね。

    IMG Collect( ver 1.22 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗

    IMG Collect( ver 1.22 | L.Project custom ) 【XREA用】〖WP2.5用〗

  • ぽぷり

    らもゆん様、ご無沙汰しております。
    あれから、ちょくちょくこちらへ訪問していたのですが、今日来てみると新バージョンがっ!
    らもゆん様が覚えててくださったことに感激です^^

    今回作成してくださったバージョンを早速試してみました。
    ところが何故か、最初のページもThickboxで表示しなくなりました。

    「WordPress ThickBox plugin」の仕組みは分からず使用していましたが、IMG Collectだけでは対応できないのですね。
    Thickboxを使ったプラグインは他にも類似品が沢山あるので、別の物に乗り換えてみるのも一つの手かもしれません。

    色々試してみることにします。
    IMG Collectは手放すつもりはないので、相性の良いプラグインが見つかったら、ご報告いたしますね。

    ここまでお付き合いくださり、とても感謝しています。
    これからも応援しております!
    どうもありがとうございました。

  • らもゆん

    >ぽぷりさん
    お久しぶりです。
    ずっと気がかりだったのでやっつけでやってみたのですが駄目でしたorz

    「WordPress ThickBox plugin」では画像リンクに「class="thickbox"」を記述すると有効になるとのことでしたので、元画像からclassを取ってくるようなにしたのですが、よくよく考えると元画像じゃなくてリンクのclassを取るべきですね。
    そもそも今までは「class="thickbox"」が付与されてなかったのに、ぽぷりさんの環境では1ページ目だけthickboxが有効だったのが気になります。他の補佐プラグインを使っていらっしゃったのでしょうか?

    そんな訳でまじめに考え直して
    「WordPress ThickBox plugin」だけ独自処理を通すという形で対応バージョンを作りました。

    IMG Collect( ver 1.23 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗
    IMG Collect( ver 1.23 | L.Project custom ) 【XREA用】〖WP2.5用〗

    65行目付近の
    ---------------------------------------------
    //thickbox連携オプションの有効化(0=無効 1=有効 以下の設定無効)[既定値]無効
    $spl_thickbox_mode = 0;
    ---------------------------------------------
    これを有効にするとサムネイルのリンクに「class="thickbox"」が付与されます。
    さらにページ切り替えをjQueryによって行うため、2ページ以降もthickboxが機能します。
    例によってテスト不足が否めないので何かありましたらご報告お願いします。

    ※注意事項
    「WordPress ThickBox plugin」に限っては動作しますが、jQueryを利用しない他のプラグインでは動かないと思います・・・。

  • ぽぷり

    らもゆん様こんばんは。
    WordPress ThickBox plugin対応バージョン、どうもありがとうございます!
    結果から申しますと、希望どおりの動作をするようになりました!
    ・複数ページで指定数ずつサムネイルを表示
    ・サムネイルをクリック→Thickboxで元画像をポップアップ表示
    全てのページで問題なく動作していることを確認しました。
    PCの前でちょっと小躍りしてしまいました。

    ですが、ページ分割出力を有効にすると、最後10枚の画像が表示されなくなります。
    (67枚の画像のうち、57枚目までは表示され、最後の10枚が表示されない状態です。)
    分割出力が無効の時は、全ての画像が表示されます。
    1ページに出力する画像数を(極端な話、1枚ずつに)調節しても同様でした。

    >そもそも今までは「class="thickbox"」が付与されてなかったのに、ぽぷりさんの環境では1ページ目だけthickboxが有効だったのが気になります。他の補佐プラグインを使っていらっしゃったのでしょうか?
    これについては、完全に私の説明不足です;
    ver1.21までは、画像へのリンク部分(最新バージョンで370行目あたり)に、「class="thickbox"」を付け足していました。
    言われるまで、自分で編集したのを失念しておりました。
    勝手に編集したばかりか、説明不足で混乱させてしまい申し訳ございませんでした。

    にもかかわらず、対応バージョンを作成してくださって、どうもありがとうございます(T◇T)

  • らもゆん

    こんばんわ、ぽぷりさん。
    とりあえず動いて何よりです。
    jQuery周りをちゃんと調べなかったせいで、遠回りになっていまいました・・・・。
    急がば回れ、ですね。

    最後のページが出力されないとのことですが、
    1箇所コードのミスがありました。
    修正したこちらのバージョンを試してみてください。
    IMG Collect( ver 1.24 | L.Project custom ) 【ロリポップ用】〖WP2.5用〗
    IMG Collect( ver 1.24 | L.Project custom ) 【XREA用】〖WP2.5用〗

    これでうまくいかないならブラウザの関係かも知れません。
    Opera 9.5だと余分にページが出力されてしまうので意図的にページを減らしています。
    89行目の「if(_op){.......」のif分を削っていただければOpera でも通常通りの出力になります。

    それでもダメとなると今はちょっと見当がつきません。
    こちらでは現象を再現できてませんので事象の詳細を教えていただけると助かります。
    ページが切り替わった後に表示されないのか、そもそ切り替らないのか・・・など。
    できればページのIMG LOOPのタグとかも教えていただけれると嬉しいです。

    せっかくならちゃんと動くようにしたいので・・・。

  • ぽぷり

    らもゆん様、こんばんは。
    早速、修正版をありがとうございます。

    試してみたところ、前回と同様、最後の10枚が表示されませんでした。
    次ページへのリンクをクリックしても、ページが切り替わらない状態です。
    あと、これは今日気付いたことですが、
    最初のページでは記事へのリンクが表示されていますが、次ページ以降は記事へのリンクが表示されていませんでした。
    ページを戻すと、最初のページでもリンクが消えてしまいます。
    ページのソースを見ると、リンク自体は存在していて、ただ表示されていないだけのようでした。

    ただし、上の2つの現象は、「WordPress ThickBox plugin」連携機能を有効にした場合に起こるみたいです。

    ちなみに私の場合、以下のように記述しています。(また全角で)
    --------------
    前へ|次へ
    < ?PHP
    $output = '[POST_LOOP]'
    .'[IMG_LOOP name="junk"][POST_IMG][a href="POST_URL" title="POST_TITLE"]'.'[POST_TITLE]'.'[/a][/IMG_LOOP]'
    .'[/POST_LOOP]';
    image_collect($output);
    ?>
    ---------------

    使用しているブラウザは、Firefox3.0.6です。
    試しに、89行目のifの行を削除しても状態は同じでした。
    IEでも試してみましたが、同様でした。

    何度もすみません。本当に…;
    足りない情報がございましたら、おっしゃってください。

コメントする

名前 (任意)

メールアドレス (任意)

ホームページ (任意)



本文 (必須)