私はこの投稿に遭遇しました: ユーザーのログイン後にphpコードを実行 と私は受け入れられたソリューションを実装しました。ただし、私の実装では、コンテンツをページに出力しようとしています。これは単に表示されません。私のモジュール名は「alert」で、コードは次のとおりです。
alert.module
<?php
function alert_user_login(&$edit, $account) {
for ($i=0; $i < 1000; $i++) {
echo 'hi<br>';
}
}
alert.install
<?php
function alert_install() {
// Set the module weight so it can override other modules.
db_query("UPDATE {system} SET weight = 99 WHERE name = 'alert'");
}
function alert_uninstall() {
// Remove the module from the system table
db_query("DELETE FROM {system} WHERE name = 'alert'");
}
alert.info
; $Id$
name = Alert
description = Present dialogs or perform redirects based on certain events
core = 7.x
これをテーマのtemplate.php
ファイルに実装しています。これでうまくいくでしょうか?
Template.phpでは機能しません。これをモジュールファイルに追加する必要があります。myTheme
の代わりに howto で確認してくださいmodulename
になりますモジュール名がfooそれからfoo_user_login
// @file : foo.module
function foo_user_login(&$edit, $account) {
fluenz_user_function($account->uid);
}
// and this function name was also different just an FYI
function fluenz_user_function($uid) {
for ($i=0; $i < 1000; $i++) {
echo 'hi<br>';
}
}
hook_user_login() および hook_user_logout() は、ページのコンテンツを変更するために使用されるとは考えられていません。彼らは、ユーザーがログインまたはログアウトした事実を記録し、最終的に drupal_set_message() でメッセージを設定すると考えられています。あなたが参照している質問の答えがコードの実行について話していることであることに気づくために、print()
またはecho()
を介して文字列を出力しません。
hook_user_login()
を使用して、グローバル変数、または別のフックから取得される静的変数( drupal_static() を参照)を設定できます。
ページのコンテンツを変更するために、他のフックがあります。どちらを使用するかは、何を実現したいかによります。