LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Wiki

ModuleManuals

Table of contents

pico anchor.png

機能
コンテンツモジュール
種別
静的コンテンツ作成
作者
GIJOE
バージョン
1.60 (1.71a beta)
日付
2007/12/19
動作環境
XOOPS2.0、本家版2.2、XOOPS Cube Legacy 2.1 (俺的では動きません)
配布元
http://xoops.peak.ne.jp/
複製
Duplicatable V3 (任意のディレクトリ名でインストールできる)
Page Top

概要 anchor.png

TinyDの後継的な位置づけを持つモジュールです。
TinyDからの移行パスも用意されています。
ただし、コード的にはpicoとTinyDはまったく関係なく、完全に独立した存在です。

webmasterによるコンテンツ作成に適していますが、設定次第では、一般ユーザによる記事投稿を許可するタイプのモジュールとしても利用できます。

Duplicatable V3ですから、ディレクトリ名の制限もなく、アップデートも1回分ですみます。

Page Top

知っておくべき事 anchor.png

Page Top

6種類のファイル構成 anchor.png

このモジュールでは、ファイル構成が大きく6種類に分けられます。それぞれきちんと区別してください。

モジュール本体
picoモジュールのロジック部分です。1つのXOOPSサイトに1つしか置かれません。サーバ上の置き場所は、XOOPS_TRUST_PATH/modules/pico/ です。アーカイブでは、xoops_trust_path/modules/pico/ です。
モジュールフロントエンド
モジュールとXOOPSをつなぐための入口部分です。1つのXOOPSサイトにいくつでも置けます。サーバ上の置き場所は、XOOPS_ROOT_PATH/modules/(任意のディレクトリ) です。アーカイブでは、html/modules/pico/ です。
Smartyプラグイン
picoを利用する上で必要なSmartyプラグインです。サーバ上の置き場所は、XOOPS_ROOT_PATH/class/smarty/plugins/ です。アーカイブでは、html/class/smarty/plugins/ です。
PEARファイル
picoにおいては、TextWiki機能を利用する場合にのみ必要です。サーバ上の置き場所は、XOOPS_TRUST_PATH/PEAR/ です。アーカイブでは、xoops_trust_path/PEAR/ です。
WYSIWYG Editor
picoでWysiwygEditor機能を利用する場合にのみ必要です。サーバ上の置き場所は、XOOPS_ROOT_PATH/common/ です。アーカイブには含まれていませんので、必要に応じて、common用WYSIWYG Editor を落としてきてください。
ラップディレクトリ
picoのwraps機能を利用する場合にのみ必要です。サーバ上の置き場所は、XOOPS_TRUST_PATH/wraps/(任意のディレクトリ) です。 アーカイブには含まれていません。ここに収めるのはユーザが作成したファイルです。

なお、モジュールフロントエンドに置かれた各モジュールのことを、「モジュールインスタンス(実体)」と呼ぶこともあります。

Page Top

wrapsモード anchor.png

picoにはwrapsモードという特徴的なモードがあります。

wraps モジュールの拡張版というイメージで、ApacheのPATH_INFOを利用する点は一緒です。PATH_INFOに関する注意点もwrapsと同じですので、そちらを参照してください。

wrapsモードを有効にすると、記事のURIが以下のような形式になります。

(mod_rewriteモード無効時)

http://example.com/modules/(dirname)/index.php/index.html

(mod_rewriteモード有効時)

http://example.com/modules/(dirname)/index.html

picoでは、"/index.html" の部分を「仮想パス」と呼びます。仮想パスの拡張子が.html(または.htm)で終わっている場合、picoはXOOPSヘッダとフッタをつけて出力します。いわゆるページラップです。

ラップされる中身は、通常、ラップディレクトリの対応するファイルから取得します。仮想パスが "/index.html" であれば、以下のファイルになります。

(ラップディレクトリ)/index.html

いわゆるDBコンテンツについても、任意の仮想パスを割り当てることができます。この場合は、コンテンツ編集画面で入力された本文が表示されます。wrapsモードが有効の場合、明示的に仮想パスが指定されていないコンテンツについても、自動的に仮想パスが割り当てられます。番号1のコンテンツは、デフォルトでは、以下のURIになります。

(mod_rewriteモード無効時)

http://example.com/modules/(dirname)/index.php/content0001.html

(mod_rewriteモード有効時)

http://example.com/modules/(dirname)/content0001.html

仮想パスの拡張子が.htmlまたは.htm以外のファイルについては、ラップディレクトリの対応ファイルが、拡張子に応じたMIMEヘッダとともに転送されます。この動作はwrapsモジュールとまったく同じです。

Page Top

ページラップ anchor.png

picoには、TinyDと同じく、ページラップする機能があります。

以下に、ページラップ機能について、TinyDとpicoを比較します。

項目TinyDpico
DBコンテンツとの違いそれぞれ編集画面から異なり、まったく別の概念本文フィルターとして「ページラップ」を通過するかどうかだけの差。他の本文フィルターをかけることさえ出来る
ラップファイルの置き場公開側のcontent/ の下ラップディレクトリ XOOPS_TRUST_PATH/wraps/(dirname) の下
相対リンクの扱いコンテンツ毎にWRAP2,WRAP3などが用意されていたWRAP2,WRAP3などは存在しない。相対リンクを使う場合は、wrapsモードと併用することで自然につながる

ページラップは、wrapsモードと混同されやすいと思いますが、前者は「指定された番号のコンテンツ(中身)をどこから持ってくるか」という設定であり、後者は「URIをどのように表現するか。そのURIからどのコンテンツ番号が呼ばれているか。該当する番号がなければ転送するか。」という設定です。

Page Top

インストール anchor.png

(1) XOOPS_TRUST_PATHの設定をします。(まだ一度もしていなければ)

(2) XOOPS_TRUST_PATH/modules/pico 以下にモジュール本体をアップロードします。

(3) XOOPS_ROOT_PATH/class/smarty/plugins 以下にSmartyプラグイン(ファイル2個)をアップロードします。以前、d3forum等をインストールしてあれば、同名のファイルが既に存在するかもしれませんが、気にせず上書きしてください。

(4) XOOPS_TRUST_PATH/PEAR/ 以下に、PEARファイルをアップロードします。(TextWikiが必要な場合のみ)

(5) XOOPS_ROOT_PATH/common/ 以下に、common用WYSIWYG Editorをアップロードします。(WYSIWYG機能が必要な場合のみ)

(6) XOOPS_ROOT_PATH/modules/ の下に、好きな名前(仮にcontentsとします)でディレクトリを作成し、そこにモジュールフロントエンドをアップロードします。

(7) モジュールに表示させるコンテンツそのものを、XOOPS_TRUST_PATH/wraps/の下に、(6)と同名のディレクトリを作って、そこに FTPでアップロードします。ファイル間のリンクが相対リンクになっていれば、特にリンクを書き換える必要はありません。(ページラップ機能を利用する場合のみ)

(8) お使いのXOOPSの管理画面に入り、モジュール管理よりインストールします。

2個目以降のpicoをインストールする時は、(6)〜(8)の手順だけでOKです。

Page Top

アップデート anchor.png

ファイル構成については、基本的にモジュール本体部分だけを上書きアップロードすればOKです。何らかの理由(画像ファイルの追加やデフォルトCSS変更)で、フロントエンド部分も上書きする必要がある場合にはその旨のアナウンスがあります。

あとは、必要に応じて(必要な場合はアナウンスがあります)、インストールされたすべてのpicoモジュールについて、モジュール管理からモジュールアップデートを行います。

