XOOPSの初期状態で実装されているコメント投稿に画像投稿機能を追加したいです。


モジュールはmxdirectoryです。何かいい方法、簡単に実現できる方法がありましたらご教授願います。

自分で試したのは以下の方法です。

1・DBのxoopscommentsテーブルに[com_image]というファイル名格納用のフィールドを追加。
2・class/xoopsformloader.php に下記の一行を入れ
  include_once XOOPS_ROOT_PATH."/class/xoopsform/formfile.php";
3・include/comment_form.php に下記の一行を入れ
  cform->addElement(new XoopsFormFile("画像の投稿", 'com_image', 50000));
  コメント投稿画面には画像の投稿という行及び、参照ボタンが出現。
4・inculude/comment_post.php に
画像ファイルを任意のディレクトリに置く処理をし、下記の一文を入れる
$comment->setVar('com_image', 画像ファイル名);
5・DBのxoopscommentsに追加したcom_imageに画像ファイル名が追加されず。という状況です。

xoops 2.0.16a JP を利用してます。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/10/10 14:50:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kinmoj No.1

回答回数2ベストアンサー獲得回数0

ポイント35pt

手前味噌で恐縮ですが・・・、コメント投稿に画像認証機能があるXOOPS JPExを使われてみてはいかがでしょうか?

XOOPS 2.0.16a JPからアップデートすることも可能です。

id:kinmoj No.2

回答回数2ベストアンサー獲得回数0

ポイント35pt

すみません、ボケてました。

画像認証が必要なのではなく、コメントの中に画像を入れたかったのですね。

失礼しました。

  • id:ruijio
    すみません、質問者です。遅くなってしまいすみません。

    kinmojさん、そうなんです。コメントにグルメ投稿サイトを作ろうと思ってるのですが、ユーザが自由に食べたメニューを投稿できるようにしたかったのですが・・・。

    また自分で調べてみます。ありがとうございました。
  • id:ruijio
    なんとか解決しました。
    ただし、コアな部分をいじくりまわしたのでお勧めできないと思います。
    自分自身、何が起こるかビクビクしてます。

    すでにうろ覚えですが、修正した内容を覚えているだけ書きます。

    1・まずDBのフィールド修正。
    xoopscommentsのフィールドで適当な場所に、com_imageフィールドを追加。ここに画像ファイル名が入るので、テキトーな文字列型に。

    2・include/comment_form.php
    ここでコメントフォームを吐き出している模様。入れたいところに
    $cform->addElement(new XoopsFormFile("画像の投稿", 'com_image', 500000));
    こんな感じで画像投稿のボックスを生成する。数字は画像最大サイズなので適当に入れる。

    更に

    $cform = new XoopsThemeForm(_CM_POSTCOMMENT, "commentform", 'comment_post.php')

    と言う部分でフォームタグ及び属性を生成しているのだけどを下記に変更。

    $cform = new XoopsThemeForm(_CM_POSTCOMMENT, "commentform", 'comment_post.php' , 'POST' ,false," enctype='multipart/form-data'");

    というのも画像を投稿するためには enctype='multipart/form-data' という部分が必要なので、それをformタグ内に入れるようにする。

    3・kernel/comment.php
    受け取る先のクラス(?)がそれに対応してないので対応させるようにする。そのためにはfunction XoopsComment内をいじる。

    $this->initVar('dobr', XOBJ_DTYPE_INT, 0, false);
    の下に、
    $this->initVar('com_image', XOBJ_DTYPE_TXTBOX, null, true, 255, true);
    を入れる。

    更に、DBに投稿するためのインサート文も変更
    $sql = sprintf("INSERT INTO %s ・・・・長いので省略。
    ここを前述のcom_imageを考慮したつくりに変更する。

    4・class/xoopsform/form.php

    function XoopsForm($title, $name, $action, $method="post", $addtoken = false){

    を下記に修正。

    function XoopsForm($title, $name, $action, $method="post", $addtoken = false , $extra){

    そのすぐしたの

    $this->_method = $method;

    の下に

    $this->_extra = $extra;

    を入れます。

    あとは

    include/comment_post.php

    ここで、投稿された画像($_FILES[])を

    image_magicやらupload_file_moveだかなんだかをつかって
    然るべき場所に格納してあげる。

    って感じだったと思います。



この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません