Blog ブログ・ブログ構築

オープンソースのブログ・CMSプログラム『PivotX』はマルチブログに最適

PivotXとは
PivotXとは、PHPとMySQLで構築可能なオープンソース・ソフトウェアのブログ用CMSプログラムで、Ajaxを使い洗練された管理画面が特徴。
PivotXの特徴としてマルチブログ(複数ブログ)やマルチユーザー(複数ユーザー)での構築が簡単に出来ることや、データベース(DB)としてMySQLを使う以外に、データベースを使わないCMSシステムとしても構築が可能なため、安価なレンタルサーバーやホスティング利用等でデータベースが使えない場合でも導入可能なところが便利。
また、PivotXはデータベースの構造もシンプル。以前、WordPress mu を使いマルチブログを構築したことがあったが、ブログ数が増えるとMySQL内に膨大な数のテーブルが作られるため、データベースが一個しか与えられないレンタルサーバーで他のプログラムと混在させると管理が面倒になったりする一面があった。その点PivotXは少ないテーブル数でマルチブログを実現できるPivotXは手軽にインストール(構築・導入)しやすい。

pivotxのスパム対策(基礎編)

pivotx001.gif

オープンソースのブログシステムpivotxにデフォルトでセットされているskinny themeを使用した場合、投稿した記事のニックネーム(nickname)にメールアドレスがリンクされ(mailto:)表示される。

そのため、デフォルトのままではスパマーのクローラーに拾われてスパムを増やす結果となる。

pivotxを利用した場合に考えられるスパムメールを回避してスパム対策のためにアドレスへのリンクを消す方法

pivotxのタグの基本として、テンプレートにある[[ user field=emailtonick ]]が、ニックネームとそのメールアドレスへのmailtoをセットしたリンクに置き換わる。

スパム対策として、この部分を変更するのだが、[[ user field=nick ]]ではエラーになる。

また、[[ user field=author ]] [[ user field=name ]] [[ user field=user]]とすると、ログイン用のIDが表示されてしまうので注意。

skinny.themeの場合に[[ user field=emailtonick ]]が含まれるテンプレートファイルは以下の4ファイル

page_template.html

entry_template.html

frontpage_template.html

archivepage_template.html

このすべてのファイル内にある

[[ user field=emailtonick ]]

[[ user field=nickname ]]

とすることで、メールアドレスへのリンクが消え、ニックネームのみが表示されるようになる。


オープンソースのブログシステムPivotXのバージョン表記を削除してセキュリティを向上させる。

PivotXで生成されるファイルには、HTMLソース上の二ヵ所に、PivotXバージョン表記がある。
セキュリティを考えるとシステムのバージョンは掲載しない方が安全。

テンプレートファイルを修正して、バージョンを表示しないようにする方法。

実際にバージョンを呼び出している部分は以下。

ベージ下部に表示されているバージョンは下記のテンプレートファイルにある。

/pivotx/pivotx/templates/skinny/_sub_footer.html

_sub_footer.html内の

    <div id=”footer”>
        <p><a href=”#top”>[[t]]Top[[/t]]</a> | [[sitename]] is powered by <a href=”http://pivotx.net/”>[[ $build ]]</a></p>
    </div>

    <div id=”footer”>
        <p><a href=”#top”>[[t]]Top[[/t]]</a> | [[sitename]] is powered by <a href=”http://pivotx.net/”>PivotX</a></p>
    </div>

このようにすることで、バージョンは表示されなくなる。

同様に、ヘッダー部分に書き込まれているバージョン表記が同じフォルダ内の「_sub_header.html」にあるかと思うが、このテンプレートファイルには記載されていない。

ヘッダーのメタタグ部分にコメントとして書き込んでいる元になっているのは、以下のファイル。

/pivotx/pivotx/modules/module_parser.php

module_parser.php内の

        // Add a hook to insert the generator meta tag and possibly a favicon link
        $PIVOTX[‘extensions’]->addHook(
            ‘after_parse’,
            ‘insert_before_close_head’,
            “€t<meta name=€”generator€” content=€”PivotX€” /><!– version: ” . strip_tags($build) . ” –>€n” .
            $favicon_html
            );

        $PIVOTX[‘extensions’]->addHook(
            ‘after_parse’,
            ‘insert_before_close_head’,
            “€t<meta name=€”generator€” content=€”PivotX€” />€n” .
            $favicon_html
            );
        

このようにすることで、ヘッダー内のバージョンは書き出されなくなる。

 

WordPressの簡単に表が作れるEditor Extenderの使い方

WordPressで写真付きの日記をアップしたりレビューを書いたりしている時、複数の画像を自由にレイアウトしたり表を作りたいと思うことがある。