特に、1.0系列から1.1/1.2系列にアップデートする際には、モジュールアップデートは必須です。

また、1.31から搭載された文字定数オーバーライドシステム(言語定数オーバーライド)を使用している場合は、”言語定数管理”の画面で、"更新"を行ってください。
更新をしないと_MD_PICO_LABEL_LOCKEDなど、新しく追加された言語定数が正しく表示されません。

Page Top

アンインストール anchor.png

  • モジュール管理からモジュールアンインストールします。
  • 複数あるpicoモジュールのうちの1個だけをアンインストールする場合は、FTP等で、モジュールフロントエンドだけを削除します。ラップディレクトリも必要に応じて適宜削除してください。
  • すべてのpicoモジュールを削除し、二度と利用しない場合は、モジュール本体を削除しても良いでしょう。ただ、XOOPS_TRUST_PATHの設定は残しておくことをお勧めします。
Page Top

使用方法 anchor.png

インストール直後に行った方が良いのは、トップカテゴリーの権限設定です。管理画面から「カテゴリーアクセス権限」に入り、適切に許可設定を与えてください。(カテゴリーアクセス権限参照)

今後、カテゴリーを作る時には、この設定がベースとなりますので、最初にやっておくのが面倒がないでしょう。

TinyDや他のpicoからの全面的な引き継ぎを行う場合は、この時点でインポートを行うべきです。(インポート/同期参照)

というのも、先に新しいコンテンツを作成してから、後からインポートを行うと、作っておいた新しいコンテンツがすべて消されてしまうからです。(この仕様は、記事番号などを引き継ぐためであり、どうしてもさけられません)

そこまで準備が出来たら、基本的には、カテゴリーやコンテンツを作っていくだけです。
適宜、編集・削除を行います。

以下、各コントローラの解説をします。

Page Top

カテゴリ作成/編集 anchor.png

親カテゴリー
カテゴリーの親カテゴリーを選択します。
仮想パス
ページラップ機能を利用する際のラップディレクトリへの対応です。ラップディレクトリからの相対パスをスラッシュ(/)から記述します。詳しくはTips参照のこと
タイトル
カテゴリのタイトルです。
説明
カテゴリーの説明文です。カテゴリトップ画面がコンテンツリスト表示である時にのみ意味を持ちます。デフォルトテンプレートでは、BBCode・自動リンク・自動改行などの処理を通過し、HTML特殊文字はエスケープされてからコンテンツリスト上部に表示されます。
表示順
同一レベルのカテゴリ同士の表示優先順位です。数字の少ない方が先(上)に表示されます。親カテゴリーやレベルが異なるカテゴリーとの関係では意味を持ちません。
オプション
カテゴリー毎に「一般設定」を変更(上書き)できる機能です。Tips参照のこと。

なお、トップカテゴリーだけは特殊なカテゴリーで、「編集」を行おうとすると、管理画面の一般設定に飛ばされます。
これは異常ではなく、picoの仕様です。

トップ以外のカテゴリーとは、ベースとなる一般設定をオーバーライドするシステムに過ぎないからです。

例えば、トップカテゴリーのカテゴリータイトルは、一般設定の「モジュールトップのメッセージ」となります。トップカテゴリーオプションとは、すなわち、一般設定の各設定そのものです。

言葉にすると判りづらいと思いますが、実際に使ってみればピンと来ると思います。

Page Top

コンテンツ作成/編集 anchor.png

カテゴリー
コンテンツの所属するカテゴリーを選択します。初期状態から変更する場合、投稿/編集権限のないカテゴリーを選択してしまうと、投稿が拒否されてしまう点に注意が必要です。
仮想パス
wrapsモードを利用している場合、URIのPATH_INFO部となります。ページラップフィルターを利用する場合は、ラップディレクトリからの相対パス、という意味も兼ねます。
表題
コンテンツの表題です。
HTMLヘッダー
特定のコンテンツだけに出力したいHTMLヘッダがある場合は、ここに入力します。モジュール全体が対象であれば、一般設定の「コンテンツ共通HTMLヘッダ」を利用するべきです。入力フォームが表示されていない場合、「HTMLヘッダカスタマイズ部表示」というチェックボックスをONにすることで表示されます。
本文
本文の編集フォームです。本文編集エディタ次第で、入力支援部が大きく異なります。ページラップフィルターを利用する場合は意味を持ちません。
本文フィルター
下の本文フィルター項目を参照のこと
表示順
リストやメニューにおける、同一カテゴリ内のコンテンツ同士の表示優先順位を指定します。この数値の少ないコンテンツほど先(上)に表示されます。
表示
書きかけ項目など、公開したくないコンテンツはここをOFFにします。
ページナビに表示する
ページナビゲーションの表示対象となります。
メニューに表示する
コンテンツメニューでの表示対象となります。
コメント可能
チェックされたコンテンツは、d3forumコメント統合でコメントをつけられる、ということを意味します。コメント機能そのものが機能していなければ、意味を持ちません。
本文キャッシュ
本文キャッシュを利用するかどうかを指定します。phpコードのように、閲覧条件によって出力内容が異なるコンテンツの場合は、OFFにすべきですが、検索時には本文キャッシュが利用されるので、あえて検索対象としたい場合にはONにしても良いでしょう。
ロック(モデレータ・管理者以外による変更禁止)
ver 1.55〜。モデレータと管理者以外がコンテンツを編集できなくします。
作成
コンテンツが作成された日時を示しています。最初に作成されてからは更新されません。
更新
コンテンツが更新された日時を示しています。変更する都度、更新されます。

何度か編集を繰り返すと、編集画面の下に「履歴」が蓄積されます。ここのリンクから、過去のバージョンを参照したりダウンロードできます。
また、現在との差分・直前バージョンとの差分の確認も出来ます。変更点が色分けしてあるので、一見するだけで違いが判るでしょう。

履歴の保存数は、一般設定で指定します。

Page Top

本文フィルター anchor.png

ページラップ
ラップディレクトリ内の仮想パスに対応したファイルから中身が読み込まれ、本文は無視されます
Smarty(XoopsTpl)
Smartyにテンプレートをパースさせます。<{$xoops_url}>など一通りのSmartyタグが利用できます。該当カテゴリーのモデレータ以外は有効にできません。
phpコード
phpのeval()関数の引数として渡します。当然、スコープはローカルで、PHPコードの開始に<?php記号は不要です。該当カテゴリーのモデレータ以外は有効にできません。
HTML特殊文字エスケープ
いわゆるhtmlspecialchars()です
PEAR TextWiki
PEAR TextWikiルールで整形されます
顔文字変換
テキストサニタイザの顔文字変換です
BBCode変換
テキストサニタイザのBBCodeおよび自動リンク変換が有効になります
自動改行
改行コードが<br />に変換されます。いわゆるnl2br()です
フィルター項目管理画面での入力値
Smarty(XoopsTpl)xoopstpl
phpコードeval
HTML特殊文字エスケープhtmlspecialchars
PEAR TextWikitextwiki
顔文字変換smiley
BBCode変換xcode
自動改行nl2br
Page Top

TinyDからの移行 anchor.png

TinyDからpicoへの移行は、さほど難しくないはずです。

同一dirnameで移行する場合はやや繁雑になりますが、以下の手順になるでしょう。

  • 別のdirnameにテンポラリ用picoをインストール(モジュール管理)
  • テンポラリ用picoへ、移行元TinyDをインポート(pico管理画面)
  • 画像・ラップファイルなどを移動して問題ないことを確認
  • 移行元TinyDをアンインストール(モジュール管理)
  • 移行元TinyDのファイル削除 (FTP等)
  • 元のdirnameにpicoインストール(モジュール管理)
  • テンポラリ用picoから、新picoにインポート(pico管理画面)
  • 画像・ラップファイルなどのコピー/移動

