LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Forum

xelfinder + bulletin(テンプレート編集)で xoopsgallery? のようなもの

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2016/2/18 18:12 | 最終変更
kamezou  1st Class 居住地: 2013~  投稿数: 47
xelfinder + bulletin(テンプレート編集)で xoopsgallery のようなものを作ってみました。( xoopsgallery は、ほとんど知りませんが…)

root/uploads/gallery/記事番号(storyid)/ 内に、画像ファイルを置くという前提です。(フォルダは xelfinder で作成)
root/uploads/gallery/記事番号(storyid)/thumbs/ 内に、サムネイルが作成されます。(thumbsフォルダがない場合 自動で作成)


xelfinder の 一般設定 -> ボリュームドライバ に、次の一行を追加します。
gallery フォルダに直接アクセスできます。
xelfinder:xelfinder:/uploads/gallery:ギャラリー:gid=1

テンプレート:bulletin_item.html の、33行目付近
<div class="itemText"><{$story.text}></div>
を、以下のコードに置き換えます。(半分ぐらいがサムネイル作成…テンプレートから作成するなんて、やっていいんだろうか?)
    <div class="itemText">
      <{if $xoops_requesturi|strstr:"article"}><{*-----------単一記事のページ-----------*}>
        <{$story.text}><br />
        <{assign var=g_file_name value="$xoops_rootpath/uploads/gallery/`$story.id`/*.*"|glob}><{*-----------ファイルを取得-----------*}>
        <{foreach item=img_file from=$g_file_name}>
          <{assign var=f_n value=$img_file|replace:"$xoops_rootpath/uploads/gallery/`$story.id`/":""}>
          <{assign var=img_info value=$img_file|getimagesize}>
          <{if !"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs"|file_exists}><{*-----------サムネイルフォルダ作成-----------*}>
            <{assign var=md value="$xoops_rootpath/uploads/gallery/`$story.id`/thumbs"|mkdir}>
            <{assign var=md value="$xoops_rootpath/uploads/index.html"|copy:"$xoops_rootpath/uploads/gallery/`$story.id`/index.html"}>
            <{assign var=md value="$xoops_rootpath/uploads/index.html"|copy:"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/index.html"}>
          <{/if}>
          <{if !"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/$f_n"|file_exists}><{*-----------サムネイル作成-----------*}>
            <{if $img_info[0] > $img_info[1]}>
              <{assign var=x value=160}><{assign var=y value=$img_info[1]/$img_info[0]*160}><{*------サムネイルサイズ(横長の時)------*}>
            <{else}>
              <{assign var=x value=$img_info[0]/$img_info[1]*160}><{assign var=y value=160}><{*------サムネイルサイズ(縦長の時)------*}>
            <{/if}>
            <{assign var=oid value=$img_file|imagecreatefromjpeg}>
            <{assign var=tid value=$x|imagecreatetruecolor:$y}>
            <{assign var=tid2 value=$tid|imagecopyresampled:$oid:0:0:0:0:$x:$y:$img_info[0]:$img_info[1]}>
            <{assign var=timg value=$tid|imagejpeg:"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/$f_n"}>
            <{assign var=tid2 value=$tid|imagedestroy}><{assign var=tid2 value=$oid|imagedestroy}>
          <{/if}><{*-----------サムネイル作成ここまで-----------*}>
          <a href="." target="_blank" onClick="window.open('<{$img_file|replace:$xoops_rootpath:$xoops_url}>','','width=<{$img_info[0]}>,height=<{$img_info[1]}>');return(false);">
            <img src="<{$xoops_upload_url}>/gallery/<{$story.id}>/thumbs/<{$f_n}>" alt="" />
          </a>&nbsp;
        <{/foreach}>
      <{else}><{*-----------記事一覧のページ-----------*}>
        <{assign var=g_file_name value="$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/*.*"|glob}><{*-----------サムネイルファイルを取得-----------*}>
        <img src="<{$g_file_name[0]|replace:$xoops_rootpath:$xoops_url}>" width="80" alt="" />&nbsp;
        <{$story.text}>
      <{/if}>
    </div>

フォルダ作成や、ファイルアップロードは xelfinder で行います。ファイル名は特に制限はありません。
ワイルドカード(*.*)でファイルを取得しているので、独自にルールを設けることで、絞り込みを設定できます。

このテンプレート変更内 の $story.id を $story.title にすると、フォルダ名を、記事番号ではなくタイトル名にすることができます。(たぶん…)

bulletin の該当の記事のページを表示する時に、サムネイルがなければ、自動で作成されます。(元画像は jpeg であること)
画像やフォルダがない場合は、通常の bulletin と全く変わりません。

テンプレート編集のみですので、サムネイルのサイズなどの表示関係は、好きなように調整してください。
*/
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2016/2/22 10:21
nao-pon  Lieutenant   投稿数: 486
kamezou さん、こんにちは。

