e107の改造

日本語化ファイル

e107で遊ぼう屋で公開されているv.0.7.5用の日本語化ファイルに追記して、v.0.7.11用にしたものです。

e107.zip (2008/01/07版)

本家英語版のファイルと重複するファイルはないので、初めて導入する場合は、上記のファイルを解凍し、そのままアップロードするだけです。

news.phpをインデックスとしてアクセス

http://e107.tpot.tk/としてアクセスしても、http://e107.tpot.tk/news.phpと飛ばされてしまうが、そのままhttp://e107.tpot.tk/としてアクセスするための技。.htaccessに次のコードを入れる。

DirectoryIndex news.php

theme.phpの改行が削除されるのを回避する

  1. テーマのtheme.phpにGoogleの広告のコードを記述しても、改行が削除されて広告が表示されない。それを回避する。e107_themes/templetes/header_default.phpを開く。
    if (!function_exists("parseheader")) {
    	function parseheader($LAYOUT){
    		global $tp;
    		$tmp = explode("\n", $LAYOUT);
    		for ($c=0; $c < count($tmp); $c++) {
    			if (preg_match("/{.+?}/", $tmp[$c])) {
    				echo $tp -> parseTemplate($tmp[$c]);
    			} else {
    				echo $tmp[$c];
    			}
    		}
    	}
    }

    if (!function_exists("parseheader")) {
    	function parseheader($LAYOUT){
    		global $tp;
    		$tmp = explode("\n", $LAYOUT);
    		for ($c=0; $c < count($tmp); $c++) {
    			if (preg_match("/{.+?}/", $tmp[$c])) {
    				echo $tp -> parseTemplate($tmp[$c]);
    			} else {
    				echo $tmp[$c]."\n";
    			}
    		}
    	}
    }

    とし、改行を加える。

サイドバーのコメントの表示をカスタマイズ

サイドバーにフォーラムのコメント一覧とニュースなどのコメント一覧を並べると、書式の違いが気になります。それを統一します。

  • サイドバーのフォーラムのコメント一覧はテンプレートがありません。e107_plugin/forum/newforumpost_menu.phpの下の方に記述があります。
  • それ以外のコメント一覧は、e107_plugin/comment_menu/comment_menu_templete.phpの上の方に記述があります。
  • お好みに形式を変更してください。

サイドバーのコメントのユーザー名の更新に対応する

  • コメントのユーザー名は書き込んだ時点での表示名なので、その後ユーザーが表示名を変更しても以前のままです。そこで、ユーザーIDからユーザー名を取得し、表示名で更新するようにしました。
  • e107_handlers/comment_class.phpを開き、function getCommentDataの中の次の部分を探してください。
    //author
    $comment_author_id = substr($row['comment_author'] , 0, strpos($row['comment_author'] , "."));
    $comment_author_name = substr($row['comment_author'] , (strpos($row['comment_author'] , ".")+1));
  • この直下に次のコードを追加します。
    if($sql2 -> db_Select("user", "user_name", "user_id='".$comment_author_id."' "))
    	{
    		$row2 = $sql2 -> db_Fetch();
    		$comment_author_name = ($row2['user_name'] ? $row2['user_name'] : $comment_author_name);
    	}

FAQプラグインの不具合

FAQプラグイン(ver.4.2)で、コメントをつけると、該当するFAQではなく、違うFAQにコメントがついてしまいます。それを修正します。

  • e107_plugins/faq/faq.phpを開きます。
  • “// Actions”とコメントアウトしてある行を探します。
  • $tmp[2]を$tmp[3]にします。(2を3にするだけ)
    if (IsSet($_POST['commentsubmit']))
    {
        $tmp = explode(".", e_QUERY);
        $faq_from = intval($tmp[0]);
        $action = "cat";
        $idx = intval($tmp[2]);
     
        $pid = (IsSet($_POST['pid']) ? $_POST['pid'] : 0);
        $cobj->enter_comment($_POST['author_name'], $_POST['comment'], "faq", $idx, $pid, $_POST['subject']);
        $e107cache->clear("nq_faqtop_menu");
    }
    // Actions +++++++++++++++++++++++++++++

FAQプラグインのコメントをサイドバーに

FAQプラグイン(ver.4.2)で、コメントをつけても、サイドバーのコメント一覧に表示されません。

  • e107_handlers/comment_class.phpを開きます。
  • function getCommentDataの「// '3' was FAQ」とコメントアウトしている行を探します。
  • 処理内容を加えます。
    case '3' :	//	FAQ
    	if($sql2 -> db_Select("faq", "*", "faq_id='".$row['comment_item_id']."' "))
    	{
    		$row2 = $sql2 -> db_Fetch();
     
    		$ret['comment_type'] = COMLAN_TYPE_3;
    		$ret['comment_title'] = $tp -> toHTML($row2['faq_question'], TRUE,'emotes_off, no_make_clickable');
    		$ret['comment_url'] = e_BASE."e107_plugins/faq/faq.php?0.cat."
    			.$row2['faq_parent'].".".$row['comment_item_id'];
    	}
    	break;

メールのタイトルが途中で途切れるのを防ぐ

e107から送信されるメールは、UTF-8で新しいメールソフトでは文字化けしません。ただし、タイトルが途中で欠けてしまします。

  • e107_handlers/phpmailer/class.phpmailer.phpを開き、次の行を探す。
      /**
       * Encode a header string to best of Q, B, quoted or none.
       * @access private
       * @return string
       */
      function EncodeHeader ($str, $position = 'text') {
      $x = 0;
  • 「function…」の行と次の「$x = 0;」の行の間に
       if( $position == 'text' )
         return mb_encode_mimeheader( mb_convert_encoding( $str , mb_internal_encoding() , 'auto' ),"UTF-8", "B", "\n" );

    を挿入する。

ニュース投稿で'&lt;'と'&gt;'が変換されてしまう

記事の中で、'<'や'>'を説明するために'&lt;'と'&gt;'を使っても、再度編集しようと読み込むと'<'や'>'になってしまう。

  1. e107_admin/newspost.phpを開く
  2. 次の行を探す
    $_POST['data'] = $tp->toForm($_POST['data']);
  3. その直下に
    $_POST['data'] = str_replace(array("&lt;", "&gt;"), array("&amp;lt;", "&amp;gt;"), $_POST['data']);

    を挿入。