中身がDBコンテンツのみの場合は、管理画面からインポートすればほぼ問題なく動作します。
画像のパスだけが問題となりますが、必要に応じて、モジュールフロントエンド側にコピーしてください。

中身がページラップの場合は、TinyDのcontent/ディレクトリ下にあるファイルを、ラップディレクトリにコピーする必要があります。pico管理画面からインポートした後にコピーすれば良いでしょう。

元のTinyDで、WRAP3モードなどを利用していた場合は、移行先のpicoでもwrapsモードをONにする必要があります。

また、TinyDから記事単位でpicoにコピーしたい場合も、やはりテンポラリ用のpicoに全体をインポートし、テンポラリ用の管理画面-コンテンツ一括管理から、個別にエクスポートするのが良いでしょう。

Page Top

管理画面 anchor.png

Page Top

コンテンツ一括管理 anchor.png

picoでは、基本的にすべてのコンテンツを、公開側で編集・管理できますが、カテゴリーをまたいだ操作などをやりやすくするために、管理側にコンテンツを一括で管理できるコントローラを用意しています。

まず、編集対象とするカテゴリーをドロップダウンで選択してから、その右側の「送信」を押すことで、画面下半分に対象カテゴリーのコンテンツ一覧が表示されます。なお、「全コンテンツ」を選択すると、カテゴリー関係なく、すべてのコンテンツが表示されます。

この一覧画面の各フォーム要素を書き換えたりチェックしたりした後に、画面下にある「送信」ボタンを押すことで、一括変更ができます。

記事をまとめて削除/移動/コピーする場合は、各行の一番右にあるチェックボックスをチェックしてから、テーブル最下部のボタンをクリックします。

他のpicoモジュールへのコピー(エクスポート)を行った場合、対象とされたpicoモジュールのトップカテゴリーにコピーされます。

カテゴリー選択において、「削除済コンテンツ」を選択すると、過去に削除されたコンテンツを参照することもできます。ただし、直接の編集・復活は出来ませんので、復活する場合は、ダウンロードした内容から手作業で復元することになるでしょう。

Page Top

カテゴリーアクセス権限 anchor.png

picoでは、カテゴリー毎に細かい権限設定が可能です。

まず、編集対象とするカテゴリーをドロップダウンで選択してから、その右側の「送信」を押すことで、対象カテゴリーに対する権限が、「グループ毎」と「ユーザ毎」の2つの画面として表示されます。

「グループ毎の権限」では、全グループが表示されていますので、各グループについて、適切な権限となるよう、チェックをしたり、外したりします。

「ユーザ毎の権限」では、ユーザ名(uname)かユーザ番号(uid)でコントロールします。すでに追加されているユーザを消す場合は、閲覧権限のチェックを外してください。閲覧権限はすべての権限の前提となるため、閲覧権限がない時点で、そのユーザのエントリそのものが削除されます。

これらの権限は、すべて論理和(OR)が有効となります。

例えば、「登録ユーザグループ」には単に閲覧権限が与えられ、「特権ユーザグループ」にはモデレータ権限が与えられていた場合、その両方のグループに所属するユーザは、モデレータ権限を持ちます。

「登録ユーザグループ」にしか所属していないユーザであっても、「ユーザ毎の権限」において、個別にモデレータ権限を与えられれば、やはりモデレータ権限を持ちます。

個別に権限を奪う設定は存在しないので、グループ毎にはなるべく低めの権限を与えておくのが良いでしょう。

以下、各権限を解説します。

閲覧権限
コンテンツの存在(タイトル等)を認識できる権限です。他のすべての権限の前提となります。
全文閲覧権限
コンテンツの本文を読むことができる権限です。
投稿権限
該当カテゴリーに新規記事を投稿できる権限です。この権限があっても、「承認不要」権限がないユーザによる投稿は、モデレータによる承認まで表示対象となりません。
編集権限
該当カテゴリー内のコンテンツを編集できる権限です。この権限があっても、「承認不要」権限がないユーザによる変更は、モデレータに承認されるまで反映されません。(従前のデータのまま表示される)
削除権限
コンテンツを削除する権限です。削除については、「承認不要」権限の有無によらず、即座に反映される点に注意が必要です。
承認不要
投稿や編集が即座に反映される権限です。ある程度、信用できるユーザにのみ許可するべきです。
モデレータ
カテゴリーの管理者権限です。具体的には、不可視コンテンツが見える、申請を承認できる、カテゴリーを編集できる、一部の危険なフィルターも利用できる、など。ただし、管理画面サイドには入れないなど、モジュール管理者権限には及びません。
サブカテゴリー作成権限
該当カテゴリーの下に、新しいカテゴリーを作成する権限です。

なお、公開側から作成されたサブカテゴリーについての権限は、親カテゴリーとまったく同じ内容で自動作成されます。

そのため、利用最初の段階で、トップカテゴリーについて、妥当な権限設定しておけば、後から、個々のカテゴリーについてあらためて権限設定する手間は格段に減るでしょう。

Page Top

インポート/同期 anchor.png

Page Top
インポート anchor.png

同じXOOPSサイトにインストールされたTinyDまたは他のpicoから、モジュール単位でインポートできます。

あくまでモジュールまるごとのインポートですので、今のpicoモジュール内のコンテンツデータはすべて削除される点に注意が必要です。(コンテンツ単位でのインポートが必要な場合は、読込元の「コンテンツ一括管理」から記事を選択して、「他のpicoへのコピー」を行います。TinyDから記事単位でコピーする場合は、一時的に作った別のpicoにインポートしてから同様の作業をします)

TinyDからのインポートの場合のみ、例外的に今のpicoモジュールのカテゴリーは(カテゴリーに対する権限設定も)削除されません。これはTinyDにカテゴリーが存在しないためです。

他のpicoからのインポートであれば、カテゴリーもカテゴリー権限もまるごとインポートされます。

ある特定の記事だけをコピー/移動したい場合は、コンテンツ一括管理を利用してください。

Page Top
同期 anchor.png

カテゴリーのツリー構造・コンテンツにおける投票数など、速度をかせぐために持たせている冗長情報がおかしくなった時に実行してください。

同期をしなければならいことはあまりないはずですが、phpMyAdminなどで直接、投票テーブルやカテゴリーテーブルをいじった後のつじつま合わせには便利でしょう。

Page Top
本文キャッシュのクリア anchor.png

サイトを移動するなどして、コンテンツ本文の表示や検索結果がおかしくなっている時にだけ実行してください。正常な時に実行すると、パフォーマンスの低下や検索ミスなどの原因になります。

Page Top

拡張機能 anchor.png

survey プラグインなどで、*_pico_content_extras テーブルに格納されている値を閲覧/削除したり、CSV で取得できたりします。

Page Top

テンプレート管理 anchor.png

いわゆるtplsadminです。
そのモジュールのテンプレートを管理します。
altsysがインストールされている時にだけ表示されます。

Page Top

ブロック/アクセス管理 anchor.png

いわゆるblocksadminです。
ブロック管理およびモジュールとブロックに関するアクセスコントロールができます。
altsysがインストールされている時にだけ表示されます。

Page Top

一般設定 anchor.png

