メイン
   XOOPS2モジュール
     MyAlbumのcat_listの説明文に関して。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sekishun
投稿日時: 2004/7/8 20:41
新米
登録日: 2004/6/24
居住地:
投稿: 7
MyAlbumのcat_listの説明文に関して。

初めまして

SEKISHUNという者です。

自分のサイトでMyAlbum-p 2.81を使わせて頂いております。
このモジュールの便利さを噛みしめております。

ただ自分の使用目的が画像の紹介からかなり離れた目的で使用させて頂いているため少々壁にぶつかっています。
その問題は多岐にわたるのですが、例えば登録項目の追加への挑戦です。登録項目のフォームなどを増やすことは成功しましたが、なにぶん初心者のため、結局$site_url等とテンプレートに記述しても表示されずPHPファイルと十数時間にらめあってい他時間は徒労に終わったわけです。
諦めて他の方法で代用しましたが(^^;)
ここからが質問したいことなのですが、カテゴリーで画像を説明文付きでリスト表示する際、説明文を『人気画像や最近の画像』のタイトルのように表示文字数を制限できないでしょうか?
説明文の文字数が多くなりすぎてしまうとデザインの面で見た目が良くないのでご教授願えないでしょうか?
一度blocks/myalbum_tophits.phpを参考にしてみたのですが、結局解りませんでした。
非常に個人的な質問になってしまいましたが宜しくお願い致しますm(_ _)m

GIJOE
投稿日時: 2004/7/9 5:18
長老
登録日: 2003/4/3
居住地:
投稿: 2137
Re: MyAlbumのcat_listの説明文に関して。

sekishunさん、こんにちは。

サイト拝見しました。なかなか面白い使い方で、楽しめました。
meguさんのサイトを見て、myAlbum-Pの利用を思い立ったのですね。

引用:
ただ自分の使用目的が画像の紹介からかなり離れた目的で使用させて頂いているため少々壁にぶつかっています。
その問題は多岐にわたるのですが、例えば登録項目の追加への挑戦です。登録項目のフォームなどを増やすことは成功しましたが、なにぶん初心者のため、結局$site_url等とテンプレートに記述しても表示されずPHPファイルと十数時間にらめあってい他時間は徒労に終わったわけです。
諦めて他の方法で代用しましたが(^^;)

ただ、こんなことを書いたら、モジュール作者としてプライドがないのか、とか叱られるかも知れませんが、こういう用途には、xcGalleryの方が向いていると思います。

フリーな用途に使えるフィールドが確か4つくらいあるので、そこにダウンロード先とかを指定すれば、descriptionで無理矢理に処理しなくても良いでしょう。

myAlbum-Pは、DanielさんのMyAlbumとテーブル構造がまったく同じ、という前提で作っているため、そういった気の利いたことが一切出来ません。なんでそんな無意味な完全互換性にこだわっているのか、我ながら不思議だったりしますが:-D

引用:
ここからが質問したいことなのですが、カテゴリーで画像を説明文付きでリスト表示する際、説明文を『人気画像や最近の画像』のタイトルのように表示文字数を制限できないでしょうか?
説明文の文字数が多くなりすぎてしまうとデザインの面で見た目が良くないのでご教授願えないでしょうか?

リストビューにおいて、画像の説明を文字数制限したい、ということですね。

私のおすすめは、Smartyプラグインの作成です。
これをすれば、テンプレート側だけで対応できるので、モジュールがアップデートしてもいちいちハックし直す必要がありませんし、他のモジュールにも使えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Type:     modifier
 * Name:     mbtruncate
 * Purpose:  Truncate a string to a certain length if necessary,
 *           optionally splitting in the middle of a word, and 
 *           appending the $etc string.
 * -------------------------------------------------------------
 */
function smarty_modifier_mbtruncate($string, $length = 80, $etc = '...',
                                  $break_words = false)
{
    if ($length == 0)
        return '';
 
    if (strlen($string) > $length) {
        $length -= strlen($etc);	
        if (!$break_words)
	    $string = preg_replace('/\s+?(\S+)?$/', '', mb_strcut($string, 0, $length+1));
      
        return mb_strcut($string, 0, $length).$etc;
    } else
        return $string;
}
?>

こんな感じのファイルを、class/smarty/plug-ins/modifier.mbtruncate.php として保存します。
あとは、テンプレート側、例えば、myalbum_photo_in_list.html にて、

1
            <{$photo.description|mbtruncate:100}>

とかすれば、100byteの位置で切れます。途中で切れた場合には、'...' がつきます。
基本的には、truncateと同じなので、Smartyのマニュアル
http://sunset.freespace.jp/smarty/SmartyManual_2-6-1J_html/language.modifier.truncate.html
をご覧下さい。


ファイル名のtypoを修正

sekishun
投稿日時: 2004/7/9 11:00
新米
登録日: 2004/6/24
居住地:
投稿: 7
Re: MyAlbumのcat_listの説明文に関して。

早速の返信どうもありがとうございますm(_ _)m

書かれている通りにしてみたところ見事に出来ました。
本当に自分があまりに初心者のためお手数を掛けて申し訳ございませんでした。ただ画像が文章の一番初めにあると画像はリストでは表示されなくなるようです。

それとxcgalleryは訪問者にとって少々使い方が複雑な気がしますのでmyalbum-pの方で再び項目を増やそうとチャレンジしましたが、プレビューでは新しく増やした項目は表示されるのですが、登録後のリストやシングルビューの画面ではやはり表示されませんでした。
兎に角、初心者の自分にはまだまだPHPは敷居が高いようです(^^;)

GIJOE
投稿日時: 2004/7/10 6:57
長老
登録日: 2003/4/3
居住地:
投稿: 2137
Re: MyAlbumのcat_listの説明文に関して。
sekishunさん、こんにちは。
引用:
それとxcgalleryは訪問者にとって少々使い方が複雑な気がしますのでmyalbum-pの方で再び項目を増やそうとチャレンジしましたが、プレビューでは新しく増やした項目は表示されるのですが、登録後のリストやシングルビューの画面ではやはり表示されませんでした。

そこまでやったのなら、もう少し頑張ってみましょうか。
手順としては、

・xoops_myalbum_photos に ALTER TABLEかけてフィールド項目を追加する
・submit.php, editphoto.php のフォームに該当フィールドを追加する
・submit.php の "INSERT INTO ... " という部分に該当フィールドを追加する
・editphoto.php と include/functions.php の myalbum_update_photo() を書き換える
・index.php, photo.php, viewcat.php の "SELECT l.lid, l.cid ... " という部分に該当フィールドを追加する
・include/draw_functions.php内のmyalbum_get_array_for_photo_assign() 内で、該当フィールドを配列要素として追加する
・テンプレート側を書き換える

……う〜ん、やっぱり、敷居が高いかも。
次にこのモジュールを本格的にいじるときには、項目の増減も実装したいですね。

sekishun
投稿日時: 2004/7/10 11:04
新米
登録日: 2004/6/24
居住地:
投稿: 7
Re: MyAlbumのcat_listの説明文に関して。

………やはりまだまだ自分には敷居が高かったようです(^^;)
xoops_myalbum_photosをいじろうと思ったのですが、xaio3内でこのファイルを探した際、htdocsの中ではなくmysql内にありました。そこで問題が生じたのですが、現在使っているサーバーxreaはレンタルサーバーですのでmysqlは自分でいじることが出来ません。
それとeditphoto.phpなどもいじったのですが、DB error: INSERT photo tableと表示されたり、photo.phpをいじった結果画像が表示されなかったり、難関が山積みです。

やはりまだまだ自分には力が足りなかったみたいです。
ですが自分の我が儘や失敗の愚痴に付き合って頂いた上、わざわざ色々なアドバイスをして頂きそして、貴重な早朝の時間を割いて頂きありがとうございましたm(_ _)m
引用:
……う〜ん、やっぱり、敷居が高いかも。
次にこのモジュールを本格的にいじるときには、項目の増減も実装したいですね。

焦らずにゆっくりとそしてお体を大切にしてモジュールをいじっていって下さい。

hodaka
投稿日時: 2004/8/31 12:10
長老
登録日: 2003/5/30
居住地: 東京都
投稿: 380
Re: MyAlbumのcat_listの説明文に関して。

