Posted by bzj00220 on August 13, 2013 at 8:18am
一般のかたに専門家を紹介するサイトを運営しています。
役割には「会員○○○」「一般会員」があります。
profile2を使って専門家のプロフィールには事務所名や本名・都道府県なども
登録されています
現在、
http://sample.jp/users/[user:name]
にアクセスするとユーザーのプロフィールが表示されるようになっています。
ページのタイトルはユーザー名になっています。
一般会員のページタイトルはそのままでいいのですが
専門家のプロフィールページのタイトルを
ユーザー名 | ○○県の○○○
のように設定したいと思っています。
なにかいい方法がありましたら教えていただければ幸いです。
Comments
カスタムモジュールの方法です
カスタムモジュールに hook_menu_alter() を設置して、タイトルコールバックを変更します。
<?php
/**
* hook_menu_alter() の実装
*/
function custom_menu_alter(&$items) {
// ユーザーページのタイトルをカスタマイズするため、タイトルコールバックを変更
$items['user/%user']['title callback'] = 'custom_user_page_title';
}
/**
* カスタムタイトルコールバック
*/
function custom_user_page_title($account) {
$username = is_object($account) ? format_username($account) : '';
// 役割「会員○○○」の rid を 5 とすると
if (isset($account->roles[5])) {
// 都道府県のフィールド名を 'field_state'
// profile2 のバンドルは Main profile とすると
$profile = profile2_load_by_user($account, 'main');
$items = field_get_items('profile2', $profile, 'field_state');
$field = field_view_value('profile2', $profile, 'field_state', $items[0]);
$state = drupal_render($field);
return $username . '|' . $state . '県の' . $account->roles[5];
} else {
return $username;
}
}
?>
※ 役割の rid はその役割の編集ページの url で分かります。
Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/
返信有難うございます。
カスタムモジュールですか・・・。
使ったことはないのですが、せっかくコードまで丁寧に書いていただいているので試してみたいと思います。
ありがとうございます。
試してみたんですができませんでした
shigehiroさんの方法は間違えていないんだと思いますが
正直、phpのコードを見てもなにが書いてあるか理解できていないので
私自身がどこか間違えているのだと思います。
カスタムモジュールを作って設置することはできるのですが
その後、コードをコピペして直すべきところを直して
書き込んだつもりなのですが、タイトル欄は変わりませんでした。
申し訳ありません。
もし、よろしければどなたかコードを書かないですむ方法があれば教えていただければ幸いです。
キャッシュをクリアしてもダメでしょうか?
キャッシュをクリアしてもダメでしょうか?
「環境設定」 > 「パフォーマンス」 > 「すべてのキャッシュをクリア」
Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/
返信ありがとうございます。 キャッシュをクリアするとタイト
返信ありがとうございます。
キャッシュをクリアするとタイトル欄が変更されましたが
いくつか問題点がありますので教えていただければ幸いです。
・今回の施策はSEO対策のために考えたものなので、HTMLソース内の
タグ内のページタイトルも同じように変更したいのですが
どうすればいいのでしょうか?
・都道府県のところが「福岡県」と表示されてしまうのですがこのHTMLタグを消すにはどうしたら良いのでしょうか?
・役割を会員○○○としているのですがページタイトルのところには
会員を表示せずに「福岡県の○○○」と表示させたいと思っています。
return $username . '|' . $state . '県の' . $account->roles[4];
を試しに
return $username . '|' . $state . '県の○○○';
としてみたのですがサイトが表示されなくなったので
慌ててもとに戻しました。
どのようにすればいいのでしょうか?
今回の施策はSEO対策のために考えたものなので、HTMLソ
ヘッダーのタイトルタグ(<title></title>)もこれで変更されているはずですが、どうなっていますか?
<?phpreturn $username . '|' . strip_tags($state) . '県の' . str_replace('会員', '', $account->roles[4]);
?>
で、どうでしょうか。
○○○ の部分が固定でよければ、
<?phpreturn $username . '|' . strip_tags($state) . '県の○○○';
?>
でも良いと思います。
Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/
ありがとうございました。
<?phpreturn $username . '|' . strip_tags($state) . 'の○○○';
?>
でリンクタグの問題も○○○の問題も解決出来ました。
ヘッダのタイトルタグの問題もよく確認してみたら、私がmetatagsモジュールを入れてそこでユーザーのページのタイトル部分を「[user:name]|[site:name]」と設定していたのが優先されていたみたいです。
試しにmetatagsモジュールでユーザーアカウントページのタイトルを空白にしてみたらヘッダのタイトルタグも空白になってしまいました。
こちらの方はmetatagsの設定でどうにかなるか、今から色々とためしてみるつもりです。
ヘッダのタイトルタグの問題はmetatagsモジュールの設
ヘッダのタイトルタグの問題はmetatagsモジュールの設定で解決出来ました。
ユーザーのページのタイトルの部分の設定を次にしたら思っていた通りになりました。
[user:name]|[user:profile-******:field-*******]の○○○|[site:name]
*****の部分はそれぞれプロファイルの名前とフィールドの名前が入ります。
やりたかったことはすべて解決しました。
ありがとうございました。