Document Actions
COREBlog1.2.1がリリース
COREBlog1.2.1 がリリースされました。今回のリリースを境にメンテナンスモードに入ると言うことで、これまでの延長線上での機能追加はこれが最後になるようです。
ということで、さっそく今回のリリースで追加された コメントやトラックバックの追加前にフックメソッドを呼び出す 機能を使ってみました。
コメント追加前に *コメントスパム* の可能性があるかどうかをチェックして、
可能性がある場合は *要モデレート* 状態にします。
.. image:: images/coreblog_buzzwords/thumb?width=200
:target: images/coreblog_buzzwords
:align: right
今回はとりあえずNGワードを含む投稿をチェックすることにします。
まず、 COREBlogインスタンスのmethodsフォルダ(以下blog/methods)のプロパティーに
``buzz_words`` という名前のプロパティーを ``lines`` 型で追加します。
そして、プロパティーの値として行単位でNGワードを追加します。
自分は最初はpoker等を対象にしていたのですが、最近はきりがなくなってきたので ``href``
をNGワードにしてしまいました。
次に、以下のPythonスクリプトを ``beforeAddComment`` という名前で blog/methods
フォルダに追加します。
.. code-block:: Python
## Script (Python) "beforeAddComment"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=d
##title=
##
try:
if not d["moderated"]:
return d
buzz_words = container.getProperty("buzz_words")
s = str(d).lower()
for w in buzz_words:
if s.find(w) >= 0:
d["moderated"] = 0
break
else:
d["moderated"] = 1
except:
pass
return d
このへんのコードは `lirisさんの記事`_ から頂いたものをCOREBlog1.2.1用に軽く修正
しています。ありがとうございます。
同様に ``beforAddTrackback`` というスクリプトを用意すれば同じ事が出来ます。
.. figure:: images/coreblog_spams/thumb?width=200
:target: images/coreblog_spams
:align: left
結果、こんな感じでコメントスパムがフィルタリングされています。
チェックの付いていないやつがフィルタされたスパムです。
‥‥大杉。今日だけでコメントスパム投稿数 **100件** って何?
.. class:: visualClear
.
.. _`lirisさんの記事`: http://www.liris.org/blog/626/
- Category(s)
-
Zope
- 風邪
- ¦
- Main
- ¦
- コメントスパム削除対策(後ろ向き)

なるほど、 beforeAddComment はこうやって使うんですね。参考にさせてもらいます。
ところで d["moderated"] = 1 のとこの else のブロックのインデントがひとつ左にずれて見えるのは Safari だからかしらん。
> ところで d["moderated"] = 1 のとこの else のブロックのインデントがひとつ左にずれて見えるのは Safari だからかしらん。
いえ、これはfor文に対するelseです。つまりfor文が回りきった場合のみ実行されてます。
でもよく考えるとbuzz_wordsに引っかからなかったら *放置* するのが正しい動作のような気が...。結果としてはelse節は無くても動作は同じですね(;-;
なるほど。
にあるあたりですね。
これまでこういう else の使い方をしたことがなかったので、ちょっとびっくりしました。
はじめまして、shinと申します。plonifiedについて質問です。
COREBlog1.2 / COREBlog1.2.1 で
スキンをplonifiedに変更すると、
There is no setting in this skin.
確認すると、
Site Error
An error was encountered while publishing this resource.
のエラーで、plonifiedスキン利用出来ないのですが。なぜでしょう。
defaultのスキンは、適用されます。
Apache/2.0.54 (Win32) DAV/2 mod_autoindex_color mod_ssl/2.0.54 OpenSSL/0.9.8 mod_jk2/2.0.4 PHP/5.0.4 SVN/1.2.3
Apache / zope 連携
Ploneバージョン概要
Plone 2.1,
Zope (Zope 2.7.7-final, python 2.3.5, win32),
以上の件、宜しくお願い致します。
plonifiedに変更したときに
「スキンの設定を編集してください。'(Blogのタイトル)'.」
There is no setting in this skin.
と表示されるのは、plonifiedのskinに設定項目が無いためです。viewで表示すればちゃんとPloneに統合されて表示されませんか?
表示されずに、後半にかかれているようなエラーが起きるのであれば、、、ちょっとわかりません。そこから先はここよりも、COREBlogかZopeのMLで聞かれるのが近道かも。