Joomler!.net - Decided on Joomla!

Wiki or Wordpress? No it is JContentPlus.

 

Archives

Blog

Demo

Home » Blog » mod_example LatestNews に機能追加と改善を施す
Jan
19
2010

mod_example LatestNews に機能追加と改善を施す

EMailPrintPDF
0 votes
Written by:Joomler! 8870 hits

昨日は、基本的なLatestNewsベースのモジュールを作成しました。今日は、その作成したExampleモジュールに日時表示とユーザ名を表示し、言語ファイルを追加してみます。対象は、これも画像を見てコードを書ければ可能なレベルです。

mod_example_extend_complete

左が、完成後の画像です。ユーザ名と作成日が表示されています。

 

今回の目標は、わずかですがレスポンスの向上と機能の追加方法をざっと見ていきます。オリジナルのJoomla!でも十分な機能はありますが、少し工夫したいときなど簡単に実装できることが理解できると思います。

日本ではあまりエクステンションを作成している方を見かけませんが(実際にはたくさんおられると思うが)、そんなに知識がなくとも簡単に改良して機能アップ可能です。

 

まずは、昨日作成したmod_exampleには言語ファイルが無かったので言語ファイルを追加してみます。

mod_example.xmlを開きます。(UTF-8)

before_add_langfiles_example 上は、変更前のファイル。下の画像のようにlanguagesノードを書き加えます。

 

after_additional_langfiles_example

そしてmod_exampleフォルダ内に書き加えたiniファイルと同じ名前のファイルを作成します。

additional_langfiles_mod_example

あ、ひとつ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無し)
ここからは、かなり変更している部分があるので注意してください。

mod_latestnews_helper2 上が元のファイル。下が変更後です。

mod_example_helper2

変更点

  • 102行目から117行目までが無くなっています。
    これは、そのままだと表示するときのループとデータを作成するときのループで計2回ループするところを表示するときのループのみの1回で済ませるために消しました。たとえば表示数が10個だと20回回転しますが、それが10回になるということです。
  • 85行目のSELETから続く部分を必要な値のみを取り出すように変更しました。
    記事量や、環境によって影響は異なりますが、以前に20000記事だったか、たくさんの記事でテストしたときこの部分がかなりレスポンスに影響していたことを記憶しています。これは、mostreadモジュール他にも言えることです。
  • 92行目にユーザ名を表示するためのテーブルを追記しています。
  • 102行目でreturn しています。

次にテンプレートのdefault.phpを編集します。

mod_latestnews_default

 

 

上が元のファイルです。

mod_example_default かなり変更しています。

  • 変更後の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ファイルを編集します。

latestnews_xml

上が元のmod_example.xmlのパラメータ部分です。

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!標準のモジュールよりレスポンスは良いはずなのでインストールして使いましょう。

今度は、プラグインの作成例を書いてみたいと思います。

License : GPL2.0
Type : application/x-zip-co
Hits : 2184
Size : 7,827 byte

Example Module Ex

Example Module of LatestNews Ex
 

ADD A COMMENT

Subject*
:
Color Swatch




Email Link Page Code Text Align Center Text Align Justify Text Align Left Text Align Right Text Bold Text Quote Text Italic Text List Bullets Text List Numbers Text Strikethrough Text Underline World Link
Sun Unhappy Smile Evilgrin Wink Tongue Lightning Surprised Grin Rain Clouds Cloudy Snow Waii
Name*
:
EMail*
:
Please answer....
Submit Preview

JContentPlus for Joomla!1.5 powered by Joomler!.net

Related Items

joomler.net is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla!(R) name is used under a limited license from Open Source Matters in the United States and other countries.
joomler.net is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.