おすすめのエクステンション

皆さんが使っている、または薦めたいエクステンションを紹介してください

機能の概要や、使い方等の説明があれば、これ幸いです

とりあえずextensionを探すにはこちら

2011-03-31現在では、423個ほどあるみたいです

ページの右側にはリリース順、評価順、コメントが多い順、DLが多い順などに並び変えることができ

カテゴリで自分が求めているものを絞り、選ぶことも可能です

自分はまだextensionを2つしか試していないですが、「yii-user」の紹介を少し

ユーザ登録およびユーザアカウントの管理をする拡張で、機能として

  • ユーザ名、またはメールアドレスでのログイン

  • ユーザ登録

  • アクティベーションアカウント (確認メール, 管理者かどうか)

  • パスワードの再設定 (ユーザのメールに回復キーを送信)

  • ユーザーのプロフィールページ

  • ユーザ管理

  • プロフィールフィールドの管理

  • プロフィールウィジェットの表示、編集およびデータの保存

  • 日付ウィジェット ( jQueryUI datepicker )

  • ファイルアップロードウィジェット

  • プロフィール関係のウィジェット

  • API

などがあります ( 日本語訳間違っている箇所あれば報告お願いします )

データベースには

  • tbl_profiles

  • tbl_profiles_fields

  • tbl_users

の3つを追加します

tbl_profiles_fieldsは、ユーザのプロフィールに関することを細かく設定するテーブルです

YiiのModelsのrules()内の設定とよく似ていて

typeは何か、lengthのmaxはminは、requiredにするか、エラーメッセージの内容はどうするか、など

その他、プロフィールの順番、プロフィール公開のレベルなどもここで設定しているようです

tbl_profiles, tbl_usersは定番のカラムが入っています

また、全体の設定は、modules/user/UserModule.phpから行えます

( ここから個人的な設定にやや傾きますので、興味のある方のみ読んでもらえたら幸いです :) )

( ※以下は、わかりにくかったため、2010-03-31に修正しています )

次のリストは日本語翻訳に関すること、その他注意事項です

[list=1]

[*]messagesファイルにjaファイルを作成し日本語化する

[*]controllers/RecoveryController.php || UserModule::tの2箇所をmessages/ja/user.phpに追加し日本語化

  • You have requested the password recovery site {site_name}.

  • You have requested the password recovery site {site_name}. To receive a new password, go to {activation_url}.

[*]データベースのtbl_profiles_fieldsのtitleカラムの「Birthday」を「成年月日」に変更

[*]models/UserLogin.php || authenticate()修正 || http://www.yiiframework.com/extension/yii-user/#c2414

[*]プロフィールフィールド管理時にはtableに対するcreate, alter, drop権限が必要

[/list]

[color="#8B0000"]1.について[/color]

modules/user/messages/にjaファイルが用意されていないので

新しくjaファイルを作成し、日本語化していきます

( yii-userがまたバージョンアップされると、そのうちjaファイルもできるかと思います )

[color="#8B0000"]4.について[/color]

models/UserLogin.phpのauthenticate()修正に関しては

初期設定ではログイン時に

「ユーザ名、またはメールアドレス」と「パスワード」の2つでログイン処理をしますが

「ユーザ名、またはメールアドレス」を間違えると「ユーザ名、またはメールドレスが間違っています」

「パスワード」を間違えると「パスワードが間違っています」と表示されるので、セキュリティを考慮しての処置になります

また、その際に追加、変更する「ユーザ名、またはパスワードが間違っています」、「メールアドレス、またはパスワードが間違っています」の日本語メッセージをmodules/user/messages/jaに加えます

[color="#8B0000"]※追加[/color]

サンプルとして日本語ファイル置いておきます 1421

user.php

modules/user/messages/にjaディレクトリを作成して、そこへ設置してみてください

UWerlBelongsTo.phpはそれぞれで設置してください

yiidebugtb

プロジェクト開発段階で便利な拡張です。

ページの上部にあるシンプルで小さなツールバーを使用して

ベンチマーク、クエリログ、PHPの環境、アプリケーションに関する情報を得るのに役立ちます

設置が比較的簡単なので、試してみてください

ついでに動くまでのノウハウを書いて頂ければ幸いです。お勧めに従い設置してみましたが、

  1. {{users}}でエラーとなる

  2. これを直しても

The table "tbl_users" for active record class "User" cannot be found in the database.

というエラーが出る

ということですんなりは動きませんでした。モジュールが見るデータベースはmodules/user/dataの下に置くのでしょうか?

一応の確認ですが、yii-userをDLするとトップディレクトリ名がmodulesですが、

これをprotected/extensions/に設置するのではなく、protected/に設置します

あと、protected/config/main.php内に「tablePrefix」の追加をします


'db'=>array(

    'connectionString' => 'mysql:host=localhost;dbname=sample',

    'emulatePrepare' => true,

    'tablePrefix' => 'tbl_', // これを追加してみて下さい

    'username' => 'testuser',

    'password' => 'testpass',

    'charset' => 'utf8',

),



また、ユーザの新規登録などをlocalhostで行う場合は

modules/UserModule.php内を変更する必要があります


public $sendActivationMail=false; // アクティベーションメールを送らないようにする

public $activeAfterRegister=true; // ユーザの新規登録後はstatusを自動的に1にする

この2つは2つで1つの役割みたいなので

一方をfalseにすると、もう一方をtrueにしないといけないと思います (逆も同じ)

statusは-1がBanned(禁止)、0がNot active(無効)、1がActive(有効)です。

初期設定のままだと

[list=1]

[*]ユーザの新規登録を行う

[*]メール送信

[*]そのメール内のリンクをクリックする

[*]ユーザがActiveになる

