まえがき
モジュールSimpleNews、通知などの存在について知っています。 既存のモジュールを使用してこれを行う方法に関する指示もあります。 サイト上で最も簡単な電子メール配信を可能にするために、あまりにも多くのことをする必要があるように思えます。 この状況を少し修正することにしました。 モジュールは独創性と天才を主張していません。 モジュールの構成と使用を簡単にしたかったのです。
メール購読モジュール
モジュール設定ページ:
![](https://habrastorage.org/getpro/habr/post_images/e69/bff/3c5/e69bff3c5475ba13e39071c9284d0f4f.gif)
ここでは、次のオプションを構成できます。
- 手紙がユーザーに送信されるメールアドレス。
- ニュースレターに参加する資料の種類。
- 郵送間隔;
- cronの起動ごとに送信される文字の数。
- 新しいコンテンツの通知、電子メールの確認、サブスクリプションの解除、サブスクリプションの更新のための電子メールテンプレート。
購読しているユーザーのリストを含むページ:
![](https://habrastorage.org/getpro/habr/post_images/cb5/9cd/224/cb59cd224dc4edf828aa8aef8d130b68.gif)
モジュール操作アルゴリズム
表があります:
CREATE TABLE IF NOT EXISTS `email_subscribe_readed_nodes` ( `rn_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Field ID', `rn_nid` int(10) unsigned DEFAULT NULL COMMENT 'Node ID', `rn_sid` int(10) unsigned DEFAULT NULL COMMENT 'Subscribe user id', `rn_status` smallint(6) NOT NULL DEFAULT '0' COMMENT '0-email don't send, 1-email has been sented.', `datechange` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date of change', PRIMARY KEY (`rn_id`), KEY `rn_nid` (`rn_nid`), KEY `rn_sid` (`rn_sid`), KEY `rn_status` (`rn_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- 電子メールを確認するか、新しいマテリアルを作成すると、このテーブルには、サブスクリプションのノードIDとユーザーIDの値が入力されます。
- 電子メールを確認すると、現在のユーザー向けにこれまでに公開されたすべての資料が既読としてマークされます。
- 素材を作成するとき、作成された素材は、各リーダーに対して未読としてマークされます。
- cronが開始されると、未読の資料があるユーザーに電子メールが送信され、この資料には既読のマークが付けられます。
ユーザーインターフェース
ブロックとサブスクリプションフォームのあるページがあります。 私にはブロックがより便利だと思われるため、メニューのリンクを無効にすることができます。 ブロックはデフォルトで無効になっています。 ユーザーが電子メールアドレスを入力すると、いくつかのシナリオがあります。
- ユーザーが以前に登録されていない場合、確認メールへのリンクを記載したメールがユーザーに送信されます。
- ユーザーがメールを確認していない場合、メールを再確認するように求められます。
- ユーザーが購読している場合、購読をキャンセルするように提案されます。
- ユーザーがサブスクリプションをキャンセルした場合、サブスクリプションを更新するように求められます。
いずれの場合も、選択したアクションを確認するためのリンクが記載されたレターがユーザーに送信されます。
コメントや提案を待っています。
モジュールはBSDでライセンスされています。 Githubおよびdrupal.orgのサンドボックスにあるソースコード。
UPD:
小さなバグを修正しました。サブスクリプション形式の登録ユーザーの場合、メールはデフォルトでした。匿名ユーザーの場合、$ユーザーオブジェクトにmailプロパティがないというエラーがポップアップしました。
UPD 2:
バグ修正:サブスクリプションフォームの$ form ["#action"]は相対ではなく、絶対でした(スラッシュは失われました)。
UPD 3:
テーブル「email_subscribe_readed_nodes」を埋めるためのアルゴリズムを少し変更しました。 以前は、公開された資料のみが含まれていましたが、現在は「未読」ステータスで公開されていません。
2015年3月20日からのUPD 4:
バージョン1.0.3.2に更新されました。
2015年3月26日からのUPD 5:
バージョン1.0.3.3に更新されました 。
12.24.2015からのUPD 5:
バージョン1.0.4に更新されました 。
2016年12月12日のUPD 6:
バージョン1.0.5に更新されました 。
2017年1月18日からのUPD 7:
バージョン1.0.5.1に更新されました 。
2019年4月13日からのUPD 8:
バージョン1.0.7に更新しました 。