私はオーガニックグループを使用しています、Drupalコモンズ。誰かがグループで投稿した場合、すべてのメンバーにFacebookのように通知の数を通知する必要があります。このスクリーンプリントと同様に:
どうすればそれを達成できますか?
注記:
以下は、これを機能させる方法の青写真です。答えとしてマニュアルを書くことを避け、自分自身を繰り返すのを避けるために、他の答えへのリンクをいくつか使用します(それらすべてが私のものではありません...)。
Rules モジュールを使用して、いくつかのOrganicグループに属する、作成中の新しいノードに関するイベントをキャプチャします。 「[] send an eMail
」の2つの可能な選択肢について、「 ルールでオーガニックグループ名を取得しますか? 」のいずれかの回答を確認してください。グループの各メンバーに。
これで、あとで詳しく説明するように、「電子メールを送信する」ルールアクションを通知の数を表示するもの(質問のように)に置き換えるだけです。
Message モジュールもインストール/有効化します。前のステップのルールアクションを「電子メールを送信」するルールアクションに置き換えて、メッセージ「エンティティ」を作成します(これは Message モジュールを使用した場合に得られるものです)。そして Views の機能を使用して、後でそれらのメッセージを表示します(しばらくお待ちください:光沢のある通知ボタンのような形式で...)。
必要なものの概要は次のとおりです。
Message モジュールを使用して、適切なメッセージタイプを定義します。メッセージタイプは、ノードのようなメッセージの作成に使用される「コンテンツタイプ」と同様に考えてください。
(「メッセージ」タイプの)ルールアクション「エンティティの作成」でルールを拡張します。いくつかの例については、 メッセージタイプを設定するためのルールを作成するために使用できるユーザー関連のトークンはどれですか? の回答を参照してください。
Rules を介して、関連するトークンを置換トークンとして渡して、メッセージで使用できるルールアクションを追加することもできます。 Message モジュールで作成したタイプ。詳細については、 メッセージタイプの「置換トークン」の目的は何ですか? を参照してください。
Views を使用して、作成したメッセージを好みの形式で表示します。
メニューバッジ モジュールを使用して、メニュー項目および/またはメニュータブにこのような通知を追加できます。あなたの選択。以下に、その詳細(プロジェクトページから)を示します。
メニュー項目にiOSスタイルのバッジを追加する方法を提供します。 (スクリーンショットを参照)
メニューへのバッジの追加
有効にしたら、
Administration > Structure > Menus
に移動し、ターゲットアイテムを含むメニューの横にある[リンクをリスト]をクリックします。アイテムの横にある[編集]をクリックし、[メニューを表示]バッジ選択ボックスで表示するバッジを選択します。タブへのバッジの追加
メニュータブにバッジを追加するために、
Administration > Structure > Menus
の下に「タブメニューバッジ」というタブがあります。変更するタブのメニュールーターパスを検索し、対応する選択ボックスからバッジを選択します。バッジのタイプ
モジュールには5つのサンプルバッジが含まれており、新しいバッジは Views で簡単に作成できます。モジュールは、フック実装を使用して独自のバッジを提供することもできます。詳細は README.txt ファイルを参照してください。
Views モジュールとの統合方法により、基本的には、あらゆる種類の通知に対するソリューションを次のようなものに削減します。
ビデオチュートリアル:
上記の手順を完了すると、関連するメッセージに対応する光沢のある通知アイコンが表示されます。あとで説明するように、残っているのは、アイコン(つまり、そこに表示されているカウンター)を更新するための実装です。
オプション1 -メッセージを管理可能にします
このオプションにより、ユーザーは既読のメッセージと新着のメッセージ(=未読)を示すことができます。そのためには、「 ユーザーが自分のメッセージスタックメッセージを管理できるようにする方法 」で説明されている手順を実行するだけで、次のように要約できます。
オプション2 -パスにアクセスした後、通知アイコンを削除します
このオプションでは、ユーザーが専用パスにアクセスしてすべてのメッセージを表示した後、通知アイコンが完全に削除されます。方法の詳細については、「 ページが表示された後にメニューバッジを非表示にする方法 」の回答を参照してください。
FAB、この回答はしばらくの間終了しませんが、ピエールの回答に追加すると、FB機能に近づくことができます。
ピエール、ルールリンクに慣れていると思います。
CSSで非表示にできる以下のようなJSトグルを出力します。
<div class="rules-link-wrapper rules-link-messages_seen">
<a href="/seen/1234/_Rr4IZddvsd5kl8VtuNUqFyHPUHQ3LAepC-I1WzujWg" class="rules-link rules-link-js rules-link jquery-once-1-processed" rel="nofollow" title="Seen">Seen</a>
<span class="rules-link-message" style="display: none;">Link executed</span></div>
メニュー項目にクラス.menu_unread
があり、バッジが.badge_unread
である場合、次のようにしてVBOルールを起動できます。
$('.menu_unread').click( function () {
// Get the url from the JS link
var rules_link_url = $('.rules-link-messages_seen a').attr('href');
$.ajax({
type: 'POST',
url: rules_link_url,
dataType: 'json',
success: function () {
// Hide Badge.. Or you could fake set it to zero
$('.badge_unread').hide();
//So the rule fires once only
$(' menu Identifier ').removeClass('menu_unread');
}
});
});
これはフラグトグルでも機能しますが、デフォルトの動作のようにすぐにフラグを解除できません。
なぜこれを行うのですか?任意の要素のクリックからルールを起動します。