wrapsモードを有効にする
前述したwrapsモードを有効にします。ApacheのPATH_INFO機能が利用できないサーバでは有効にしないでください。
mod_rewriteモードを有効にする
Apacheのmod_rewrite機能を利用して、より静的コンテンツっぽいURIにします。wrapsモードとの兼ね合いが重要で、wrapsモードがONの時には、モジュールフロントエンド直下の.htaccess_wrapsを.htaccessにリネームします。同じく、wrapsモードがoffの時には、.htaccess_normalを.htaccessにリネームします。このリネームによって500 Internal Server Error が出るようなら、このモードの利用は諦めた方が良いでしょう。
HTMLラップファイルの自動DB登録
ページラップ用ディレクトリに置かれたHTMLファイルを、自動的にコンテンツとして登録する機能です。詳しくはTipsを参照してください。
モジュールトップのメッセージ
コンテンツリストをモジュールトップ画面とした時に表示される文言です。より正確には、トップカテゴリーの「説明」フィールドです。
モジュールトップでは自動生成メニューを表示する
「はい」とした場合、モジュールトップでは、階層カテゴリー毎に区切られたメニュー画面を表示します。
カテゴリートップでリストを表示する
「はい」の場合、カテゴリートップではサブカテゴリーと直下のコンテンツがリスト式に表示されます。「いいえ」の場合、そのカテゴリー内で最も表示優先度の高いコンテンツが表示されます。
※「モジュールトップでは自動生成メニューを表示する」を「はい」にしている場合、そちらが優先されます。
パンくずを表示する
「はい」「いいえ」から選びます。xoops_breadcrumbsに対応したテーマを利用する場合は、無効化しておくのが良いでしょう。
ページナビゲーションを表示する
同上
印刷画面へのリンクを表示する
同上
友達に紹介するリンクを表示する
同上
tellafriendモジュールを利用する
「友達に紹介する」アイコンのリンク先についての設定です。「はい」の場合、tellafriendのメールフォーム画面へのリンクとなります。「いいえ」の場合、mailto:のリンク(ローカルなメーラーが立ち上がる)となります。
検索で「投稿者」という概念を有効にする
picoを静的コンテンツとして利用する場合は「いいえ」、投稿タイプのモジュールとして利用する場合は「はい」とするのが良いでしょう。
デフォルトフィルターセット
コンテンツ作成画面における、「本文フィルター」の初期チェック状態を指定します。デフォルトは、htmlspecialchars|smiley|xcode|nl2br です。HTMLコンテンツをメインで利用する場合は、smiley|xcode|nl2br とするのが良いでしょう。
強制フィルター
本文として入力された内容が必ず通過するフィルターを記述します。現実には、ゲスト等に記事投稿を許可するために、 htmlspecialchars を強制設定する、という用途がほとんどすべてでしょう。
禁止フィルター
利用されると問題になりそうなフィルターをここで無効化します。管理者以外に投稿を許可する時には、SmartyフィルターとPHP(eval)フィルターの2つを禁止しておくことを勧めます。その場合の設定例は「xoopstpl,eval」となります。
サブメニューにコンテンツも表示する
メインメニューやマルチメニュー用のサブメニューへの表示を、「サブメニューのみ」とするか「サブメニューとコンテンツを同列表示」するか、ここで選択します。なお、picoのサブメニューは階層構造対応しています。
sitemapにコンテンツも同列表示する
sitemapモジュール用プラグインの動作設定です。sitemapは通常カテゴリーレベルまでしか表示しませんが、ここを「はい」とすることで、そのモジュールのみ、コンテンツタイトルまで表示するようになります。なお、表示対象となるコンテンツは、コンテンツ編集において「メニューに表示する」と指定されたものだけです。
投票機能を利用する
「はい」「いいえ」から選びます
ゲスト投票の時間制限
ゲストからの2重投票を防ぐための設定です。指定された秒数間、同一IPからの投票を受け付けません。0とした場合は、ゲスト投票そのものが禁止されます。ちなみに、登録ユーザは1コンテンツに対して何度でも投票できますが、二重投票にはならず、前の投票を修正した形になります。
コンテンツ共通HTMLヘッダ
このpicoモジュール全体に出力したいHTMLヘッダがある場合、ここに記述します。
モジュール用CSSのURI
CSSファイルのURIを指定します。{mod_url}という特別の記法を利用でき、XOOPS_URL/modules/(フロントエンドdirname) に置き換わります。1.0でのデフォルト値は {mod_url}/index.css で、モジュールフロントエンド直下に置かれたファイルをCSSとして読み込む形でしたが、1.15以降、{mod_url}/index.php?page=main_css と、テンプレートとしてのCSSを利用する形がデフォルトになりました。ファイルとして独立しているCSSの方が使いよければ、そのCSSファイルへの絶対/相対パスを記述してください。
イメージファイルディレクトリ
このモジュール用のイメージが格納されたディレクトリをモジュールディレクトリからの相対パスで指定します。デフォルトはimagesです。
本文編集エディタ
本文を編集するエディタを指定します。xoopsdhtmlは一般的なXOOPS編集画面、common/spaw, common/fckeditor はそれぞれ、common版SPAWとFCKEditorを意味します。
履歴機能を何世代まで保存するか
編集履歴の保存数を設定します。データベース容量に余裕があるなら、大きな数字にしておくと、いざという時に助かるでしょう。デフォルトは20世代です。
履歴の一世代として保存する最小時間(sec)
同じコンテンツを何度も細かく更新する場合などはあっという間に、履歴世代が溜まってしまいます。それを避けるために、前回の更新からあまり時間が経過していない時には履歴として保存しないための設定です。デフォルトは300sec(5分)です。
画像ファイルのブラウザキャッシュ (wrapsモード時のみ)
wrapsモードでは、ラップディレクトリからファイルを転送しますが、そのファイルのキャッシュ可能時間を設定します。ほとんどの場合、長めの数字でも問題ないでしょう。デフォルトは3600sec(1時間)です。
コメント統合するd3forumのdirname
コメントを利用する場合、対象となるd3forumのdirnameを指定します。
コメント統合するフォーラムの番号
コメントを利用する場合、対象となるd3forumのフォーラム番号を指定します。
イベント通知機能の設定
XOOPSの標準的なイベント通知設定
特定イベントを有効にする
同上
Page Top

ブロック anchor.png

ブロック名テンプレート説明ブロック複製ブロックオプション
メニュー(dirname)_block_menu.html各カテゴリー毎にコンテンツ一覧を表示するカテゴリー絞り込み・ブロックテンプレート
コンテンツ内容(dirname)_block_conetnt.htmlブロックオプションで指定された番号のコンテンツ(本文)を表示するコンテンツ番号・ブロックテンプレート
コンテンツ一覧(dirname)_block_list.htmlコンテンツを指定された順番でリスト表示するカテゴリー絞り込み・表示順・ブロックテンプレート
サブカテゴリー一覧(dirname)_block_subcategories.htmlサブカテゴリーの一覧を表示する親カテゴリー・ブロックテンプレート
自身の承認待ち(dirname)_blockedit_mywaitings.html承認待ちコンテンツへのリンクを表示するブロックテンプレート

ブロックオプションの「カテゴリー絞り込み」とは、ある特定のカテゴリーだけを対象とするための設定です。

トップカテゴリー直下(内のコンテンツ)だけを対象としたい場合は0とだけ指定します。あくまでそのカテゴリー番号の直下だけが対象となる点に注意が必要です。

カテゴリー5年生(cat_id=5) の下に、5年1組(cat_id=10)と5年2組(cat_id=11)という2つのサブカテゴリーがあって、5年生に関するすべてのコンテンツを表示させたい、ということであれば、以下のように指定します。(区切り文字がカンマである点に注意)

5,10,11

