Privatemsg & ser Relationships と組み込みのユーザーメニューをサイドバーブロックとして使用しています。私が欲しいのは、リンク「マイメッセージ」と「マイフレンズ」の横に未読メッセージ数と保留中の友達リクエストを表示することです。
どうすればこれを行うことができますか?前もって感謝します。
モックアップ:
最後に@mohit_rocksの回答は役に立ちましたが、まったく機能しませんでした。これが私の回避策です(私が Drupal Commerce:ユーザーメニューの「チェックアウト」リンクを変更)から学んだことに基づいています & x保留中の関係ブロックがあります -この回答を投稿したことに注意してください2番目も):
YOURCUSTOMMOD.module
<?php function YOURCUSTOMMOD_unread_messages(){
global $user;
$unread_messages = privatemsg_unread_count($user);
return $unread_messages;
}
function YOURCUSTOMMOD_count_pending_relationships($account = NULL){
global $user;
$pending_relationships = user_relationships_load(array('requestee_id' => $user->uid, 'approved' => 0));
$count = 0;
if (is_array($pending_relationships) && !empty($pending_relationships)) {
foreach($pending_relationships as $requester_uid => $relationship) {
if($user->uid != $requester_uid) {
$count++;
}
}
}
return $count;
} ?>
template.php
<?php function YOURTHEME_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
$count = '';
$name_id = strtolower(strip_tags($element['#title']));
// add counters
if ($name_id == 'mis mensajes') {
$count = sineditmod_unread_messages();
$count = '('.l($count, $element['#href'], $element['#localized_options']).')';
}
if ($name_id == 'mis amigos') {
$count = sineditmod_count_pending_relationships();
$count = '('.l($count, 'relationships/received', $element['#localized_options']).')';
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . '<span class="count green">' . $count . '</span>' . "</li>\n";
}?>
注:キャッシュを消去することを忘れないでください!
これにより、未読のプライベートメッセージがDrupal 7.に返されます。
<?php
global $user; privatemsg_unread_count($user);
?>
詳細については this を参照してください
これにより、ログインしたユーザーの保留中の関係リクエストが返されます。
<?php
function _count_pending_relationships($account = NULL) {
$counts = &drupal_static(__FUNCTION__, array());
if (!$account || $account->uid == 0) {
global $user;
$account = $user;
}
if (!isset($counts[$account->uid])) {
$count = 0;
$pending_relationships = user_relationships_load(array('requestee_id' => $account->uid, 'approved' => 0), array('count' => TRUE));
if (!empty($pending_relationships)) {
foreach($pending_relationships as $requester_uid => $relationship) {
if($account->uid != $requester_uid) {
$count++;
}
}
}
$counts[$account->uid] = $count;
}
return $counts[$account->uid];
}
?>
詳細については this を参照してください。
上記の機能を使用して、ブロックを作成し、それぞれのリンクを作成できます。