[*]ログインできる

[/list]

という流れですが、それを

[list=1]

[*]ユーザの新規登録を行う

[*]自動的にActiveになる

[*]ログインできる

[/list]

という流れに、開発段階ではできるようになっているみたいです

これを直さず、そのままにしてもう一度試してみてください

あと、sqliteでテストされていますか?自分はMySQLでテストしています

はい、これはOKです。

これがありませんでした。入れてトライしましたが、元に戻したところ以下のエラーが出ます。

The table "{{users}}" for active record class "User" cannot be found in the database.

他のユーザからのコメントでは直すように書かれてありました。またSQLiteでテストしています。

yii-userをsqliteで試してみました ( 環境はWindowsXPのXAMPP )。以下順序です

[list=1]

[*]yiic webappでアプリケーション作成

[*]modulesディレクトリをprotected/に置く

[*]protected/config/main.phpを編集

[*]modules/user/data/schema.sqlite.sqlの中身をコピーし、実行

[*]protected/views/layouts/main.phpにyii-user用のコードを挿入

[/list]

3.の詳細


<?php

return array(

	'import'=>array(

		'application.models.*',

		'application.components.*',

		'application.modules.user.models.*', // 追加

		'application.modules.user.components.*', // 追加

	),

	'modules'=>array(

		'user',

	),

	'components'=>array(

		'user'=>array(

			'allowAutoLogin'=>true,

			'loginUrl' => array('/user/login'), // 追加

		),

		'db'=>array(

			'tablePrefix' => 'tbl_', // 追加

			'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/sample.db',

		),

        ),

);

4.の詳細

  • >sqlite3.exe D:\xampp\htdocs\sample\protected\data\sample.db

  • > // protected/modules/user/data/schema.sqlite.sqlの中身をコピーし、貼り付け

5.の詳細


<?php $this->widget('zii.widgets.CMenu',array(

	'items'=>array(

		array('label'=>'Home', 'url'=>array('/site/index')),

		array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),

		array('label'=>'Contact', 'url'=>array('/site/contact')),

		array('url'=>Yii::app()->getModule('user')->loginUrl, 'label'=>Yii::app()->getModule('user')->t("Login"), 'visible'=>Yii::app()->user->isGuest),

		array('url'=>Yii::app()->getModule('user')->registrationUrl, 'label'=>Yii::app()->getModule('user')->t("Register"), 'visible'=>Yii::app()->user->isGuest),

		array('url'=>Yii::app()->getModule('user')->profileUrl, 'label'=>Yii::app()->getModule('user')->t("Profile"), 'visible'=>!Yii::app()->user->isGuest),

		array('url'=>Yii::app()->getModule('user')->logoutUrl, 'label'=>Yii::app()->getModule('user')->t("Logout").' ('.Yii::app()->user->name.')', 'visible'=>!Yii::app()->user->isGuest),

	),

)); ?>

この流れで問題なくいけました

もしかすると、Yiiのバージョンの問題かもしれません ( yiii-userはYii 1.1以上で動作 )

image - 画像のサムネイルなんかを簡単に作れるextension。使い方もとてもシンプル!便利!

MongoDBに書き出すログのエクステンションを作ってみました。

ttp://aoyagikouhei.blog8.fc2.com/blog-entry-174.html

最初の投稿なのでリンクが含められず、先頭のhを抜かしています。

リンクは :) ←このマークの隣のアイコンから貼れます

また、こちらの「Create extension」から

自作したエクステンションをYiiユーザに向けて公開することもできます

話は変わりますが

最近公開されたyii-debug-toolbarがとても使いやすいです

protected/extensions下に設置し、以下のコードをconfig/main.phpに足すだけです。是非!




'db'=>array(

	...

	'enableProfiling'=>true,

	'enableParamLogging'=>true,

),

'log'=>array(

	'class'=>'CLogRouter',

	'routes'=>array(

		array(

			'class'=>'ext.yii-debug-toolbar.YiiDebugToolbarRoute',

		),

	),

),

リンクボタンを試したんですが、最初の投稿のため使えないそうです。スパム対策か何かなんでしょう。

同様の理由でエクステンションの公開も制限されています。

しばらく、フォーラムに書き込んで修行しろみたいなこと言われました。

スパム対策みたいです Guidelines for posting this forum

「このフォーラムのスパム活動を減らすために、以下の制限が適用されることに注意してください」とのことです

  • 新しくアカウントを登録した場合、最初の投稿まで10分待たないといけない

  • 新しくアカウントを登録した場合、12時間の間に、最大2件までしか投稿ができない

  • 投稿が3件未満のアカウントは、他のメンバーのプロフィールページに、コメントすることはできない

  • 新しい記事を作成する際に、投稿が3件未満のアカウントは、スパムフィルタのチェック対象となる

[list]

  • スパム用語が含まれている場合、新しい投稿を拒否される

  • 外部リンクが含まれている場合、新しいポストを拒否される

[/list]

1日1件投稿して、3日で条件満たされる感じですかね?

少し前まではなかったと思いますが、より健全なフォーラムになることはありがたいです

セッションの情報をMongoDBに保存するエクステンションを作成しました。

Yiiフレームワーク用MongoDBセッション

最近使ってよかったものです

dbprofiler http://www.yiiframework.com/extension/dbprofiler/

bootstrap http://www.yiiframework.com/extension/bootstrap/

自分のブログに簡単なやり方も載っけておきました。興味がある方は是非どうぞ

Yii dbprofilerを使ってみた http://livejamdb.blogspot.com/2011/09/yii-dbprofiler.html

Yii bootstrapを使ってみた http://livejamdb.blogspot.com/2011/09/yii-bootstrap.html