そのカテゴリー番号は、カテゴリー表示画面でURIを見ればすぐに判るはずです。

「コンテンツ内容」ブロックでは、コンテンツ番号を指定します。wrapsモードで仮想パスをしている場合など、公開側のURIからだとコンテンツ番号が容易に判りません。この場合、「コンテンツ一括管理」画面におけるリンクを参照してください。

「ブロックのテンプレート」では、ブロック個別に異なるテンプレートを使う方法を提供しています。デフォルトはモジュールインストール時に登録されたDBテンプレートで、以下のようなリソース名です。

db:pico_block_*.html

ここを書き換えることで、任意のテンプレートをそのブロックに割り当てることができます。

例えば、テーマdefaultの下に、pico_block_menu_customized.html というファイル(themes/default/pico_block_menu_customiz​ed.html) を置いて、そのファイルをテンプレートとする場合は、以下のように記述します。

default/pico_block_menu_customized.html

リソース種別を明示しない場合、パスの基準が XOOPS_ROOT_PATH/themes/ であることに注意が必要です。(これはXOOPSの基本仕様なので覚えておいて損はありません)

もちろん絶対パス指定のFILEテンプレートも利用できます。この場合は、リソース種別指定が必要です。

file:/home/myhome/templates/pico_block_menu_customized.html

altsysやtplsadminを利用したい場合、DBテンプレートの数を増やす、という手も有効です。XOOPS_TRUST_PATH/modules/pico/templates/​ の下にファイルを追加して、モジュールアップデートを行う。たったそれだけで、DBテンプレートが追加されます。(D3モジュールの共通仕様)

もちろん、モジュールアンインストール時には、追加されたDBテンプレートごと削除されますので、ゴミとして残ってしまうことを心配する必要はありません。

Page Top

テンプレートセット anchor.png

テンプレート名説明
pico_admin_category_access.html管理画面のカテゴリーアクセス権限用
pico_admin_contents.html管理画面のコンテンツ一括管理用
pico_admin_extras_detail.html
pico_admin_extras.html
pico_admin_import.html管理画面のインポート/同期用
pico_block_content.htmlコンテンツ内容ブロック用
pico_block_list.htmlコンテンツ一覧ブロック用
pico_block_menu.htmlメニューブロック用
pico_block_mywaitings.html
pico_block_subcategories.html
pico_block_tags.html
pico_blockedit_content.htmlブロック管理画面用(コンテンツ)
pico_blockedit_list.htmlブロック管理画面用(コンテンツ一覧)
pico_blockedit_menu.htmlブロック管理画面用(メニュー)
pico_blockedit_mywaitings.htmlブロック管理画面用(承認待ち)
pico_blockedit_subcategories.htmlブロック管理画面用(サブカテゴリ)
pico_blockedit_tags.htmlブロック管理画面用(タグ一覧)
pico_inc_breadcrumbs.htmlパンくず部分
pico_independent_print.html印刷用画面
pico_independent_rss20.htmlRSS出力用
pico_independent_singlecontent.htmlシングルコンテント用
pico_main_category_form.htmlカテゴリーの編集フォーム
pico_main_content_form.htmlコンテンツの編集フォーム
pico_main_listcontents.htmlコンテンツリスト表示用
pico_main_diffhistories.html
pico_main_menu.html自動生成トップメニュー表示用
pico_main_querycontents.htmlタグによる絞り込み時の表示用
pico_main_viewcontent.htmlコンテンツ詳細画面用
pico_main_viewhistory.html
pico_main.csspicoをメイン部として表示する時のCSS

pico の部分が、モジュールインスタンス名に置き換わります。

Page Top

イベント通知の種類 anchor.png

picoに用意されているイベント通知は一種類だけです。

承認待ち
新規投稿・内容変更などで、承認が必要な場合に通知されます。通知先は記事の所属するカテゴリーのモデレータのみです。一般ユーザでも、イベント通知の登録そのものは出来ますが、モデレータ権限のないカテゴリーについての通知は送信されません。また、投稿・変更があっても、それについて承認が必要でない場合にも、やはり通知されません。
Page Top

Tips anchor.png

Page Top

カテゴリー仮想パスの活用 anchor.png

wrapsと違い、picoにはカテゴリーがあります。

そのカテゴリーの仮想パスを上手に設定することで、ラップディレクトリに置いたHTMLファイルを自動的にカテゴライズすることができます。

例えば、小学校の学級ホームページを作るために、picoモジュールをclassというdirnameでインストールしたとします。その場合、ラップディレクトリは、XOOPS_TRUST_PATH/wraps/class/ となるわけですが、その直下に学年毎のディレクトリを作り、学年ディレクトリの下にそれぞれ組のディレクトリを作ります。(ヒエラルキーの構築)

class/                     (トップカテゴリーに相当)
      5/                   (カテゴリー「5年生」に相当)
        5-1/
        5-2/               (カテゴリー「5年2組」に相当)
            profile.html

その上で、カテゴリー管理から、各クラスのディレクトリをやはりツリー状に作り、仮想パスを指定しておきます。例えば、「5年2組」のカテゴリーは、親カテゴリーが「5年生」で、仮想パスは /5/5-2 です。(当然、先に「5年生」というカテゴリーを作っておく必要があります)

この場合、

XOOPS_URL/modules/class/index.php/5/5-2/profile.html

へのアクセスは、自動的に「5年2組」のカテゴリーである、として扱われます。コンテンツとして登録されていなくても、です。もちろん、パンくずにも、

トップ > 5年生 > 5年2組 > (ページ名)

と表示されます。

「HTMLラップファイルの自動DB登録」と併用すれば、「5年2組」カテゴリーに所属するコンテンツとして自動登録されます。

なお 5-2/ のさらに下にサブディレクトリがあって、その内側のHTMLファイルにアクセスがあった場合、そのサブディレクトリを仮想パスとするカテゴリーがない限り、カテゴリー「5年2組」となります。

つまりは、最長一致するカテゴリーに所属する、ということです。

Page Top

wrapsモードのHTMLラッピング機能 anchor.png

wrapsモードにおいて、拡張パス指定されたファイルがラップディレクトリから転送される場合、以下の3種類のパターンに分けられます。(もちろん、対応ファイルがない場合は、単に404エラーです)

ページラップフィルターによる転送
DBにファイルが登録されているもの
HTMLラッピング
DBに登録されていない、HTMLファイル
単純転送
DBに登録されていない、HTML以外のファイル

このうち「HTMLラッピング」の動作は以下の通りです。

  • ファイルの置かれたパスから、カテゴリーを求める(なければtopカテゴリー扱い)
  • ファイルのエンコーディングを見て、XOOPSの内部エンコーディングに揃える(通常はEUC-JP)
  • 最初の<title></title>の内側をsubjectとして扱う
  • <body></body>の内側を切り出して、XOOPSに渡す
  • その結果、ヘッダとフッタがつけられて表示される

これらのHTMLファイルは、DBに登録されたファイルと違い、コンテンツIDが振られていないため、以下の機能が利用できません。

  • コメント
  • 投票
  • 閲覧数カウント
  • ページナビゲーション
  • 友達に知らせる
Page Top

自動DB登録のタイミング anchor.png

「HTMLラップファイルの自動DB登録」をONにすると、ラップディレクトリの中を走査して、HTMLファイルを一通りDBに自動登録します。

ただ、アクセスの度に、ラップディレクトリの中を走査していたのでは、無駄に重いため、登録するファイルかどうか調べるタイミングがあります。

それを判断するのは、対応するラップディレクトリのタイムスタンプが、前回の走査より新しいかどうか、です。