WordPressでは所謂HTMLのテーブル(Table)タグでのレイアウトは考えていないから、デフォルトのエディターのままでは、テーブルを作るのはかなり面倒。HTMLのタグが分かる人なら、ビジュアル編集モードからHTML編集モードに切り替え<table><tr><td>と書いていけばいいが、HTMLが分からない人にとっては難しく、また、サイズの変更やセルの結合など面倒な事が多い。

テーブル作成系のプラグインは数種類あるが、一番のお薦めは「Editor Extender」。
Editor Extenderはテーブル作成のプラグインという訳ではなく、多くの機能を追加してくれる。
Editor Extenderのインストールは簡単。ダウンロードしたEditor Extenderをpluginsフォルダに入れ、プラグインの有効化をするだけでいい。
なお、多種の機能があるEditor Extenderだが、あまり使わないものもあるから、Editor Extenderの設定画面のチェックボックスで必要なものだけチェックすることをお薦めする。デジタルゲートがお薦めするのは「Style」と「Table」の2つ。

あとは編修画面に増えたメニューアイコンから使っていくだけだが、ブラウザによって多少違うから要注意。

IEでは、セルの結合に、マウスでのドラッグによるセルの複数選択ができない(ポップアップされるメニューから結合したい数を入力すれば可能)。

Lunascapeでは、レンダリングエンジンの選択にもよるが、メニューアイコンのツールチップが出ない。

お薦めなのはFireFox。Windows、Mac共、問題なく使える。

MacのSafari 1.x も表示されない。

最後に動作環境だが、WordPress2.6.xだとポップアップメニューが正しく表示されない。現行の2.7.1にアップデートすることをお薦めする。

ちなみに、WordPress muでは、設定メニューのチェックボックスが保存できないため使用できない。

MT4でMTIfを使う時の簡単ガイド

MovableTypeはvar.4になってかなり使いやすくなった。
テンプレートで<MTIf name=”main_index”>として設定するだけで、その部分は「メインページのみで表示されるもの」となる。

例:
<MTIf name=”main_index”>
メインページのみで表示させたいもの
</MTIf>

もし、「
メインページのみで表示させたいもの」、「メインページ以外で表示させたいもの」が同時にある場合は

例:
<MTIf name=”main_index”>
メインページのみで表示させたいもの
<MTElse>
メインページ以外で表示させたいもの
</MTIf>

これで、メインページでは「
メインページのみで表示させたいもの」、それ以外のページでは「メインページ以外で表示させたいもの」、が表示されるようになる。

では、メインページのみ表示させたくない場合はどうするか。

例:
<MTIf name=”main_index”>
空白
<MTElse>
メインページ以外で表示させたいもの
</MTIf>

上に習い、上記のようにしておけば、メインページは「空白」、となり、それ以外のページでは「メインページ以外で表示させたいもの」、が表示されるようになるが、もっと簡単にできるように関数が用意されている。

例:
<MTUnless name=”main_index”>
メインページ以外で表示させたいもの
</MTUnless>

これだけでいい。「If」に対しての「Unless」ということ。

MT4でのサイトマップ作成(Google,Yahoo!,MSN対応)

サイトマップの作成は、GoogleやYahoo!やMSNにクロールされやすくなり、SEO対策としてはとても有効な手段。
Movable Type 4を使っているなら、簡単にテンプレートの追加で作成できるから、是非作成してSEOに役立ててもらいたい。
サイトマップ用テンプレートの作り方(Movable Type 4)
管理ページにログイン
「デザイン」→「ブログのテンプレート」→「インデックステンプレートを作成」
設定(一例)
テンプレートの名称→Google Sitemaps
テンプレートの種類→カスタムインデックステンプレート(そのまま)
出力ファイル名→sitemaps.xml
インデックステンプレートを再構築するとき、このテンプレートも再構築する→チェック
テンプレート



<$MTBlogURL encode_xml="1"$>
<$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
daily




<$MTEntryPermalink encode_xml="1"$>
<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$> 1.0






<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>







<$MTArchiveLink encode_xml="1"$>

<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>





※いろいろなサイトで公開されているから「MT4 google sitemap/0.9」等で検索するといい。

MT4を携帯に対応させる「pc2m編」(その6)

PC2M Website Transcoder for Mobile Clients(pc2m)を利用し、ホームページを携帯対応にする場合の改造ポイント。

pc2mを通したサイトを、通常の携帯サイトと比較した場合、どうしても「ツールを使っている感じ」がする場所。

  • 設(設定)

さまざまなユーザーのアクセスが予測される場合は、ユーザーにより「パケット定額」ではない場合もあるが、ユーザーやサイトの方針で、「半角にしない」「画像は表示」と規定するのであれば、「設定」のメニューは削除してしまうといい。

