はじめに

PHPListで困ったことがあったので、対処法を書き留めておきます。
なお、情報の正確性には責任を持てません…。もしいい方法があれば教えて頂きたいです。

Contents

現象

PHPListでは、リストをいくつか作って複数のメールマガジンを配信することができます。
購読者はメールマガジンへの登録・解除ができますが、実は、登録は各リスト個別に行えるのに対して、解除は一括で全てのリストを解除されます。
例えば、A,B,Cの3つのリストがあり、そのうちAとBを購読していたとします。このとき、購読者側からはAのリストだけ解除や、Bのリストだけ解除はできません。購読者側から購読解除すると、全てのリスト(この場合はAとB)が解除されます。
いろいろ調べてみましたが、どうやら、これはこういう仕様らしく、どうしても解決法が見つかりませんでした。
そこで、苦肉の策として、次のような方法を取りました。

対処法

結論から言うと、「PHPListを複数インストールする」という策です。

このとき気を付けることは、データベースのテーブルのprefixを変更しなければならないという点です。

それでは具体的に、2つ目のPHPListをインストールする場合に変更する箇所を説明します。
「public_html/lists/config/config.php」の41行目以降に以下のような記述があることを確認してください。

# if you want a prefix to all your tables, specify it here,
$table_prefix = "phplist_";

# if you want to use a different prefix to user tables, specify it here.
# read README.usertables for more information
$usertable_prefix = "phplist_user_";

# if you change the path to the PHPlist system, make the change here as well
# path should be relative to the root directory of your webserver (document root)
# you cannot actually change the "admin", but you can change the "lists"
$pageroot = '/lists';
$adminpages = '/lists/admin';

この部分の「phplist_」「phplist_user_」「/lists」を変更します。基本的には他のテーブル名と被らなければ任意に変更していいのですが、分かりやすいように次のように変更しました。

# if you want a prefix to all your tables, specify it here,
$table_prefix = "phplist2_";

# if you want to use a different prefix to user tables, specify it here.
# read README.usertables for more information
$usertable_prefix = "phplist2_user_";

# if you change the path to the PHPlist system, make the change here as well
# path should be relative to the root directory of your webserver (document root)
# you cannot actually change the "admin", but you can change the "lists"
$pageroot = '/lists2';
$adminpages = '/lists2/admin';

$pagerootと$adminpagesに代入している部分も任意に変更可能ですが、きちんとインストールするディレクトリのディレクトリ名を使用してください。
一応、これで変更終了です。

この方法で複数のメールマガジンの中から特定のものだけ解除が可能になります。
しかし正直なところ、この方法では管理画面も別になり使い勝手が悪いです。いい方法があれば是非教えて頂きたいです。