通常、あるディレクトリにファイルをFTP等でアップロードした場合、所属するディレクトリのタイムスタンプも更新されるので、ほとんどの場合、これでうまく行くでしょう。カテゴリーの仮想パスと対応していないサブディレクトリ内だけを更新した場合などは、あえて上位のディレクトリのタイムスタンプを更新することで、自動登録させることができます。

逆にいえば、仮想パスに対応するディレクトリのタイムスタンプさえ変わらなければ、そのカテゴリー内に自動的にコンテンツが追加されることはありません。つまり、自動登録されたコンテンツをあえて削除してもすぐに再登録されてしまう恐れはありません。

もちろんそれでも何かの拍子に再登録されてしまう可能性が残っているので、どうしても自動登録させたくないコンテンツについては、削除する代わりに「非表示」とするのが良いでしょう。

Page Top

パンくず機能 anchor.png

picoはモジュール単独としてもパンくずを表示できますが、xoops_breadcrumbsに完全対応していますので、xugj_assign.php を使ってテーマパンくずを実装することを勧めます。
(その場合は、一般設定の「パンくずを表示する」をOFFにする)

お使いのテーマにパンくずを実装するには下を参照してください。
http://xoops.peak.ne.jp/modules/news/ind​ex.php?page=article&storyid=405

Page Top

コメント機能の利用 anchor.png

picoは正しくD3モジュールであり、XOOPSコメントには対応しません*1。その代わりに、用意されているのが、d3forumコメント統合機能です。

d3forumコメント統合によって、picoコンテンツへのコメント機能を有効化するための手順は以下の通りです。

  • d3forumを任意のディレクトリ名dirnameにインストールする(インストール済のd3forumを利用するならスキップして良い)
  • d3forumにおいて、picoモジュールへのコメント専用の空フォーラムを一つ新規作成する
    • その際、「フォーラム作成/編集」の「コメント統合時の参照方法」は空欄としておくこと
    • そのフォーラム番号を記憶しておく (URIで forum_id=nとなっている部分がフォーラム番号)
  • picoの一般設定画面に入る
    • 「コメント統合するd3forumのdirname」欄に、d3forumのdirnameを入力する
    • 「コメント統合するフォーラムの番号」欄に、さきほどのフォーラム番号nを入力する
  • コメントを許可するコンテンツを作成・編集し、「コメント可能」にチェックを入れる

以上で、d3forumコメント統合機能は有効化されます。
d3forum側の「フォーラム編集」を開いてみると、「コメント統合時の参照方法」に自動的に値が入っているはずです。picoの場合、以下のような記述になります。

(モジュールインスタンス名)::PicoD3commentContent::pico
Page Top

モジュール設定ファイルのカスタマイズ anchor.png

picoの基本的かつ重要な動作についての設定は、モジュールの一般設定ではなく、ある特定のファイルで定義されています。(一般設定で気軽にいじられてしまうと、復旧が大変なことになりそうな設定だから、という理由です)

その特定のファイルとは、TRUST_PATH側の include/constants.php です。

実はこのファイル、正式版からは消される運命ですので、正式版からインストールした場合には存在しないかもしれません。その場合は、include/constants.dist.php をリネームして、.dist の部分を消してください。

なぜこんな複雑なことをするかというと、正式版のアーカイブには、constants.dist.php の方しか含まれないので、後からpicoを上書きアップロードしても、設定ファイルである constants.php は上書きされなくなります。

constants.php をあえて作っていない場合は、constants.dist.php の方が読み込まれます。

以下、設定を解説します。
いずれも上級者向けの解説となっています。
意味が判らなければ、この部分のカスタマイズはやめておいた方が無難です。

_MD_PICO_WRAPBASE
ラップディレクトリ指定です。XOOPS_TRUST_PATHからの相対パスで指定します。初期値は/wrapsです。マルチサイトなどでXOOPS_TRUST_PATHを共有していて、同名のモジュールのバッティングを避ける、なんて時にはここを変更すると良いでしょう。
_MD_PICO_AUTONAME4SPRINTF
wrapsモードでの運用時に、仮想パスを明示的に指定しなかったコンテンツに対して自動的に割り当てられるPATH_INFO部分です。sprintf()の引数形式です。初期値は、/content%04d.html です。wrapsモードではない時でも、mod_rewriteモードの際にはこの形式で変換されます。
_MD_PICO_AUTONAME4PREGEX
一つ上の設定で割り当てられたPATH_INFOからコンテンツ番号を求めるための正規表現(perl形式)です。当然、上の設定と対応していなければなりません。初期値は、?^/content([0-9]{4})\.html$? です。
_MD_PICO_AUTOCATNAME4SPRINTF
wrapsモードでの運用時に、カテゴリー用URIを生成するためのフォーマットです。sprintf()の引数形式です。初期値は、/category%04d.html です。wrapsモードではない時でも、mod_rewriteモードの際にはこの形式で変換されます。
_MD_PICO_AUTOCATNAME4PREGEX
一つ上の設定で割り当てられたPATH_INFOからカテゴリー番号を求めるための正規表現(perl形式)です。上の設定と対応していなければなりません。初期値は、?^/category([0-9]{4})\.html$? です。
_MD_PICO_WRAPS_DISALLOWEDCHARS4PREGEX
wrapsモードでPATH_INFO部分に存在してはいけない文字などを指定する正規表現(perl形式)です。初期値の ?[^a-zA-Z0-9_./+-]? は、半角英数字といくつかの記号以外は、すべて空文字に置き換えることを意味します。
_MD_PICO_ALLOWEDEXTSINVPATH
wrapsモード時、各コンテンツの仮想パスの拡張子として許可されるものをパイプ(|)で区切って列挙します。初期値は htm|html です。
_MD_PICO_EXTS4HTMLWRAPPING
wrapsモード時、HTMLラッピング対象となる拡張子を、パイプ(|)で区切って列挙します。初期値は htm|html|php で、ここにない拡張子のファイルは、単純転送されます。
_MD_PICO_AUTOREGIST4PREGEX
HTMLラップファイルの自動DB登録機能を有効にしている際の、登録対象となるファイルを正規表現(perl形式)で指定します。 初期値は、?^[a-zA-Z0-9_./+-]+\.(html|htm)$? で、これは「半角英数字といくつかの記号だけから構成されたノード部で、かつ、拡張子がhtmlまたはhtmのファイル」だけが自動登録の対象となることを意味しています。
Page Top

シングルコンテント機能 anchor.png

picoに登録したコンテンツを、単独で表示したい、というケースはよくあります。特に、ポップアップ画面やインラインフレームを多用するサイトでは頻出します。

picoにはそのためのコントローラも実装してあります。単独表示したいコンテンツが表示されるURIの最後に、

?page=singlecontent

という文字列を付与するだけです。

http://www.example.com/modules/pico/sample.html

上記URIで表示されるコンテンツを単独表示するURIは以下のようになります。

http://www.example.com/modules/pico/sample.html?page=singlecontent
http://www.example.com/modules/pico/index.php?content_id=1

上記URIで表示されるコンテンツを単独表示するURIは以下のようになります。

http://www.example.com/modules/pico/index.php?content_id=1&page=singlecontent
Page Top

カテゴリー毎のオプションオーバーライド機能 anchor.png

picoは、カテゴリー毎のオプションオーバーライド機能に対応しています。

詳しくはこちらを参照してください。

http://xoops.peak.ne.jp/md/news/index.ph​p?page=article&storyid=386

Page Top

モジュールインスタンス毎に異なる言語ファイルを利用する方法。 anchor.png