設定ファイル:Template.inc.php

ただし、そのままではデフォルトの「カタカナ半角」「画像はリンク」のままなので、別の設定を望む場合は、以下のファイルを修正する。

設定ファイル: index.php

    if ($local_args[‘v’] === null and isset($_SESSION[‘settings’][‘v’])) {
        $local_args[‘v’] = $_SESSION[‘settings’][‘v’];
    }
    if ($local_args[‘l’] === null and isset($_SESSION[‘settings’][‘l’])) {
        $local_args[‘l’] = $_SESSION[‘settings’][‘l’];
    }
    if ($local_args[‘k’] === null and isset($_SESSION[‘settings’][‘k’])) {
        $local_args[‘k’] = $_SESSION[‘settings’][‘k’];
    }

の部分を

    if ($local_args[‘v’] === null and isset($_SESSION[‘settings’][‘v’])) {
        $local_args[‘v’] = 1;
    }
    if ($local_args[‘l’] === null and isset($_SESSION[‘settings’][‘l’])) {
        $local_args[‘l’] = 1;
    }
    if ($local_args[‘k’] === null and isset($_SESSION[‘settings’][‘k’])) {
        $local_args[‘k’] = 1;
    }

とすれば、デフォルトで「カタカナ全角」「画像表示」になる。

MT4を携帯に対応させる「pc2m編」(その5)

PC2M Website Transcoder for Mobile Clients(pc2m)を利用し、ホームページを携帯対応にする場合の改造ポイント。

アクセス制限設定(踏み台対策)(その4)参照 を施していても100%安全とは言えないため、 URLに自分のサイト以外のURLが書かれた場合は無効になるようにしておくと安心。

設定ファイル:index.php

function sendRequest($_url, $_client_param = array(), $_post_data = array(), $_is_framesrc = false){

の部分、各種 global の次あたりに
   
    if (!ereg(“^http://digital-gate.com/”, $_url)){$_url = “”;}

を追加。
※http://digital-gate.com/は、自分のサイトのURL

これで、http://digital-gate.com/を含まないURLが記入された場合、$_urlの値は空になる。

この修正を施したものでURLのテキストボックスに他のURLを入れてみると、

「〜から応答がないわけで、サーバが見つからないとかDNSエラーとかそんなんだと思われ」

とエラーが表示されるようになる。
このエラーメッセージが気になる人は、

修正ファイル:ErrorMessages.inc.php

‘ERROR_SERVER_NORESPONSE’    => ‘<a href=”r.php?{%1}”>{%1}</a>から応答がないわけで、サーバが見つからないとかDNSエラーとかそんなんだと思われ’,

の部分を修正するといい。

MT4を携帯に対応させる「pc2m編」(その4)

PC2M Website Transcoder for Mobile Clients(pc2m)を利用し、ホームページを携帯対応にする場合の改造ポイント。

pc2mを通したサイトを、通常の携帯サイトと比較した場合、どうしても「ツールを使っている感じ」がする場所。

  • URL記入ボックス

通常のサイトであれば、そこから他のサイトに行くのは本来の目的とは違うはず(検索サイトや変換サービスとして構築の場合を除く)なので、URL記入ボックスは削除してしまうといい。

修正ファイル:Template.inc.php

同様に、配布サイトにおいて「アクセス制限設定(踏み台対策)」として書かれているように、このスクリプトを悪意をもって利用されることは防がなくてはいけない。
モバイルキャリアのネットワーク以外からのアクセスを禁止は設定として用意されているから簡単にできる。

修正ファイル:Config.inc.php

// define(‘ALLOW_ONLYMOBILE’, true);

define(‘ALLOW_ONLYMOBILE’, true);

当然のことながらPCからの確認も出来なくなるから、ちゃんと動くことを確かめてから設定すること。

MT4を携帯に対応させる「pc2m編」(その3)

MovableTypeで作成したサイトを携帯で見られるようにするための方法を探していて見つけたもの。
(カスタマイズ編)

元になるスクリプトはこれ

PC2M Website Transcoder for Mobile Clients
「PCサイト->携帯変換スクリプト」
http://www.rcdtokyo.com/pc2m/note/

インストール他は(その1)参照

pc2mを導入して、MovableTypeで作成しているDigital Gateも携帯で見られるようになったが、デフォルトの設定のままではいくつかの不具合がある。

  • 不要なパーツの表示(その2)参照
  • 見出しタグのサイズ

今回は、見出しタグのサイズ(文字サイズ)を本文と同じにする。

今の携帯は見出しタグ(<H1>や<H2>)にある程度表示するため、見出しタグを使ったページを表示した場合、逆に見づらくなってしまうことがある。
デジタルゲートの場合も、記事タイトルのフォントサイズが妙に大きく格好悪い。
そこで、見出しタグは置き換えてしまうことにする。

修正ファイル:FormatRule.inc.php

このファイルの、

    ‘h1’ => array(
        ‘type’ => ‘block’,
        ‘children’ => array(‘#PCDATA’, ‘a’, ‘br’, ‘span’, ‘img’, ‘map’, ‘i’, ‘b’, ‘u’, ‘big’, ‘small’, ‘font’, ‘em’, ‘strong’, ‘dfn’, ‘code’, ‘q’, ‘samp’, ‘kbd’, ‘var’, ‘cite’, ‘abbr’, ‘acronym’, ‘sub’, ‘sup’, ‘input’, ‘select’, ‘textarea’, ‘label’, ‘button’),
        ‘attributes’ => array(‘align’)
    ),
    ‘h2’ => array(
        ‘type’ => ‘block’,
        ‘children’ => array(‘#PCDATA’, ‘a’, ‘br’, ‘span’, ‘img’, ‘map’, ‘i’, ‘b’, ‘u’, ‘big’, ‘small’, ‘font’, ‘em’, ‘strong’, ‘dfn’, ‘code’, ‘q’, ‘samp’, ‘kbd’, ‘var’, ‘cite’, ‘abbr’, ‘acronym’, ‘sub’, ‘sup’, ‘input’, ‘select’, ‘textarea’, ‘label’, ‘button’),
        ‘attributes’ => array(‘align’)
    ),
    ‘h3’ => array(
        ‘type’ => ‘block’,
        ‘children’ => array(‘#PCDATA’, ‘a’, ‘br’, ‘span’, ‘img’, ‘map’, ‘i’, ‘b’, ‘u’, ‘big’, ‘small’, ‘font’, ‘em’, ‘strong’, ‘dfn’, ‘code’, ‘q’, ‘samp’, ‘kbd’, ‘var’, ‘cite’, ‘abbr’, ‘acronym’, ‘sub’, ‘sup’, ‘input’, ‘select’, ‘textarea’, ‘label’, ‘button’),
        ‘attributes’ => array(‘align’)
    ),
    ‘h4’ => array(
        ‘type’ => ‘block’,
        ‘children’ => array(‘#PCDATA’, ‘a’, ‘br’, ‘span’, ‘img’, ‘map’, ‘i’, ‘b’, ‘u’, ‘big’, ‘small’, ‘font’, ‘em’, ‘strong’, ‘dfn’, ‘code’, ‘q’, ‘samp’, ‘kbd’, ‘var’, ‘cite’, ‘abbr’, ‘acronym’, ‘sub’, ‘sup’, ‘input’, ‘select’, ‘textarea’, ‘label’, ‘button’),
        ‘attributes’ => array(‘align’)
    ),
    ‘h5’ => array(
        ‘type’ => ‘block’,
        ‘children’ => array(‘#PCDATA’, ‘a’, ‘br’, ‘span’, ‘img’, ‘map’, ‘i’, ‘b’, ‘u’, ‘big’, ‘small’, ‘font’, ‘em’, ‘strong’, ‘dfn’, ‘code’, ‘q’, ‘samp’, ‘kbd’, ‘var’, ‘cite’, ‘abbr’, ‘acronym’, ‘sub’, ‘sup’, ‘input’, ‘select’, ‘textarea’, ‘label’, ‘button’),
        ‘attributes’ => array(‘align’)
    ),
    ‘h6’ => array(
        ‘type’ => ‘block’,
        ‘children’ => array(‘#PCDATA’, ‘a’, ‘br’, ‘span’, ‘img’, ‘map’, ‘i’, ‘b’, ‘u’, ‘big’, ‘small’, ‘font’, ‘em’, ‘strong’, ‘dfn’, ‘code’, ‘q’, ‘samp’, ‘kbd’, ‘var’, ‘cite’, ‘abbr’, ‘acronym’, ‘sub’, ‘sup’, ‘input’, ‘select’, ‘textarea’, ‘label’, ‘button’),
        ‘attributes’ => array(‘align’)
    ),

の部分をコメントアウトし、

    ‘h1’ => array(
        ‘replace’ => ‘div’
    ),
    ‘h2’ => array(
        ‘replace’ => ‘div’
    ),
    ‘h3’ => array(
        ‘replace’ => ‘div’
    ),
    ‘h4’ => array(
        ‘replace’ => ‘div’
    ),
    ‘h5’ => array(
        ‘replace’ => ‘div’
    ),
    ‘h6’ => array(
        ‘replace’ => ‘div’
    ),

を記入。

これで見出しタグはdivとなりフォントサイズは本文と同じになる。