GIJOEさん、こんにちは。
現在取り組んでるサイトでもこのsmarty pluginを使わせてもらおうと考えています。

引用:
GIJOEさんは書きました:

こんな感じのファイルを、class/smarty/plug-ins/modifier.mbtruncate.php として保存します。
あとは、テンプレート側、例えば、myalbum_photo_in_list.html にて、

1
            <{$photo.description|mbtruncate:100}>

とかすれば、100byteの位置で切れます。途中で切れた場合には、'...' がつきます。

ここの'...'の部分なんですが、

1
'...<a href="<{$mod_url}>/photo.php?lid=<{$photo.lid}>">続きを読む</a>'

としてリンクを表示したいのですが、テンプレート変数を使うとうまく動作しません。これを解決するにはどうすればよろしいでしょうか?
識者のアイデアがありましたら、どうぞよろしくお願いします。


----------------

kuri3.net XOOPS実験室主宰 & ホダ塾で勉強会してます。

GIJOE
投稿日時: 2004/9/1 12:58
長老
登録日: 2003/4/3
居住地:
投稿: 2137
Re: MyAlbumのcat_listの説明文に関して。

HODAKAさん、こんにちは。

引用:
ここの'...'の部分なんですが、
1
'...<a href="<{$mod_url}>/photo.php?lid=<{$photo.lid}>">続きを読む</a>'

としてリンクを表示したいのですが、テンプレート変数を使うとうまく動作しません。これを解決するにはどうすればよろしいでしょうか?

パズルとして面白いのでちょっとやってみまいた。
ハードルが2つありましたね。

まず、modifier.mb_truncate.php の方ですが、

1
        // $length -= strlen($etc);

と、コメントアウトして下さい。
DB格納用であれば、'...' を付与した後の文字数も、指定字数内に収める必要があるでしょうが、この場合は元々の用途から考えてまったく不要な処理でしょう。

もう一つが問題で、ちょっとだけトリックが必要です。
テンプレート myalbum*_photo_in_list.html の最後の方:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
   <{* DESCRIPTION *}>
 
    <{if $photo.description}>
      <table border='0' cellpadding='0' cellspacing='0' width='100%' class='outer'>
        <tr>
          <td class='odd'>
            <{assign var="photo_lid" value=$photo.lid}>
            <{$photo.description|mb_truncate:40:"...<a href='$mod_url/photo.php?lid=$photo_lid'>続きを読む</a>"}>
          </td>
        </tr>
      </table>
    <{/if}>

と、assign を使って、配列要素を一般変数に渡す必要があります。
こうせずに、$photo.lid としても、配列$photo として扱われてしまうのです。
PHP4のように、"{$photo[lid]}" みたいな方法があれば、もっと楽でしたが。

ともあれ、お試し下さい。

hodaka
投稿日時: 2004/9/1 14:28
長老
登録日: 2003/5/30
居住地: 東京都
投稿: 380
Re: MyAlbumのcat_listの説明文に関して。

GIJOEさん、こんにちは。またお世話になりまして。おかげでうまく動作させることができました。

引用:
assign を使って、配列要素を一般変数に渡す必要があります。
こうせずに、$photo.lid としても、配列$photo として扱われてしまうのです。
PHP4のように、"{$photo[lid]}" みたいな方法があれば、もっと楽でしたが。

一般変数として扱わせるところがミソなんですね。Smartyでassign,var,valueの使い方を初めて知りました。Smartyのことをもっと勉強しなきゃだめですね。 :-D

それから、参考情報なのですが、本文の中にhtmlタグが入っており、

1
<{$photo.description|mb_truncate:40:"...<a href='$mod_url/photo.php?lid=$photo_lid'>続きを読む</a>":true}>

としなければ表示がおかしくなりました。modifier.mb_truncate.phpの

1
2
if (!$break_words)
 $string = preg_replace('/\s+?(\S+)?$/', '', mb_strcut($string, 0, $length+1));

にはセパレータとして機能させることができるという意味があるんですね。正規表現が苦手で苦し紛れにトライしているうちに発見しました。 :-D


----------------

kuri3.net XOOPS実験室主宰 & ホダ塾で勉強会してます。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 
To Top