picoは、D3モジュールですので、モジュールインスタンス毎に異なる言語設定を利用することも簡単にできます。

詳しくはこちらを参照してください。

http://xoops.peak.ne.jp/md/news/index.ph​p?page=article&storyid=363

Page Top

モジュールアイコンの差し替え法 anchor.png

picoは、このモジュールの性格上、同一サイト内にかなりの数を同時にインストールされることも多いと思いますが、X2管理画面では、アイコンが多くなってくると目的のアイコンを探すのが大変になります。

色分け・サイズ変更などを施して、見つけやすくしたアイコンに差し替えることも簡単にできます。

詳しくはこちらを参照してください。

http://xoops.peak.ne.jp/md/news/index.ph​p?page=article&storyid=399

なんらかの理由で、どうしてもpicoのモジュールアイコンが利用できない時にも、この方法を使うと表示されるかもしれません。

Page Top

静的コンテンツっぽいURIを利用したい anchor.png

そのために、mod_rewriteモードが存在します。

一般設定の「mod_rewriteモードを有効にする」を「はい」とすることで、この機能が有効になりますが、利用しているサーバのhttpdがApacheであり、かつ、mod_rewriteが.htaccessで指定できなければこの機能は事実上機能しません。

wrapsモードとmod_rewriteモードの組み合わせで4パターンが考えられますが、それぞれコンテンツのURIが大きく変わってきますので、注意が必要です。

Page Top
wrapsモードOFF+mod_rewriteモードOFF anchor.png

もっともベーシックなモードです。静的なURI表現は一切ありません。
コンテンツ

http://www.example.com/modules/pico/index.php?content_id=1

カテゴリー

http://www.example.com/modules/pico/index.php?cat_id=1
Page Top
wrapsモードOFF+mod_rewriteモードON anchor.png

モジュールフロントエンド直下の .htaccess_normal を .htaccess にリネームする必要があります。
すべてフォーマットに数字が埋め込まれる形でのURIになります。
コンテンツ

http://www.example.com/modules/pico/content0001.html

カテゴリー

http://www.example.com/modules/pico/category0001.html
Page Top
wrapsモードON+mod_rewriteモードOFF anchor.png

仮想パス有無によって異なります。また、仮想パスを指定する場合、ディレクトリの深さも表現されます。
コンテンツ

http://www.example.com/modules/pico/index.php/content0001.html (仮想パス指定無し)
http://www.example.com/modules/pico/index.php/index.html (仮想パス指定が /index.html)

カテゴリー

http://www.example.com/modules/pico/index.php/category0001.html (仮想パス指定無し)
http://www.example.com/modules/pico/index.php/subcat/ (仮想パス指定が /sucat)
Page Top
wrapsモードON+mod_rewriteモードON anchor.png

モジュールフロントエンド直下の .htaccess_wraps を .htaccess にリネームする必要があります。
仮想パス有無によって異なります。また、仮想パスを指定する場合、ディレクトリの深さも表現されます。
コンテンツ

http://www.example.com/modules/pico/content0001.html (仮想パス指定無し)
http://www.example.com/modules/pico/index.html (仮想パス指定が /index.html)

カテゴリー

http://www.example.com/modules/pico/category0001.html (仮想パス指定無し)
http://www.example.com/modules/pico/subcat/ (仮想パス指定が /sucat)

いずれのURI形式においても、コンテンツURIの最後に?page=printを付与すれば印刷用画面が、?page=singlecontentを付与すればシングルコンテント画面が表示されます。同様に、カテゴリーURIの最後に?page=rssを付与すれば、RSS表示用のURIとなります。

Page Top

よくある質問 anchor.png

Page Top

モジュールアイコンが表示されない anchor.png

原因はいろいろ考えられますが、いずれの場合でも、PHPかXOOPSがおかしい状態になっているために発生します。

PHPデバッグをONにした上で、そのモジュールアイコン画像だけを表示してみれば原因がつかめるかもしれません。

どうしても解決できない場合は、module_icon.png を、モジュールフロントエンド直下にコピーするという手もあります。

Page Top

インストール時などに、Error [Xoops]: Smarty error というエラーが出る anchor.png

エラー文を良く読んでください。

unrecognized tag 'xoopsdhtmltarea'

などと書いてあれば、その名前のプラグインがアップロードできていません。

Page Top

管理画面に入ろうとすると「wrong request」と表示されてしまう anchor.png

altsysが正しくインストールされているか確認してください。

Page Top

作成したコンテンツを表示するとHTMLがそのまま表示されてしまう anchor.png

本文フィルターの「HTML特殊文字エスケープ」にチェックが入っていないか確認してください。
HTMLタグを使ったコンテンツをメインに作る場合は、最初から「一般設定」のデフォルトフィルターセットを、下のようにしておくとその都度チェックを外す手間が省けることでしょう。

smiley|xcode|nl2br
Page Top

wrapsモードで時々画面が真っ白になる。時間をおくと復活する anchor.png

Protectorが動作してしまっています。
wrapsモードで大量の画像もラップディレクトリの下に置いた場合、それらの画像が<img>タグなどで呼ばれるだけでも、Protectorのカウントになってしまうからです。
Protector一般設定の「DoS監視の対象から外すモジュール」にモジュールディレクトリ名(モジュールフロントエンド側)を登録することで、改善されます。
下の「wrapsモード時に、画像などの表示が遅い」も参照のこと。

Page Top

wrapsモード時に、画像などの表示が遅い anchor.png

wrapsモードで、画像のパスを "images/sample.gif" などとすると、画像もすべてwrapsディレクトリの下に置いて転送することになります。これだと、転送にPHPやXOOPSがからんでくるため、かなり重く感じられることでしょう。

ゲストにも公開してよい画像であれば、<img>タグなどの画像パスを以下のようなパターンで記述して、それぞれ対応する場所に画像をわけてアップロードすることで、画像転送はApacheだけの仕事となるので、格段に速度が向上します。

"/images/sample.gif"
XOOPSルート直下のimages/
"/themes/(mytheme)/images/sample.gif​"
利用中テーマ下のimages/
"../images/sample.gif"
picoモジュールフロントエンドのimages/

また、一般設定において「画像ファイルのブラウザキャッシュ」を長めに設定することでも、改善されるかもしれません。

Page Top

周辺技術 anchor.png

Page Top

piCalプラグイン anchor.png

最新のpiCalモジュールには、pico用のプラグインが2種類含まれています。

pico-content-modified.php
コンテンツの最終更新日を反映するプラグイン。オプションでカテゴリー番号を指定するとそのカテゴリーだけから選択される。複数指定する場合は、カンマで区切ること。(カテゴリー番号2と3だけを表示する場合は、2,3 となる)
pico-content-created.php
コンテンツ作成日を反映するプラグイン。オプションは上と同様
Page Top

Smartyプラグイン anchor.png

基本的に pico 内部で用いるので、TRUST_PATH/modules/pico/smarty_plugins/ に入っていれば使えるのですが、pico 外部、theme などで使いたいときは、/class/smarty/plugins/ に当該プラグインをコピーして使いましょう。

Page Top
picoプラグイン anchor.png

picoの特定コンテンツを表示するためのSmartyプラグイン、function.pico.php があります。
テーマ内のテキストを直書きしたい場所に、

<{pico dir="pico" id="1"}>

などと埋め込んでおくと、その文言を、picoのコントローラから編集できて便利でしょう。

http://xoops.peak.ne.jp/md/news/index.ph​p?page=article&storyid=415

なお新しい pico プラグインでは

<{pico dir="pico" id="1" item="hoge"}>