X-elFinder をテンプレートから利用するという案はいいですね。

データベースでファイルを管理している xelfinder_db ボリューム用に Smarty プラグインを整備するとテンプレート編集のみで様々なモジュールにファイルアップロード機能を組み込めるので面白そうですね。

時間を作って考えてみようと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/2/22 12:43
kamezou  1st Class 居住地: 2013~  投稿数: 47
こんにちは。

まさか、nao-ponさんからコメントいただけるとは…

xelfinder_db ボリューム用の Smartyプラグイン、どんなものか今一つ理解が追い付きませんが、ちょっと思いついたことがあります。

xcck + xelfinder で、万能モジュールができないかな?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2016/2/23 18:06 | 最終変更
kamezou  1st Class 居住地: 2013~  投稿数: 47
index.html が、画像リンクとして表示されていました。firefoxでは表示されてなかったので、気づいていませんでした。
修正しました。
    <div class="itemText">
      <{if $xoops_requesturi|strstr:"article"}><{*-----------単一記事のページ-----------*}>
        <{$story.text}><br />
        <{assign var=g_file_name value="$xoops_rootpath/uploads/gallery/`$story.id`/*.*"|glob}><{*-----------ファイルを取得-----------*}>
        <{foreach item=img_file from=$g_file_name}>
          <{if !$img_file|strstr:"index.html"}>
            <{assign var=f_n value=$img_file|replace:"$xoops_rootpath/uploads/gallery/`$story.id`/":""}>
            <{assign var=img_info value=$img_file|getimagesize}>
            <{if !"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs"|file_exists}><{*-----------サムネイルフォルダ作成-----------*}>
              <{assign var=md value="$xoops_rootpath/uploads/gallery/`$story.id`/thumbs"|mkdir}>
              <{assign var=md value="$xoops_rootpath/uploads/index.html"|copy:"$xoops_rootpath/uploads/gallery/`$story.id`/index.html"}>
              <{assign var=md value="$xoops_rootpath/uploads/index.html"|copy:"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/index.html"}>
            <{/if}>
            <{if !"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/$f_n"|file_exists}><{*-----------サムネイル作成-----------*}>
              <{if $img_info[0] > $img_info[1]}>
                <{assign var=x value=160}><{assign var=y value=$img_info[1]/$img_info[0]*160}><{*------サムネイルサイズ(横長の時)------*}>
              <{else}>
                <{assign var=x value=$img_info[0]/$img_info[1]*160}><{assign var=y value=160}><{*------サムネイルサイズ(縦長の時)------*}>
              <{/if}>
              <{assign var=oid value=$img_file|imagecreatefromjpeg}>
              <{assign var=tid value=$x|imagecreatetruecolor:$y}>
              <{assign var=tid2 value=$tid|imagecopyresampled:$oid:0:0:0:0:$x:$y:$img_info[0]:$img_info[1]}>
              <{assign var=timg value=$tid|imagejpeg:"$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/$f_n"}>
              <{assign var=tid2 value=$tid|imagedestroy}><{assign var=tid2 value=$oid|imagedestroy}>
            <{/if}><{*-----------サムネイル作成ここまで-----------*}>
            <a href="." target="_blank" onClick="window.open('<{$img_file|replace:$xoops_rootpath:$xoops_url}>','','width=<{$img_info[0]}>,height=<{$img_info[1]}>');return(false);">
              <img src="<{$xoops_upload_url}>/gallery/<{$story.id}>/thumbs/<{$f_n}>" alt="" />
            </a>&nbsp;
          <{/if}>
        <{/foreach}>
      <{else}><{*-----------記事一覧のページ-----------*}>
        <{assign var=g_file_name value="$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/*.*"|glob}><{*-----------サムネイルファイルを取得-----------*}>
        <{foreach item=img_file from=$g_file_name}>
          <{if !$img_file|strstr:"index.html" && !$flg}>
            <img src="<{$img_file|replace:$xoops_rootpath:$xoops_url}>" width="80" alt="" />&nbsp;
            <{assign var=flg value=true}>
          <{/if}>
        <{/foreach}>
        <{$story.text}>
      <{/if}>
    </div>
*/
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2016/3/31 2:02
kamezou  1st Class 居住地: 2013~  投稿数: 47
4行目と32行目の、ワイルドカードとその前の / で、/*(コメント)と解釈されて、末尾に自動で */ が付加されていました。テンプレートの編集でも同じことになります。

それぞれ
        <{assign var=g_file_name value="$xoops_rootpath/uploads/gallery/`$story.id`/"|cat:"*.*"|glob}><{*-----------ファイルを取得-----------*}>
        <{assign var=g_file_name value="$xoops_rootpath/uploads/gallery/`$story.id`/thumbs/"|cat:"*.*"|glob}><{*-----------サムネイルファイルを取得-----------*}>
に修正してください。
投票数:1 平均点:10.00
  条件検索へ

Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities