Hooks (from development document)の和訳
TYPOlightの開発者向けドキュメントHooksの和訳です。独自で作成する機能拡張にフックを組み合わせることで、TYPOlightが実行するアクションへの割り込みが可能になります。設定ファイルで独自メソッドを呼び出すように設定するのでコアファイルを汚染することはありません。
ライセンスは、オリジナルに倣いますので表示-非営利-継承 3.0 Unportedです。
hookについて
フックによって、特定の順序に実行される特定のイベントで呼び出されるコールバック機能を登録することができます。ソースコードを修正せずに、カスタム機能をコアに加えることができます。(訳者注:実際にはこの文章は、開発者ドキュメントのインデックスにある紹介です)
利用可能なフック
- activateAccount
- addCustomRegexp
- checkCredentials
- createNewUser
- executePreActions
- executePostActions
- generateFrontendUrl
- getPageIdFromUrl
- getSearchablePages
- importUser
- loadFormField
- outputBackendTemplate
- outputFrontendTemplate
- parseBackendTemplate
- parseFrontendTemplate
- postDownload
- postLogin
- postLogout
- processFormData
- removeOldFeeds
- replaceInsertTags
- setNewPassword
- validateFormField
使用可能なフック
フックは、コア機能を広げるカスタム・コールバック機能を登録するのに用いられることができます。
あなたのTYPOlight拡張(config/config.php)の構成ファイルを開いて、以下のような行を加えてください:
<?php $GLOBALS['TL_HOOKS']['activateAccount'][] = array('User', 'activateAccount'); ?>
簡単な使用例と一緒に使用できるフックリストを次にあげます。
activateAccount
新しいフロントエンド・アカウントがアクティブにされるとき、activateAccountフックは引き起こされます。それは引数としてユーザーオブジェクトを渡し、戻り値を要求しません。バージョン2.4.3以上で利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['activateAccount'][] = array('MyClass', 'activateAccount');
// MyClass.php
public function activateAccount(Database_Result $objUser)
{
// Do something
}
?>
addCustomRegexp
未知の正規表現が見つけ出されるとき、addCustomRegexpフックは引き起こされます。それは引数としてその未知の正規表現、現在の値とウィジェットオブジェクトの名前を渡して、ブールの戻り値を必要とします。バージョン2.6.2から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['addCustomRegexp'][] = array('MyClass', 'addCustomRegexp');
// MyClass.php
public function addCustomRegexp($strRegexp, $varValue, Widget $objWidget)
{
if ($strRegexp == 'postal')
{
if (!preg_match('/^0-9{4,6}$/', $varValue))
{
$objWidget->addError('Field ' . $objWidget->label . ' should be a postal code.');
}
return true;
}
return false;
}
?>
checkCredentials
間違ったパスワードのためにログイン処理が失敗するとき、checkCredentialsフックは引き起こされます。それは引数としてユーザー名とパスワードを渡して、ブールの戻り値を必要とします。バージョン2.6.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['checkCredentials'][] = array('MyClass', 'checkCredentials');
// MyClass.php
public function checkCredentials($strUsername, $strPassword)
{
// Check against a global database
if ($this->checkGlobalDbFor($strUsername, $strPassword))
{
return true;
}
return false;
}
?>
createNewUser
新しいフロントエンド・ユーザーがウェブサイトで登録するとき、createNewUserフックは引き起こされます。それは引数として新しいユーザーとデータ配列のIDを渡して、戻り値を必要としません。バージョン2.2.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['createNewUser'][] = array('MyClass', 'createNewUser');
// MyClass.php
public function createNewUser($intId, $arrData)
{
// Modify the record
}
?>
executePreActions
executePreActionsは、Ajaxリクエストによって引き起こされます。それは引数としてアクションの名前を渡して、戻り値を必要としません。バージョン2.6.1から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['executePreActions'][] = array('MyClass', 'executePreActions');
// MyClass.php
public function executePreActions($strAction)
{
if ($strAction == 'update')
{
// Do something
}
}
?>
executePostActions
executePostActionsは、Ajaxリクエストによって引き起こされます。それは引数としてアクションの名前とデータ・コンテナ・オブジェクトを渡して、戻り値を必要としません。バージョン2.6.1から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['executePostActions'][] = array('MyClass', 'executePostActions');
// MyClass.php
public function executePostActions($strAction, DataContainer $dc)
{
if ($strAction == 'update')
{
// Do something
}
}
?>
generateFrontendUrl
generateFrontendUrlフックは、フロントエンドURLがつくられているとき引き起こされます。それは引数としてページ・オブジェクト、パラメータ文字列とデフォルトURLを渡して、戻り値としてストリングを必要とします。バージョン2.5.8から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['generateFrontendUrl'][] = array('MyClass', 'generateFrontendUrl');
// MyClass.php
public function generateFrontendUrl(Database_Result $objPage, $strParams, $strUrl)
{
return str_replace('.html', '.xml', $strUrl);
}
?>
getPageIdFromUrl
getPageIdFromUrlフックは、URLフラグメントが評価されているとき引き起こされます。それは引数としてURLフラグメントの配列を渡して、戻り値としてURLフラグメントの配列を必要としますバージョン2.5.4から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('MyClass', 'getPageIdFromUrl');
// MyClass.php
public function getPageIdFromUrl($arrFragments)
{
return array_unique($arrFragments);
}
?>
getSearchablePages
検索インデックスが作り直されるとき、getSearchablePagesフックは引き起こされます。それは引数としてページの配列とルート・ページのIDを渡して、戻り値として、ページの配列を必要とします。(ページの配列の要素はページに対する絶対URLです!)バージョン2.2.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['getSearchablePages'][] = array('MyClass', 'getSearchablePages');
// MyClass.php
public function getSearchablePages($arrPages, $intRoot)
{
return array_merge($arrPages, array('Additional pages'));
}
?>
importUser
ユーザー名がデータベースで見つけ出されないとき、importUserフックは引き起こされます。それは引数としてユーザー名、パスワードとテーブル名を渡して、ブールの戻り値を必要とします。バージョン2.6.3から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['importUser'][] = array('MyClass', 'importUser');
// MyClass.php
public function importUser($strUsername, $strPassword, $strTable)
{
if ($strTable == 'tl_member')
{
// Import user from an LDAP server
if ($this->importUserFromLdap($strUsername, $strPassword))
{
return true;
}
}
return false;
}
?>
loadFormField
フォーム・フィールドがロードされるとき、loadFormFieldフックは引き起こされます。それは引数としてウィジェットとフォームIDを渡して、戻り値としてウィジェットを待っています。バージョン2.5.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['loadFormField'][] = array('MyClass', 'loadFormField');
// MyClass.php
public function loadFormField(Widget $objWidget, $intForm)
{
$objWidget->class = 'myclass';
return $objWidget;
}
?>
outputBackendTemplate
バックエンド・テンプレートが画面に出力されるとき、outputBackendTemplateなフックは引き起こされます。それは引数としてテンプレート・コンテンツとテンプレート名を渡して、戻り値としてテンプレート・コンテンツを必要とします。バージョン2.6.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['outputBackendTemplate'][] = array('MyClass', 'outputBackendTemplate');
// MyClass.php
public function outputBackendTemplate($strContent, $strTemplate)
{
if ($strTemplate == 'be_main')
{
// Modify output
}
return $strContent;
}
?>
outputFrontendTemplate
フロントエンド・テンプレートが画面に出力されるとき、outputFrontendTemplateなフックは引き起こされます。それは引数としてテンプレート・コンテンツとテンプレート名を渡して、戻り値としてテンプレート・コンテンツを必要とします。バージョン2.6.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('MyClass', 'outputFrontendTemplate');
// MyClass.php
public function outputFrontendTemplate($strContent, $strTemplate)
{
if ($strTemplate == 'fe_page')
{
// Modify output
}
return $strContent;
}
?>
parseBackendTemplate
バックエンド・テンプレートがパースされるとき、parseBackendTemplateなフックは引き起こされます。それは引数としてテンプレート・コンテンツとテンプレート名を渡して、戻り値としてテンプレート・コンテンツを必要とします。バージョン2.6.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['parseBackendTemplate'][] = array('MyClass', 'parseBackendTemplate');
// MyClass.php
public function parseBackendTemplate($strContent, $strTemplate)
{
if ($strTemplate == 'be_main')
{
// Modify output
}
return $strContent;
}
?>
parseFrontendTemplate
フロント・エンドテンプレートがパースされるとき、parseFrontendTemplateなフックは引き起こされます。それは引数としてテンプレート・コンテンツとテンプレート名を渡して、戻り値としてテンプレート・コンテンツを必要とします。バージョン2.6.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = array('MyClass', 'parseFrontendTemplate');
// MyClass.php
public function parseFrontendTemplate($strContent, $strTemplate)
{
if ($strTemplate == 'ce_text')
{
// Modify output
}
return $strContent;
}
?>
postDownload
ファイルがダウンロードされたあと、postDownloadフックは引き起こされます。それは引数としてファイル名を渡して、戻り値は不要です。バージョン2.4.6から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['postDownload'][] = array('MyClass', 'postDownload');
// MyClass.php
public function postDownload($strFile)
{
// Do something
}
?>
postLogin
ユーザーがフロントエンドにログインしたあと、postLoginフックは引き起こされます。それは引数としてユーザーオブジェクトを渡して、戻り値を必要としません。バージョン2.4.3から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['postLogin'][] = array('MyClass', 'postLogin');
// MyClass.php
public function postLogin(Database_Result $objUser)
{
// Do something
}
?>
postLogout
ユーザーがフロント・エンドからログアウトしたあと、postLogoutフックは引き起こされます。それは引数としてユーザーオブジェクトを渡して、戻り値を必要としません。バージョン2.4.3から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['postLogout'][] = array('MyClass', 'postLogout');
// MyClass.php
public function postLogout(Database_Result $objUser)
{
// Do something
}
?>
processFormData
フォームが提出されたあと、processFormDataフックは引き起こされます。それは引数としてフォーム・データ配列、テーブル構成配列とファイル配列を渡して、戻り値を必要としません。バージョン2.4.4から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['processFormData'][] = array('MyClass', 'processFormData');
// MyClass.php
public function processFormData($arrPost, $arrForm, $arrFiles)
{
// Do something
}
?>
removeOldFeeds
古いXMLファイルが削除されるとき、removeOldFeedsフックは引き起こされます。それは引数はなく、戻り値として配列のファイル名を必要とします。バージョン2.5.8から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['removeOldFeeds'][] = array('MyClass', 'removeOldFeeds');
// MyClass.php
public function removeOldFeeds()
{
return array('custom.xml');
}
?>
replaceInsertTags
未知の挿入タグが見つけ出されるとき、replaceInsertTagsフックは引き起こされます。それは引数として挿入タグを渡して、戻り値として置き換え値またはfalseを必要とします。バージョン2.6.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('MyClass', 'replaceInsertTags');
// MyClass.php
public function replaceInsertTags($strTag)
{
if ($strTag == 'mytag')
{
return 'mytag replacement';
}
return false;
}
?>
setNewPassword
新しいパスワードが指定されたあと、setNewPasswordフックは引き起こされます。それは引数としてユーザーオブジェクトと暗号化パスワードを渡して、戻り値を必要としません。それは、バージョン2.2.3から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['setNewPassword'][] = array('MyClass', 'setNewPassword');
// MyClass.php
public function setNewPassword(User $objUser, $strPassword)
{
// Do something
}
?>
validateFormField
フォーム・フィールドが提出されるとき、validateFormFieldフックは引き起こされます。それは引数としてウィジェットとフォームIDを渡して、戻り値としてウィジェットを必要とします。バージョン2.5.0から利用できます。
<?php
// config.php
$GLOBALS['TL_HOOKS']['validateFormField'][] = array('MyClass', 'validateFormField');
// MyClass.php
public function validateFormField(Widget $objWidget, $intId)
{
if ($objWidget instanceof FormPassword)
{
// Do something
}
return $objWidget;
}
?>