という記述もできます。こうすることで、<{$hoge}> にコンテンツの内容をアサインできますので、

<pre>
<{""|var_dump:$hoge}>
</pre>

というように内容を確認してみてください。

ちなみに、テーマ等で pico プラグインを使ってコンテンツを呼び出すと、div にくくられた内容が出てきますが、ほかの変数にアサインして用いることで、この div を出さずにコンテンツを呼び出すことができるようになります。

Page Top
pico_listプラグイン anchor.png

picoの所与のカテゴリに属するコンテンツ群を表示するためのSmartyプラグインです。1.57 以降に同梱されています。

<{pico_list dir="pico" cat_id="1" item="list" order="o.weight" limit="5"}>

というように用います。item を指定すると、上記の場合であれば、$list に値をアサインします。
値をアサインしない場合は、そのまま block_list.html と同じフォーマット表示されます。
さまざまな用途に対応できる強力なプラグインですので、ぜひ値をアサインしたら、

<pre>
<{""|var_dump:$list}>
</pre>

などでどんな値を使えるかを確認してみてください。
ちなみに order などの値が有効になるのは、引数 item(もしくは assign)で、別の smarty 変数にアサインしているときだけで、block_list.html で表示をするときには、order などは有効になりません。

limit の値は下記のように範囲を指定できます。

<{pico_list dir="pico" cat_id="1" limit="5"}>

これは5件のみ。

<{pico_list dir="pico" cat_id="1" limit="10,5"}>

10番目〜15番目の5件が表示される。

つまり、

  • 数値が1つの場合は件数のみの指定
  • 数値が2つの場合は(オフセット, 件数)という指定
    です。

order になかで用いることのできる有効な値は下記の通りです。

  • o.weight
  • o.weight DESC
  • o.created_time
  • o.created_time DESC
  • o.modified_time
  • o.modified_time DESC
  • o.viewed
  • o.viewed DESC
  • o.votes_sum
  • o.votes_sum DESC
  • o.votes_count
  • o.votes_count DESC
  • o.weight,o.created_time
  • o.weight,o.created_time DESC
  • o.weight,o.content_id
  • o.weight,o.content_id DESC
Page Top
注意点 anchor.png
  • オプションで表示のチェックをはずしているコンテンツはリストされません。
Page Top
pico_subcattreeプラグイン anchor.png

カテゴリの冗長情報を取得するためのプラグインです。きめ細かいカテゴリリストを作りたい場合などに重宝します。1.57 以降に同梱されています。

<{pico_subcattree dirname="pico" id="0" item="mycat"}>

アサイン専用のプラグインですので、上記の場合でしたら、$mycat にアサインの後、これもどんな値が利用可能なのか、var_dump で確かめてみてください。
以下は利用例です。

<{pico_subcattree dirname="pico" id="0" item="mycat"}>
<!-- cat_id=0 直属カテゴリーのループ -->
<{foreach from=$mycat.subcattree_raw item="subcat"}>
	ID: <{$subcat.cat_id}><br />
	Title: <{$subcat.cat_title|escape}><br />
	直下記事数: <{$subcat.contents_count}><br />
	総記事数: <{$subcat.contents_total}><br />

	<!-- cat_id=0 の孫カテゴリーのループ -->
	<{foreach from=$subcat.subcattree_raw item="subsubcat"}>
		ID: <{$subsubcat.cat_id}><br />
		Title: <{$subsubcat.cat_title|escape}><br />
		直下記事数: <{$subsubcat.contents_count}><br />
		総記事数: <{$subsubcat.contents_total}><br />
 	<{/foreach}>
 <{/foreach}>
Page Top
pico_category_searchプラグイン anchor.png

pico_category_search は、ちょっとかわった状態を想定しているプラグインです。 pico のカテゴリ構成が下記のようになっているときに威力を発揮します。

カテゴリ1
-好きな映画
-好きな食べ物
カテゴリ2
-好きな映画
-好きな食べ物
カテゴリ3
-好きな映画
-好きな食べ物

つまり複数のカテゴリがあり、その中に同じ名前のサブカテゴリをもっている状態です。 こういうカテゴリ構成の pico があったとして、仮にその pico を test_pico という dirname だったと仮定します。

<{pico_category_search dir="test_pico" item="categories" title="好きな映画"}>

とすることで、test_pico の中にある「好きな映画」カテゴリについての情報が収集され、$categories にアサインされるので、

<pre>
<{''|var_dump:$categories}>
</pre>

というような形で、内容を確認してみてください。 で、たとえばこんな形で foreach をまわします。

<{foreach from=$categories item=category}>
  <{if $category.redundants.contents_total != '0'}>
    <h2>
    <a href="/modules/test_pico/index.php?cat_id=<{$category.id}>"><{$category.paths_value[0]}> (記事数:<{$category.redundants.contents_total}>)</a>
    </h2>
    <{if $category.redundants.contents_total > 0}>
      <ul>
      <{pico_list dir=$category.mod_dirname cat_id=$category.id item="list"}>
      <{foreach from=$list.contents item="content"}>
        <li><a href="<{$xoops_url}>/modules/<{$category.mod_dirname}>/<{$content.link}>"><{$content.subject}></a></li>
      <{/foreach}>
      </ul>
    <{/if}>
  <{/if}>
<{/foreach}>

この例では pico_list プラグインとのあわせ技で、いろんなカテゴリに属している「好きな映画」カテゴリに入っている記事へのリンクを生成しています。

ちなみに pico_category_search で title という引数で渡している文字列を GET の文字列にすることで、ちょっと面白いことができます。

<form name="sampleForm" id="sampleForm" method="get" action="(どこか適当な場所)">
	<select name="pcs_querry">
		<option value="好きな映画">好きな映画</option>
		<option value="好きな食べ物">好きな食べ物</option>
	</select>
	<input type="submit" value="検索" />
</form>

で、(どこか適当な場所)で、

<{pico_category_search dir="test_pico" item="categories" title=$smarty.get.pcs_querry}>

とすれば、指定した文字列で pico_category_search を使うことができるようになります。 ちなみに、受け皿側(どこか適当な場所)で、下記のようなことをしたくなるかもしれません。

<h1><{$smarty.get.pcs_querry}> の検索結果</h1>

でも、$_GET をそのまま出力したらあかんので、くれぐれも escape を忘れずに ;-)

<h1><{$smarty.get.pcs_querry|escape}> の検索結果</h1>
Page Top

extra_fields プラグイン anchor.png

任意追加フィールド機能(extra_fields)は、pico 1.7 から追加された機能です。pico のテンプレート(*main_content_form.html)を編集することで、任意の入力欄を作って、対話的な入力欄や、さまざまな条件分岐などを追加することができるようになります。

任意追加フィールド機能(extra_fields)についての詳しい説明はこちら

Page Top

ライセンス anchor.png

GPL v2

Page Top

関連モジュール anchor.png

モジュール名説明配布先
ModuleManuals/​TinyD静的コンテンツモジュールhttp://xoops.peak.ne.jp/
ModuleManuals/​wrapsページラップ専用モジュールhttp://xoops.peak.ne.jp/
ModuleManuals/​d3forumpicoでコメント機能を使うときに必要なフォーラムモジュールhttp://xoops.peak.ne.jp/

*1 XOOPSコメントは実装だけでなく設計そのものに問題があるため、Cube2.1での抜本的な改善も望めないと判断し、D3の仕様からスパっと切り捨てています

Front page   Freeze Diff Backup Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 38616, today: 4, yesterday: 35
Last-modified: 2008-10-22 (Wed) 11:58:46 (JST) (680d) by jidaikobo
Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities