Joomla!の問い合わせページ(コンタクト)では、コピーを自分に送るチェックボックスがあって入力されたメールアドレスに送信した内容のコピーを送るようになっています。
最近スパムが多いのでそれを出来ないようにしました。
元々、チェックボックスは表示しておらず、hiddenフォームで必ずコピーを送信するようにしていました。現在もフォーム上ではそうなっています。だけど、プログラム上でそれを強制的にオフにするようにしました。
考えてみれば、適当なメールアドレスを入力して送信すれば、2カ所(コンタクト先とそのメールアドレス)に同時にスパムを送信できますよね。それは、良くない。
スパムの多い方は、対処されてはどうでしょうか。
システムが出力する(例えば記事保存時など)メッセージをオーバーライドできるプラグインです。
インストール方法
使い方
簡単なプラグインですが、Joomla!1.5を操作していて一様に同じメッセージ表示なので変更できないかと思い作成しました。
通常のサイトなら必要ないでしょうが、一定規模のサイトなら今までコアを編集したりしていたのでは無いでしょうか。
言われてみればその通り、関連記事モジュールには表示件数の制限が無いためたくさんヒットしたらそのまま表示されてしまいます。考えてみればこのサイトではそれだと見た目も悪くなるし、少し内容も表示したかったのでオリジナルの関連記事モジュールを作成したことを忘れていました。
とりあえず、表示件数の制限をつけることくらいは簡単なのでHackか、テンプレートでやっちゃえば簡単です。
まずは、Hackなら
$db->setQuery($query);
を
$db->setQuery($query, 0, 20);
のように、最初(0)から20個の記事というように20の部分に表示最大件数を入れます。自由に設定できるようにしたい場合は、
$db->setQuery($query, 0, intval($params->get('limit', 20)));
のようにし、xmlファイルのパラメータ部に
<param name="limit" type="text" size="3" label="最大件数" description="" />
などと追加すればバックエンドで最大件数が設定できるようになります。
ではテンプレート側でやるには
mod_related_items/tmpl/default.phpとindex.htmlを、使っているテンプレートフォルダ/html/mod_related_itemsにコピーします。そしてコピーしたdefault.phpを編集します。
<?php foreach ($list as $item) : ?>
を
<?php
$i = 0;
foreach ($list as $item) :
if($i > 20){
break;
}
$i++;
?>のようにすればOKです。
本体をHackする方法だとアップデート時に、忘れていたりしてかなり面倒になってきたりしますので、それを考慮にいれるとテンプレート側で対応する方法を行った方が良いかもしれません。
サイトを運営していると新しいエクステンションをテストしたり、表示を確かめることってありますよね。Joomla!の場合オンライン上で記事を書き、また編集できちゃうので以前のローカルでテストしてということをされていない方もおられるのではないでしょうか。
サイトのローカルコピーを先日再作成したときの手順を書いてみます。
必要なもの
ファイルのコピー
まずは、サーバー上のファイルをすべてローカルWebサーバー上のXAMPPならhtdocs以下の任意のフォルダにコピーします。
XAMPPをインストールしたフォルダ D:\xampp
サーバー上のファイルを入れるフォルダ D:\xampp\htdocs\example
この中にすべてのファイルを入れる。(htdocs直下を使っても良いが、XAMPPのファイルと重複したりするので注意。)
configuration.phpを編集
データベースをコピー
サーバー上のphpMyAdminを使いエクスポートを選択。
サーバーによって異なりますがデータベースを表示している場合は、テーブルすべてを選択。データベース名を選択できる場合は、該当のデータベース名を選択します。(イメージ参照)
そして以下にチェックをいれます。
(これは、チェックしなくても問題ないですが、失敗したときや個別にテーブルをインポートするときなどに便利です。)
最後にファイルに保存するにチェックを入れそのまま実行するボタンを押し、ローカルPCのどこかにファイルを保存します。
localhost.sql (ファイル名は、環境により異なりデータベース名だったりします。)
これで、ローカルPCにデータベースのデータがコピーできました。
XAMPPのphpMyAdminを開く
サーバー上と同じデータベース名(異なっても構いません。上の「これから作るローカルデータベース名」のこと)でデータベースを作成する。
このとき、照合順序に注意してください。
※そして必ずチェックしてください。上記で作成したローカルPCにコピーしたsqlファイルを開き、下記のような部分が無いかチェックしてください。
(ファイルのはじめに一カ所しかありません。)
DROP DATABASE `あなたのデータベース名`;
「あなたのデータベース名」というデータベースがあれば削除します。
CREATE DATABASE `あなたのデータベース名`;
「あなたのデータベース名」というデータベースを作成します。
USE あなたのデータベース名;
「あなたのデータベース名」というデータベースを使用するよう指示します。
DROP DATABASEの行とCREATE DATABASEの行は、削除してください。そしてUSE~の行があれば上で作成したデータベース名を書けば良いのですが、今回は削除しましょう。
※sqlファイルを開くとき文字コードに注意してください。Joomla!の場合大抵UTF-8です。保存するとき異なる文字コードで保存してしまうと壊れます。
作成した空のデータベースをphpMyAdminで表示します。
空なのでテーブルがありませんと表示されています。
上のメニューから「インポート」をクリック。先ほどのsqlファイルを指定し、実行するボタンを押下。
しばらく待ってインポート完了。
http://localhost/exampleを開く
※MySQLのサーバーとローカルでのバージョン違いなどでエラーが出る場合があります。その時は、そのエラーを見て該当する部分を修正しないといけないこともありますのでご注意ください。
Firefoxにまた、アドオンを追加してしまいました。「Screengrab!」これは、Webページをキャプチャしてくれるアドオンです。
インストールするとページのコンテキストメニューにメニューが追加されるのとFirefox下部にアイコンが表示されます。アイコンをクリックしてページ/フレーム全体か、表示している部分のみかと、なんと!範囲選択までできます。そのまま保存とコピーと選択できますので軽いエディタを起動しておいてそのまま貼り付けることが可能です。ブログを書いているとWebページのキャプチャって必ず使うときがあると思うのでこれは、絶対お薦めです!
早速Screengrab!のページをキャプチャしてみました。