昨日は、基本的なLatestNewsベースのモジュールを作成しました。今日は、その作成したExampleモジュールに日時表示とユーザ名を表示し、言語ファイルを追加してみます。対象は、これも画像を見てコードを書ければ可能なレベルです。
左が、完成後の画像です。ユーザ名と作成日が表示されています。
今回の目標は、わずかですがレスポンスの向上と機能の追加方法をざっと見ていきます。オリジナルのJoomla!でも十分な機能はありますが、少し工夫したいときなど簡単に実装できることが理解できると思います。
日本ではあまりエクステンションを作成している方を見かけませんが(実際にはたくさんおられると思うが)、そんなに知識がなくとも簡単に改良して機能アップ可能です。
まずは、昨日作成したmod_exampleには言語ファイルが無かったので言語ファイルを追加してみます。
mod_example.xmlを開きます。(UTF-8)
上は、変更前のファイル。下の画像のようにlanguagesノードを書き加えます。
そしてmod_exampleフォルダ内に書き加えたiniファイルと同じ名前のファイルを作成します。

あ、ひとつja-JUのファイル名が間違っています。Joomla!の場合、命名ルールがあってファイル名が間違っていると表示されなかったり、動かなかったりするので注意してください。
それぞれの言語ファイルを編集します。今回は、latestnewsのコピーと言えるものなので、その通りlatestnewsからコピーすることにします。フロントエンドのモジュールの場合、言語ファイルは、以下の場所にありますのでそこから各言語毎に新しく作成した言語ファイルに内容をコピーペーストします。たとえば、en-GB.mod_latestnews.iniからen-GB.mod_example.iniへコピーです。
Joomla ルート/languages/各言語/
* 言語ファイルは、他のファイル同様、UTF-8(BOM無し)で作成されています。対応するエディタで編集を行ってください。
ひとまず、コピーし終えたらとりあえず、言語ファイルは完了です。
次に機能の追加と改善のためにhelper.phpを開きます。UTF-8(BOM無し)
ここからは、かなり変更している部分があるので注意してください。
変更点
-
102行目から117行目までが無くなっています。
これは、そのままだと表示するときのループとデータを作成するときのループで計2回ループするところを表示するときのループのみの1回で済ませるために消しました。たとえば表示数が10個だと20回回転しますが、それが10回になるということです。 -
85行目のSELETから続く部分を必要な値のみを取り出すように変更しました。
記事量や、環境によって影響は異なりますが、以前に20000記事だったか、たくさんの記事でテストしたときこの部分がかなりレスポンスに影響していたことを記憶しています。これは、mostreadモジュール他にも言えることです。 - 92行目にユーザ名を表示するためのテーブルを追記しています。
- 102行目でreturn しています。
次にテンプレートのdefault.phpを編集します。
上が元のファイルです。
-
変更後の3~10行目
- $moduleclass_sfx : ループ内で何度も参照するよりループ外で一度の参照にした。
- $show_name : Authorを表示するかどうかのフラグ
- $show_date : 日付を表示するかどうかのフラグ
- $user : アクセスしているユーザー情報
- $aid : ユーザーのアクセスレベル
-
変更後の13~25行目
$show_name_typeのIf文は、ユーザ名を使うか名前を使うかでname値にユーザ名を入れています。
$item->accessのIf文は、アクセス権限があるか無いかで記事のリンクをログイン画面リンクか記事へのリンクかを分けています。(これは、元々helper.phpに書いてあったものです。) -
変更後の26~28行目
$moduleclass_sfxはパラメータからの参照を変更したもの。$item->textから$item->titleへ変更したのは、ループを一回にしているためです。 -
変更後の29~38行目
Authorの表示と日付の表示を行っています。smallタグでclassなど属性なしで書いていますが、実際はclassなどを追加して柔軟な表示ができるようにした方が良いと思います。
パラメータを追加したので管理画面から設定できるようにmod_example.xmlファイルを編集します。
上が元のmod_example.xmlのパラメータ部分です。
今回三つのパラメータ(show_name(Athorの表示/非表示)、show_name_type(ユーザ名か名前か)、show_date(日付の表示/非表示))を追加したので設定用のパラメータを追加しました。Joomla!は、XMLファイルにこのように書くだけでパラメータを追加していけるので楽です。
さて、最後に最初に作成した言語ファイルを修正します。パラメータや、テンプレートに新たに表示されるテキストが追加されたからです。以下の言語を追記します。
SHOW AUTHOR=Show Author
YES/NO SHOW AUTHOR=Yes/No Show Author
NAME TYPE=Name Type
PLEASE SELECT NAME OR USERNAME.=Please select Name or Username.
SHOW DATE=Show Date
YES/NO SHOW DATE=Yes/No Show Date
BY %S=by %s
日本語なら
SHOW AUTHOR=作者を表示
YES/NO SHOW AUTHOR=作者の表示/非表示
NAME TYPE=名前のタイプ
PLEASE SELECT NAME OR USERNAME.=名前かユーザ名を選択してください
SHOW DATE=日付の表示
YES/NO SHOW DATE=日付の表示/非表示
BY %S=作者:%s
編集するファイルは、作成した以下のファイルです。
en-GB.mod_example.ini
ja-JP.mod_example.ini
ja-JU.mod_example.ini
追記する場所は、行のはじめに#が無い場所ならどこでも良いです。
以上で昨日作成したmod_exampleの拡張作業は終わりました。mod_exampleフォルダ内のファイル・フォルダを全選択してZip圧縮し、インストールしてください。
今回、mod_exampleとして作成しましたが、exampleの部分をお好みの名前に変更すれば、オリジナルのLatestNewsモジュールができあがります。Joomla!標準のモジュールよりレスポンスは良いはずなのでインストールして使いましょう。
今度は、プラグインの作成例を書いてみたいと思います。









指定されていない記事が登録されないバグを修正しました。 アップデート方法 frontpage_update.phpを上書きしてください。 確認しているようでできていなかったようでし...