XOOPSTips集 - 最新エントリー
figタグを使い出すと、イメージマネジャー統合ではもの足らないものがある。画像毎のサイズ、特にサムネイルのサイズ指定に自由が効かないからだ。サムネイルが作れて、しかもdhtmlとリンクできるのは他には無さそうだし、困ったな。
無ければ自分で作るしかないか。
で、どうせ作るのなら、この際XCLの勉強もしたい。そうなるとCubson先生を頼るのが早道だろう。exToolsの経験もあることだし。
XCL専用にはなるがそれはやむを得ない。
画像回り込みにひと味加えるの続編。前回の例では、画像を左に、本文は右。そのために、本文のクラスblogBodyには左マージンが必要という風にかなり面倒であった。
今回は、左右どちらでも融通のきくマークアップとスタイリングを紹介する。もちろん、img、figタグ、いずれにも対応する。
幅が固定のボックスならセンタリングするのはわけがない。margin-left:auoto; margin-right:auto;
width: 100px;しかし、このコーディング例ではボックスの幅長が100pxを切ったりすると完全な中央寄りとはならないし、超えたらあふれた要素が段落ちしたりもする。このように、ページナビやアルバムなどで、ボックスの要素がいくつあるか分からなくて長さが特定できないものをセンタリングするにはどうすればいいか。
前号の「ファンシー・ページナビゲータ」をセンタリングする例で紹介する。
ビジネスブログなどを購読していると、毎回の記事が複数ページにわたるものが多い。そこで、スムーズにページ間を渡るための使いやすいページナビゲータが用意されてるのが一般的だ。
一方、Xoopsのページナビゲータはどうかというと、スタイルシートなどを適用しないデフォルトのままでは、マウスでポイントしようにも「文字が小さい」「文字間が狭い」などから、老眼鏡が必要となってきた世代にとってはとても辛いものがある。
そこで、スタイルが適用しやすく、かつsemanticなマークアップに変更するためのsmartyプラグインmodifier.xoops_pagenavi_markupを作り、例として、ここのXOOPS関連TIPS集、hodaぶろぐる、フォーラムに適用してみた。
9.画像レイアウトのマークアップ
myalbum-Pのイメージマネジャー統合機能を使うと画像や図表のアップロードだけでなくサムネール表示も簡単にできます。
d3blogのv1.02以降(現在devel版です)では、さらにマネジャーで生成されたxoops codeのimg部分をfigに書き換えるだけで、semanticなレイアウト用マークアップを可能としました。それがfigタグです。しかも、キャプションなどいくつかの属性値の記述が可能です。
4.更新ping、トラックバック送受信
- 1)更新pingの送信
- あらかじめ一般設定で更新ping送信先を指定しておきます。(隠し機能として投稿時に選択できることも可能ですがユーザーに使用させるのはお奨めしません)
多くを指定すると時間がかかりますので、せいぜい4つくらいに止 めましょう。
投稿または編集時に「オプション欄の更新pingを送信する」をチェックしない限り送信しません。通常はoffです。むやみやたらに送信するのはやめましょう。 - 2)トラックバック送信
- 投稿または編集時に送信先trackback_urlを「トラックバック/リンク先欄」に入力します。複数ある場合は1カ所ごとに改行します。
指定したトラックバックリンク先へは一度しか送信しません。やむを得ず再送する場合は送信済みデータを削除した上で行ってください。- trackback_urlのautodiscover
自動検知する方法もあるのですが採用可否を思案中です。v1.01aから採用しました。送信先ページのurlを入力すれば、自動的にtrackback urlを取得しますので調べる手間が省けます。ただし、相手サーバーによっては時間がかかるときがありますのでphpのタイムアウト時間に注意してください。
- 3)トラックバック受信
- まず、ゲストに閲覧権限を与えてください。
トラックバック承認システムもあります。一般設定で選択してください。その場合、トラックバック到着通知ができるようにイベント通知または承認モジュールなどを利用するといいでしょう。 - 4)トラックバックSPAM対策
- 次のような機能があります。いずれも一般設定で選択してください。
- イ)タイトル、ブログ名がブランクのものを拒否する
- トラックバックのルール上trackback_urlさえ存在すればいいのですが、どこの誰とも分かりにくいものは避けたいので、
最低限これはonにしておくことを薦めます。強制的に拒否とします。 - ロ)禁止用語
- タイトル、ブログ名、要約欄に禁止用語が含まれるものを拒否する(1語ずつ改行)
- ハ)DNSBLチェック
- 送信元のアドレスがブラックリストに登録されている場合拒否します。
- ニ)文中のurlチェック
- 要約文中にurlの記載があれば指定したサーバーにブラックリスト登録されていないかどうかチェックします。
- ホ)文字パターンチェック
- マルチバイト使用時のみ有効です。
unicodeの正規表現による文字パターンと必要文字数を指定します。
タイトル、ブログ名、要約文中で、パターンに合致する文字数のいずれも合計が指定数に満たない場合拒否します。
日本語の場合文字のパターンのデフォルトは、ひらがな、カタカナ、漢字の3種です。 - ヘ)正規表現によるチェック
- ト)参照先言及チェック
- 当方のブログのurlについてブログページで言及してない場合は拒否します。(snoopyクラスで送信元ページを読み込みます)
- 相手はjavascript有効である必要がある
- チケットの有効時間は1日
- 一度使われたチケットは再利用できない
- 埋込RDFのtrackbak_urlはチケット式表記ではない(つまり、__mode=rssなどのGET要求はチケット方式を使わない。当然ですが)
*作者としては、これは世のトラックバックルールから外れるうえ、思わぬ副作用も考えられるのでお奨めしません。
*SPAM対策としては承認式あるいは4)に掲げた方策で十分です。それでも耐えきれなったときの最後の手段と考えてください。
5.エントリ単位の閲覧権限
一般設定でエントリ毎に閲覧可能グループを指定できます。
その際はデフォルトの許可グループを同時に指定してください。
ただし、パミッション管理で閲覧権限のないグループは無効になります。
一般設定の「タイトル・要約部分は閲覧可能」を有効にすると、エントリ単位で閲覧権限のないグループでも、メイン処理やブロックでタイトル・要約部分は閲覧可能になります。
- 留意事項
- この機能を、今までoffであったものを途中でonにする場合は注意が必要です。
過去データのアクセス権は管理者のみだが設定されてないからです。phpmyadminなどで補正してください。
v1.02からは、エントリ別制限off時のデフォルト値はデフォルトグループとするよう変更しました。
後でグループ追加した場合は必ずモジュールアップデートしてください。xoops仕様のため、一般設定のデフォルトグループ選択対象にはならないからです。なお、v1.02では、デフォルトグループですべてのグループを選択しておけば、後でグループを追加しても新グループも自動的にカバーできるようにしました。
6.プラグイン
下記モジュールのプラグインをextra以下に同梱しています。必要に応じてアップしてください。
*なかには使用ディレクトリ名に応じてリネームする必要があるものもあります。
モジュール名 | プラグイン | 備考 |
---|---|---|
xmobile | extra/html/modules/xmobile/plugins/d3blog.php | リネームが必要 注1を参照 |
piCal | extra/html/modules/piCal/plugins/ monthly/d3blog-date、d3blog-entry | daily,weeklyなど 必要なものだけを upすればいい |
d3pipes | extra/xoops_trsut_path/modules/d3pipes/joints/ block/D3pipesBlockD3bloglist.class.php | ホダ塾ディストリビューション版ではd3pipesに格納されています |
そのほかに下記のプラグインを内蔵しています。
モジュール名 | プラグイン | 備考 |
---|---|---|
d3forum | html/class/smarty/plugins/ function.d3comment.php | コメント統合を 使わなくても必須 |
d3forum | xoops_trust_path/modules/d3blog/ class/d3blogD3commentEntry.class.php | コメント統合用 第9項を参照 |
search | xoops_trust_path/modules/d3blog/ include/search.inc.php | |
whatsnew | xoops_trust_path/modules/d3blog/ include/data.inc.php | |
waiting | xoops_trust_path/modules/d3blog/ include/waiting.plugin.php |
- 注1)ディレクトリ名末尾が数字の場合
- xmobile/class/Control.class.phpに手を入れてください。108行目を次のように:
if(preg_match("/(^\w+)\d$/", $this->pluginState,$matches) && !file_exists(XOOPS_ROOT_PATH."/modules/$this->pluginState/mytrustdirname.php"))
7.wysiwygエディタ
モジュール一般設定からFCKeditorまたはquicktagが選択できます。
ただし、html権限のあるグループしか使えません。
FCKeditorは同梱しませんので、必要な場合ホダ塾の「Package_hd for XCL2.1」最新SVNからtarボールをダウンロードしてください。
html/common/fckeditorディレクトリ毎サーバーにアップします。
8.画像アップロード
d3blog自体には機能がありません。
イメージマネジャーまたはイメージマネジャー統合機能などを活用してください。
- XCL専用アップローダーを用意しました
- 新作myuploaderモジュール(もちろん複製可能、xoops_trust_pathで動作のD3もどきです)を使えばd3blog独自xcodeに対応したイメージマネジャーが利用可能です。また、myuploader単独ではhighslideを使った簡易フォトアルバムが実現できます。
- myuploaderとmyuploaderに対応したd3blogのtarボールはsourceforgeのmyuploaderプロジェクトSVNでダウンロードできます。既存のd3blogをいったん全削除(お奨め)、あるいは上書きしてください。
9.d3forumコメント統合を使うには
まず、d3forumでコメント統合用のフォーラムを作成します。そのとき、「コメント統合時の参照方法」欄に下記フォーマットで入力してください。
ディレクトリ名::d3blogD3commentEntry::trust側ディレクトリ名
- 注意:
- d3forumのバージョンをv0.83以上にあげてください。同時に、付属のsmartyプラグインファイル "function.d3comment.php"も忘れずにアップロードしてください。
続いて、d3blog側一般設定でd3forumのモジュール名を選択、対象となるforum_idを指定してください。それだけです。
(v1.02.4bからコメント数取得を内蔵しました。テンプレート更新が必要です。)
10.ブロックの複製
v1.02からすべてのブロックが複製可能になりました。内、最新エントリブロックについてはクローンブロックにオリジナルテンプレートが適用できます。
その場合、ブロック編集の「独自テンプレート」欄にテンプレート名を指定してください。
db:dirname_blocks_original-name.html
上記に対応するテンプレートファイルをtrust側templates以下に作成し、dbに登録(モジュール更新)します。ファイルテンプレート(file:で始まる)の場合は絶対パスでファイル名を記述。
ファイルを直接適用テーマのtemplates以下に作成すればテーマ下テンプレートになりますが、この場合db登録は不要です。ただしsmartyエラーが出ますが。
- テーマ下テンプレートとは:
- 使用theme/templates以下に置かれたテンプレートが最優先される仕組み。
以上
1.インストール直後に管理側で行うこと
- 1)一般設定
- 個別項目については後述
- 2)カテゴリの作成
- 最低限一つのカテゴリが必要です。カテゴリーマネジャーで作成してください。
- 3)パミッションの設定
- 管理者といえども権限を与えないと閲覧/書き込み権限はありません。
- 「編集者」権限はオールマイティです。他人のエントリの編集が可能なのは編集者だけです。
- 「HTMLの使用」は投稿者までに限定してください。ゲストに許可するのは危険です。
- カテゴリ単位での権限管理はできません。必要な場合は別のモジュールとしてインストールしてください。
- 4)ブロック管理/モジュールアクセス権限/言語定数管理
- altsysモジュールの機能を使います。最低限グループ別にモジュール権限を設定してください。
最新エントリはすべてのブロックは複製可能です。複製して双方のブロックのhtmlを使い分けたい場合はブロックのタイプをうまく利用、つまりテンプレート編集するなりしてください。- 5)CSSマネジャー
- イ)一般設定でダイナミックCSSを選択しない場合
- 一旦、公開側cssディレクトリ777、その下にあるファイルには666のパミッションを与えます。
- その後cssマネジャーで必ず外部CSSファイルを書き出してください。
- 書き出しが完了したらcssディレクトリ以下を元の読み込み専用644にします。
- .htaccessが可能なら同ディレクトリにある.htaccess.distを.htaccessにリネームしてください。
- *モジュール名をd3blog以外にした場合、外部cssを書き出さないとブロックにスタイルが効きませんので注意してください。
- ロ)ダイナミックcss
- xoopsへのアクセス頻度が上がりますので、インストール後のテストやスタイル調整時のみ使用することをお奨めします。調整終了後は公開側外部スタイルシートに切り替えてください。
- 6)テンプレート管理
- altsysモジュールの機能を使います。
- スタイルシートの編集が可能です。
以上でモジュール使用が可能になりました。
2.weblog-1.42、weblogD3、xeblogからのインポート(データ移行)
インポートマネジャーで以下の項目を引き継ぐことができます。
- カテゴリ、エントリ、トラックバックのテーブルデータ
- コメント、イベント通知
- エントリ単位のコメント数、トラックバック数
なお、インポート元のテーブル3データは元のまま維持されていますが、コメント、イベント通知のインポートを実行するとコメント、イベント通知データは元には戻れません。
3.承認管理
承認が必要なエントリやトラックバックがあれば承認管理でその一覧が確認できますので、一括またはエントリ単位で承認・却下ができます。
イベント通知設定しておくか、承認用プラグインを内蔵しておりますので承認モジュールwaitingをインストールしておくといいでしょう。
- 留意事項
トラックバックのイベント通知はPMでは届きません。メールを選択してください。preloadを駆使すれば可能になるかと思いますが力量不足のため。rev.253で可能になりました。
PM使用の場合は承認モジュールwaitingの利用を薦めます。
梱包内容
+― extra(プラグインが入っています)
| (xmobile、piCal用はhtml以下)
| (d3pipesブロック用はxoops_trust_path以下。ホダ塾版はデフォルトでd3pipesに組み込まれています。)
| *class/smarty/plugins以下のプラグインを必ずアップしてください。
|
+― html(公開側ファイルが入っています)
|
+― xoops_trust_path(本体ファイルが入っています)
XOOPS_TRUST_PATH用ディレクトリの用意
- D3モジュールですので、XOOPS_ROOT_PATH以外にXOOPS_TRUST_PATH用ディレクトリを用意してパスをmainfile.phpに記述しておきます。
- D3モジュールについて不明な方は「文系のためのXOOPS入門/D3モジュールとはなんなのか?」を参考にするといいでしょう。
altsysモジュールのインストール
まずGIJOEさん作altsysモジュール(v0.55以上)を最初にインストールしておきます。
ファイルアップロード
- html以下のディレクトリ、ファイルをXOOPS_ROOT_PATH以下にアップします。
- *extra/html/class/smarty/plugins以下にあるsmartyプラグインのアップ先
- XC2.0.x系をお使いの場合は公開側/class/smarty/plugins以下へアップ。XCL2.1.xの場合はtrust_path側/libs/smartypluginsへアップするとともに、html/preload下にあるファイルを公開側へアップしてください。なお、ホダ塾ディストリビューション版の場合はこれらの作業は不要です。
- モジュールのディレクトリ名(html側)の変更は自由です。
- xoops_trust_path以下のディレクトリ、ファイルをXOOPS_TRUST_PATH用ディレクトリ以下にアップします。
ブロック専用スタイルのアサイン($xoops_block_header)
この項を削除しました。
インストール
インストール操作は他のモジュールと全く変わりません。通常のようにインストールしてください。
アップグレード
- v1.01以下 => v1.02
- 旧root側、旧trust側ファイルとも全削除してから新ファイルをアップロードしてください。
- モジュールアップデートします。
- 一般設定項目で、trackbackのSPAMチェック項目を変更しています。確認してください。
- 権限管理がフル改訂になってますので、「使い方1の3)パミッションの設定」を参考に再構築してください。
- 上記に関係してテンプレート変更が必要です。
$currentUser.perm_name.xxxx => $currentUser.user_perm.zzzzz
該当テンプレ:main_entry.html、main_submit.html
- smartyプラグイン名変更に伴うテンプレ修正
mb_truncate => xoops_mb_truncate
該当テンプレ:admin_approval_manager.html、main_details.html、main_submit.html
- autodiscovery関連のテンプレ修正
main_submit.htmlのtrackback url入力欄の肩に以下を追加
<input type="checkbox" name="autodiscovery" id="autodiscovery" value="1"<{if $form.autodiscovery_}> checked="checked"<{/if}> /><label for="autodiscovery"><{$smarty.const._MD_D3BLOG_LANG_AUTODISCOVER}></label>
- 日本語チェック用正規表現の修正
一般設定の「日本語固有の文字パターン」を次のように書き換えてください。
[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+
Hodaka Laboの記事-Installation of d3blogにコメントをつけています。
実は早期からFCKeditorを密かに仕込んである。
要望のあったエントリ別権限コントロールが可能なバージョンです。
もともと旧weblogのコードの複雑さの一つの要因にもなっていた機能なので、シンプルなブログという開発趣旨から離れることになりました。