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

TinyD anchor.png

機能:コンテンツモジュール
種別:静的コンテンツ作成
作者:GIJOE
バージョン:2.30
動作環境:XOOPS2.0.x, XOOPS2.2.x, 俺的XOOPS, XOOPS Cube Legacy 2.1
配布元:http://xoops.peak.ne.jp/
複製:Duplicatable V2

Page Top

概要 anchor.png

静的コンテンツを簡単に作成することができるモジュールです。
ほとんどのサイトで必要になる、固定的なコンテンツを作る上ではこのモジュールが現在のところデファクト・スタンダードといえます。
CHAPI氏が作ったTinyContentが原型ですが、GIJOE氏が大幅に改修を加え、ほぼ別物といっていいモジュールになっています。呼び名も「TinyD」(Dはこのモジュールの最大の特徴であるDuplicatable=複製可から来ています)と変わりました。
セクション系モジュールと比べると決して高性能ではありませんが、静的コンテンツをメンテナンスする上で必要な機能に絞っているために判りやすいという特徴があります。
また、Duplicatable V2なので名称を変えながら複数個インストールすることが可能です。

2007年1月現在、TinyDはほぼ開発が終了しており、新規に利用するのであれば、picoを検討することを作者はすすめています

Page Top

インストール anchor.png

GIJOE氏のモジュールの特徴として、解凍後の状態が実際のディレクトリ構造と同じになっています。ですので、ftpツールなどでXOOPS_ROOT_PATHと合わせてやれば必要なものが必要なディレクトリにアップロードされます。
個別に行なうならば、展開した modules内のtinyd0 フォルダをサーバ上のmodulesディレクトリにアップロードします。このときにDuplicatable V2ルールに従ったディレクトリ名のリネームが可能です。
SPAW機能を利用する場合には、合わせて同梱されている commonにあるspawフォルダを、やはりサーバ上のcommonディレクトリ内にアップします。
PEAR Wiki機能が必要な場合も同様にPEARフォルダをcommon内にアップロードしてください。

このcommonフォルダがどうしてもつまづきやすいポイントです。過去にcommonフォルダを作ったことがなければ存在しないはずなので、その場合は、自分自身で作るか、モジュールアーカイブのcommonフォルダごとXOOPS_ROOT_PATH直下にアップロードしてください。cacheフォルダやclassフォルダと同じレベルにcommonフォルダが存在する、という形です。

www.peak.ne.jp_46.gif
commonフォルダの位置

TinyDモジュールを複数インストールする場合でも、SPAWやPEARはひとつだけで動作します。2個目からは、modulesの中身だけをアップロード・リネームしてください。

ただしモジュールを複製して追加する場合はフォルダ名に注意が必要です。
「数字以外が1字以上)+数字が1字以上」という形にしなくてはいけません。
 ○:contents1、hogehoge0、hogehoge9
 ×:1contents、99999

数字については、初期状態では番号無し,0,1,2,3...9 と11個設置することができます。これ以上拡張したい場合には、テンプレートとsqlファイルを用意する必要があります。番号無しは一つのみ設置することができます。

適切に各ファイルがアップロードされたら、モジュール管理画面から通常通りインストールします。

icon.gif
管理画面のアイコン
Page Top

アップグレード anchor.png

TinyDは、Duplicatable V2モジュールであるため、一つのXOOPS内に存在するすべてのTinyDを同時に上書きアップロードする必要があります。一つのXOOPS内に、バージョンが新旧混在すると、おかしな現象が発生します。

FTPアップロードする際には、modules 内のフォルダをざっと見て、TinyDのモジュールだけを一通り上書きアップロードしてください。変更履歴に「モジュールアップデートしてください」と書かれている場合は、モジュール管理からモジュールアップデートを行いますが、これも、すべてのTinyDに対して行ってください。

Page Top

アンインストール anchor.png

モジュール管理から、該当するTinyDをアンインストールした後、moudles/以下のフォルダごと消します。
データを保存しておく場合は、データベースのバックアップ以外に、contentフォルダ内もチェックする必要があります。

Page Top

使用前に知っておくべきこと anchor.png

Page Top

DBコンテンツとページラップの違い anchor.png

TinyDには2種類のコンテンツ管理方法があります。

一つがDBコンテンツで、ブラウザ上での管理であり、管理画面から編集して保存すると、そのコンテンツはデータベースの中に収まります。DBコンテンツは、管理者によって入力されたテキストをどのように整形・表示するかによって、さらに細かくわけられます。(「DBコンテンツの種類」を参照)

もう一つがページラップです。これは、FTPなどでアップロードされたファイルを読み込んで、XOOPS用にくるんで(ラップして)表示するものです。このコンテンツはデータベースではなく、ユーザファイル内にあります。
読み込まれたファイルは、文字エンコードの自動変換が行われます。XOOPSをEUC-JPで運用している時に、Shift-JISで書かれたHTMLファイルをラップすれば、自動的にEUC-JPに変換後、表示されます。テキストサニタイザは通過しませんので、BBCodeや顔アイコン変換は行われません。つまり、ページラップとは、ほとんどの場合、プレーンなHTMLファイルをラップするための機能です。
実際には、ラップ対象ページをPHPにすることも出来ます。ラップ対象ページは、TinyDによって、includeされて解釈・実行されるので、ファイル拡張子がhtmlであるかphpであるかは重要でありません。どんなファイル名であっても、ラップ指定したファイル内に<?php ?> ブロックを書けば、PHPコードが実行可能です。

まったく性格の違うこの両者を一元的に管理できることがTinyDの利点でもありますが、利用者としてはその違いを把握しておくことが必要です。

Page Top

DBコンテンツの種類 anchor.png

type.gif
各編集モードの下にあるコンテンツ選択フォーム
HTMLコンテンツコンテンツの内容がそのまま表示されるモードです。HTML特殊文字についても基本的に何も処理されないので、「HTMLが許可される」という状態に相当します。表現力豊かなページを作成する場合に利用します。コンテンツ編集にSPAWエディタを利用する場合、基本的にはこのモードでないと意味がありません。
テキストコンテンツHTML特殊文字(半角の<>&’”)がエンティティ化されるモードです。プログラムのソースコードを記述したい場合などに最適です。
PHPコードコンテンツをそのまま、PHPのeval()関数に渡して、PHPコードとして実行します。最初からコードセクションとして解釈されるため、<?phpという開始タグは必要ありません(あればエラーになる)。BBCodeを有効とした場合、eval()の出力結果に対して、BBCode処理が施されます
PEAR WikiPEARのText_Wikiを利用して整形します。同じWikiとは言え、PukiWikiとは整形ルールが大きく異なるため、PukiWikiに慣れた人には辛いかもれません。ただ、技術文書などを手軽に書きたい場合には良い選択肢でしょう。なお、HTMLタグは利用できません(エンティティ化されます)。BBCodeも有効とした場合、Text_Wikiの整形処理後に、BBCode処理が行われる点に注意が必要です。

それぞれ、BBCodeの有効・無効が選択可能です。ここではBBCodeと書いてありますが、実際にはテキストサニタイザの処理を通過するという意味です。

BBCodeを有効とした場合、

  • BBCode変換
  • 自動リンク変換

この2つは必ず通過します。

  • スマイリー変換
  • 自動br変換

この2つは、各コンテンツ毎の設定でON/OFF可能です。

逆に、BBCodeを有効にしない限り、コンテンツ毎の設定で、スマリー変換や自動br変換をONにしても無視されます。

BasicManual 6.4 「テキストサニタイザ」
http://www.xugj.org/modules/manual1/content/index.php?id=45
も参照してください。

Page Top

ページラップの基点 anchor.png

ページラップを行う場合に避けられないのが、リンクの基点という問題です。

デフォルトのTinyDでは、

/modules/tinyd0/index.php?id=1

といったURIになりますが、これだと、/modules/tindy0/ 基点となるため、ラップされるHTMLページと同様に、/modules/tinyd0/content/内に画像ファイルをアップロードした場合、画像がリンク切れとなってしまいます。

TinyDでは、これを解決するために、「ページラップの基点」というオプションを用意しています。※下表では、tinyd0としてインストールした場合のパスを書いています。

TinyDモジュールディレクトリ(WRAP1)デフォルト設定です。/modules/tinyd0/ が基点なので、画像が必要な場合、/modules/tinyd0/ 直下に画像フォルダを作って、HTMLとは別にアップロードする必要があります。
ラップしたページと同じディレクトリ(WRAP2)ラップページそのもののURIが/modules/tinyd0/content/index.php?id=1 といった形式になります。基点はもちろん、/modules/tinyd0/content/ になるので、contentフォルダにHTMLと画像を素直に配置することでリンク切れは起こさなくなります。ただ、これでもHTML同士のリンクはうまく行きません。
mod_rewriteによる書き換え(WRAP3)mod_rewriteでURIを動的に書き換えることで、リンク切れを解決する方法です。HTML間のリンクもうまくいくことが多いでしょう。モジュールディレクトリ内にある.htaccess.rewriteを.htaccessにリネームしておく必要があります。この時点で500エラーが出るなら、この設定は諦めてください
HTMLタグ書き換え(WRAP4)ラップされたHTMLファイルを読み込んで表示する前に、相対リンクを絶対リンクに書き換える、という泥臭い方法です。相対リンクに似た文章は誤認識して書き換わってしまう恐れがあります。

この「ラップ基点」という概念はかなり判りづらいのですが、contentフォルダ内に sample.html がサンプルとして格納されていますので、これを各種モードでページラップ登録すれば、その意味を体感できるでしょう。

Page Top

TinyDのブロック anchor.png

TinyDには2種類だけブロックが存在します。

メニューブロックコンテンツのタイトル一覧(いわゆる「コンテンツメニュー」)を表示します。どんなタイトルをメニューに表示するかは、一般設定で設定します。
内容表示ブロックTinyD内コンテンツのうちの指定された1つの内容をブロック内に整形表示します。また、このブロックは特殊なFILEテンプレートを利用しています。「あまり知られていない機能」の「内容表示ブロックあれこれ」も参照してください。

ブロックとしては2種類しかありませんが、内容表示ブロックは複製可能であるため、必要に応じていくつでも用意することが可能です。

Page Top

TinyDのテンプレート anchor.png

templates/フォルダ以下には大量のファイルが存在しますが、実際には、1つのTinyDにつき3種類のテンプレートしか利用されません。

tinycontent0_nav_block.htmlメニューブロック用のテンプレート。デフォルトではメインメニューと同様のリンクタイプであるが、テンプレートカスタマイズをカスタマイズするだけで、ドロップダウン方式にすることも難しくはない。
tinycontent0_index.htmlメイン画面にコンテンツを表示する際のテンプレート
tinycontent0_print.htmlコンテンツ印刷用画面のテンプレート

このイタリックの0の部分が、モジュール番号によって置き換わります。
例えば、contents2 というディレクトリ名でインストールされたTinyDの場合、

  • tinycontent2_nav_block.html
  • tinycontent2_index.html
  • tinycontent2_print.html

の3個だけが利用されます。

システムモジュール内のテンプレート管理では、利用されていないテンプレートファイルも大量に表示されますが、これらはいずれも関係ありません(「作成」リンクも意味ありません)。テンプレートをカスタマイズする時にはtplsadminまたはaltsysモジュールを利用するべきです。同じTinyDの管理画面にある「テンプレート」で管理するのが簡単です。TinyD 2.3以降では、altsysモジュールをインストールすることで「テンプレート管理」が表示されます。

Page Top

管理画面メニュー anchor.png

Page Top

コンテンツ管理 anchor.png

ここには現在登録されているコンテンツが表示されます。新規インストール後には一つも登録されていませんのでDBコンテンツかページラップを新規に登録する必要があります。

HP
モジュールトップページを指定します。メインメニューでそのモジュールをクリックした際に表示されるページとなります。当然ですが、「表示」コンテンツである必要があります。
タイトル
コンテンツ表示画面(表側)へのリンクとなっています。タイトルを変更する場合は、「編集」画面に入ります。
表示順
各コンテンツの並び順となります。サブメニューやメニューブロックにおける表示順になります。ページナビゲーションを利用する時には特に重要となります。
表示
草稿や一時的に表示OFFにしたい場合に、ここをOFFにすることで表側で表示されなくなります。
Sub
サブメニューとして表示されるかどうかの指定です。チェックされたものは、メインメニューやMultiMenuのサブメニュー項目になります。メニューブロックでも、一般設定の設定次第で、ここにチェックされたものだけが項目として表示されます。ページナビゲーションを利用する場合も、一般設定次第でサブメニューのチェックが重要な意味を持つことになります。(サブセクションまたはページ区切りになり得る)
Com
TinyDではコンテンツ毎にコメントのON/OFFが設定可能です。ただし、一般設定で、モジュール全体のコメント利用がONになっていないと、ここでONにしても意味がありません。
Type
DBコンテンツの場合はコンテンツの種類を、ページラップの場合はWRAPモード(基点)を示します。変更は「編集」画面で行います。
アクション
各コンテンツを「編集」・「削除」するためのリンクがあります。HTMLコンテンツの場合はSPAW利用編集画面に一発で行けるリンクも用意されています。

他にも以下の2つの操作がこの画面でできます。

  • コンテンツのモジュール間移動
    別のモジュールとしてインストールしたTinyD同士でコンテンツを移動することが出来ます。
    アクション欄の一番右のチェックボックスをチェックして、テーブル最下部のSELECTボックスから移動先モジュールを選択(もちろん、TinyD以外はリストアップされません)。最後に、「移動」ボタンを押します。
  • ページラップ検索語の更新
    TinyDの検索機能はデータベース内を探しますが、ページラップはファイル上にコンテンツが存在するため、FTPでファイルの中身を更新しても反映されません。適宜、このリンクを押すことで、ラップファイルを走査し、検索用インデックスをデータベース内に作成します。ページラップを多用して、しかも検索機能を活用したい場合には重要です。
top.gif
コンテンツ管理画面
Page Top

コンテンツの追加 anchor.png

新規でコンテンツを追加します(DBコンテンツ)。既存のDBコンテンツを編集する時にも同じ画面が開きます。もちろん、編集時には、編集前のデータが最初から入力されています。

編集画面の一番上で、編集モードが選択できます。

BB
おなじみ、XoopsのDHtmlTextareaです。(デフォルト)
SPAW
SPAWというWYSIWYGエディタを利用してHTMLコンテンツを編集します。基本的に、IE6とFirefoxでしか動かないと思ってください。また、この機能によって生成されるHTMLコードはかなり汚くなります。
PLAIN
シンプルなテキストエリアです。Text_Wikiモードなど、DHtmlTextareの各種ボタンが邪魔なだけの場合に有効です。

以下、編集画面を解説します。

タイトルページのタイトルをつけます。これが<title>ヘッダにもなります。
HTMLヘッダheadタグ内に記載するヘッダ情報を記載します。そのDBコンテンツについてだけ必要なHTMLヘッダを記述したい時に利用します。モジュール全体につけたいHTMLヘッダがあれば、一般設定で指定してください。
コンテンツコンテンツの中身を記述します。WYSIWYGエディタを利用しない場合は、htmlarea(IE用)やmozex(Firefox用)を利用するのがお勧めです。
オプション:顔アイコンを無効スマイリー変換機能を無効にします。チェックされなければ、スマイリー変換ONです。コンテンツタイプが「BBCode無効」の場合は、ここのチェックによらずスマイリー変換されません。
オプション:改行を<br>に変換しないhtmlエディタで作成したコンテンツをペーストする場合など、改行を<br>に変換したくない場合はチェックを入れます。チェックされなければ、改行が<br>に変換されます。コンテンツタイプが「BBCode無効」の場合は、ここのチェックによらずbr変換されません。
オプション:表示を許可するユーザから見えるようにします。一時的に見えなくする場合や書きかけ項目について、チェックをOFFにしてください。
オプション:サブメニューに表示するここをチェックするとメインメニューブロックののサブメニュー項目として表示されます。MultiMenuを利用している場合、@や+マークに対応します。
オプション:コメント可能このコンテンツにコメントをつけることが可能になります。一般設定で、モジュールそのものがコメント可能となっていることも要確認です。
コンテンツタイプコンテンツの種類を選択します。上述したDBコンテンツの種類を参考のこと。
最終更新日時最後に編集した時刻が自動で入ります(新規作成時には1970-1-1と表示されていますが無視してください)。これを利用すれば、テンプレートを書き換えることでNew!マークを出す、といったことが可能です。この日時を更新したくない場合のみ、「自動更新しない」をチェックしてください。
作成日時コンテンツを新規作成した日時が自動で入ります。
Page Top

DBコンテンツ編集画面 anchor.png

Page Top
BB(標準)モード anchor.png
std_edit.gif
Page Top
SPAW(WYSIWYG)モード anchor.png
spaw_edit.gif
Page Top
PLAINモード anchor.png
plain_edit.gif
Page Top

ページラップの追加 anchor.png

ページラップ関連の操作がまとまっています。

ページラップを利用する場合、modules/(ディレクトリ名)/content以下のフォルダ内に、ラップ対象ファイルをアップロードするのですが、基本的には、FTPのアップロードが推奨されます。

ただ、HTTP経由のアップロードが必要な状況も現実にありますので、その場合には、contentフォルダを書込可能にして(*nixならパーミッションを777にする)、この画面からアップロードを行います。

この場合、HTTP経由のファイル削除も可能です。

FTPかHTTPでcontentフォルダ内にアップロードできたら、そのファイルを指定して登録することで、「ページラップ」が登録されます。

ページラップの基点については、上述した「ページラップの基点」を参考にしてください。

wrap.gif
ページラップ追加画面
Page Top

ブロック・アクセス権限 anchor.png

モジュール内ライブラリmyblocksadminを利用したブロック・アクセス権限管理です。

操作対象のTinyDについてのブロックやアクセス権限だけに絞って表示されるため、altsysやblocksadminよりも判りやすいかもしれません。
TinyD 2.3以降では、altsysモジュールをインストールすることで、「ブロック管理」が表示されるようになります。

「内容表示ブロック」は複製可能なので、複製した後で「編集」して表示対象コンテンツを切り替えるなどすれば、カスタムブロックよりも多彩な表現が可能です。

Page Top

テンプレート管理 anchor.png

モジュール内ライブラリmytplsadminを利用したテンプレート管理です。

TinyDのテンプレートだけに絞って表示されるため、altsysやtplsadminよりも判りやすいかもしれません。
TinyD 2.3以降では、altsysモジュールをインストールすることで、「テンプレート管理」が表示されるようになります。

テンプレートの操作方法としては、altsysやtplsadminのサブセットなので、そちらを参照してください。

tpls.gif
テンプレート管理画面
Page Top

一般設定 anchor.png

管理画面右上の一般設定は、TinyD 2.3以降、altsysモジュールを優先して利用するようになりました。TinyD 2.2と混在している場合など、一般設定のリンクがおかしい場合もありますが、altsysモジュールをインストールすればおそらく解決するでしょう。

全コンテンツ共通HTMLヘッダコンテンツ・ページラップの両方について、ここで指定されたHTMLヘッダが追加されます。ご利用のテーマ内にxoops_module_headerの記述があることを確認してください
各部編集エリアの横幅編集環境の設定です。画面が大きければ大きい値を設定するのが良いでしょう。
ヘッダ編集エリアの高さ同上
コンテンツ編集エリアの高さ同上
すべてのコンテンツでmod_rewriteを使う.htaccess 等でmod_rewriteがonになっている必要があります。
modules/のないrewriteモードでのディレクトリ名モジュール内コンテンツはいずれもXOOPS_URL/modules/(dirname)/(ページ名)というURIになりますが、それをXOOPS_URL/(任意のディレクトリ名)/(ページ名)という形式に変更する機能です(下の「modulesのないrewriteモード」を参照)。「すべてのコンテンツでmod_rewriteを使う」とした上で、XOOPS_ROOT_PATH/.htaccessに特定の記述が必要です。この機能を使わない場合は空欄にして下さい。
連続したスペースを に変換する(改行変換時)半角スペースが になるので、テキストエディタで見るのに近い状態で表示されるようになります。AAを表現したい時などにONにしてください。逆に、HTMLエディタからのコピペとは相性が悪いでしょう。
「印刷用画面」アイコンを表示する印刷画面のリンクをアイコンで表示します。印刷画面をカスタマイズしたい場合はテンプレートtinycontent*_print.htmlを編集します。
「友達へ紹介する」アイコンを表示する記事のURIを第三者へメール送信するリンクをアイコンで表示します。デフォルトではmailto:のリンクなので、クリックした人のメーラーが立ち上がる設定です。下の項目にも目を通してください。
Tell a Friendモジュールを利用する友達へ紹介する機能のデフォルトはmailto:リンクですが、これではどうしても文字化けが避けられない上に、メーラーがない環境(インターネットカフェなど)では使えません。tellafriendモジュールをインストールしてここをチェックすると、フォームメール機能が利用でき、かつ、文字化けも回避できます。
ページナビゲーションコンテンツ下部に、前のページ・次のページといったリンクを自動でつける機能です。このナビゲーションの出し方には3パターンあります。
TinyDメニューブロックでの表示対象TinyDメニューブロックは、TinyDの記事タイトル一覧を表示しますが、ページ数が多すぎる場合などは、この設定を「サブメニュー指定されたコンテンツのタイトル」とすることで、コンテンツ管理でサブメニュー指定されたページだけを一覧表示することができます。
コメント投稿に関するルール全モジュール共通のコメント設定です。もちろん、ここでの設定は、操作対象となっているTinyDにだけ有効となります。他のモジュール、他のTinyDには影響ありません。
匿名によるコメント投稿を許可しますか?同上
ippan.gif
一般設定画面
Page Top

あまり知られていない機能 anchor.png

Page Top

すべてのコンテンツでmod_rewriteを使う anchor.png

TinyDを利用する価値の50%以上は、このモードにあると思うのですが、なぜか利用されているケースをあまり知らないので、ここで解説します。

実は、このモードの真価は、ページラップで発揮されます。それも、管理画面で登録しないページラップです。このモードでは、管理画面で操作しなくても、contentフォルダー内にコンテンツを用意するだけで、静的コンテンツがうまい具合につながります。

例えば、sample.htmlをページラップ登録した場合、このモードのURIは以下のようになります。(DBコンテンツでも同様です)

XOOPS_URL/modules/tinyd0/rewrite/tc_1.html

実は、このモードでは、ページラップ登録してもしなくても、以下のようなURIでアクセス可能です。

XOOPS_URL/modules/tinyd0/rewrite/sample.html

つまり、contentフォルダ内に用意するHTMLは、通常のファイル名を相対リンクで書きさえすれば、なんの問題もなくつながるのです。既存の静的コンテンツを持ってくる場合、そのHTMLや画像ファイル群をそのまま、contentフォルダ内にアップロードします。そして、管理画面ではページラップ登録もしません。

MultiMenuなどに、以下のようなURIを記述するだけです。

XOOPS_URL/modules/(任意のdirname)/rewrite/index.html

ただ、システムモジュールのメインメニューブロックを利用する場合には、無条件で

XOOPS_URL/modules/(任意のdirname)/

というURIにリンクされてしまうので、うまく表示されません。どうしてもメインメニューブロックを利用したい場合は、トップページだけDBコンテンツで作る、というのも手です。具体的には以下の手順になります。

  • TinyDの管理画面から「コンテンツの追加」に入る
  • タイトルに「トップ」と入力
  • コンテンツとして、以下の内容を用意
header( "Location: ".XOOPS_URL."/modules/(任意のdirname)/rewrite/index.html" ) ;
exit ;
  • 「表示を許可する」にチェック
  • 「サブメニューに表示する 」はチェックを外す
  • コンテンツタイプは、「PHPコード(bb code無効)」を選択
  • 他のチェックは任意

あとは、このページがホームページとなるように、「コンテンツ管理」で設定すれば、メインメニューからのリンクでも、正しいURIにリダイレクトされます。

登録しないページラップの弱点は以下の通りです。

  • アクセスコントロールが効かない

常にゲストもアクセス可能です。グループ単位でのアクセスコントロールを行いたい場合は、wrapsモジュールを検討してください。ただし、wrapsは、画像もすべてPHP経由で転送することになるので、やや重いかもしれません。

  • 検索にヒットしない

ラップされたページは、ページラップ登録がされてはじめて中身が検索用インデックスに登録されます。登録しないページはそれだけで検索対象外です。

  • ページナビゲーションが利用できない
  • コメントが利用できない

逆に言えば、上述した弱点が問題にならないケース(既存の公開かつ静的なコンテンツをそのまま持ってくる場合など)では、この方法が最強と言えます。

Page Top

modulesのないrewriteモード anchor.png

通常のTinyDでは、
http:://example.com/modules/tinyd0/index.php?id=1
もしくは、
http:://example.com/modules/tinyd0/tc_1.html
というURIであり、それだけでXOOPSであることがバレてしまいます。

このmodulesレスモードを利用すれば、modulesのない、
http:://example.com/contents/tc_1.html
という、一見ごく普通の静的ページっぽいURIにすることが出来ます。

RewriteEngine on
RewriteRule ^contents/tc_(.*).html$ modules/tinyd0/index.php?id=$1 [L]
RewriteRule ^contents/(.*.html?)$ modules/tinyd0/rewrite.php?wrap=$1 [L]
RewriteRule ^contents/index.php(.*)$ modules/tinyd0/index.php$1 [L]
RewriteRule ^contents/(.*)$ modules/tinyd0/content/$1 [L]

この内容を、XOOPSインストールディレクトリの.htaccessに追加して、該当TinyDの一般設定で、「すべてのコンテンツでmod_rewriteを使う」を[はい]にして、「modules/のないrewriteモードでのディレクトリ名」に[contents]と入力します。

ただ、このモードにはややクセがあるので、あまりお勧めは出来ません。

modulesを隠すだけなら、現在はもっと汎用的な方法がありますので、それも検討対象でしょう。

Page Top

rewriteルールを変える anchor.png

WRAP3や、「すべてのコンテンツでmod_rewriteを使う」では、

XOOPS_URL/modules/(dirname)/rewrite/tc_n.html

というURIになりますが、これを変えたい場合は、以下のファイルを編集します。

  • .htaccess
RewiteRule ^rewrite/

となっている部分を下のように書き換える。

RewiteRule ^(好きなsubdir名)/

ルールの1行目のこの部分も必要なら書き換える。

RewriteRule ^(好きなsubdir名)/(好きなprefix名)_(.*).html$ index.php?id=$1 [L]
  • include/constants.inc.php
define('TC_REWRITE_DIR' , 'rewrite/');
define('TC_REWRITE_FILENAME_FMT','tc_%s.html');

この部分を以下のように書き換える。

define('TC_REWRITE_DIR' , '(好きなsubdir名)/');
define('TC_REWRITE_FILENAME_FMT','(好きなprefix名)_%s.html');

ただし、複数のTinyDをインストールしている場合、この定義部分は統一しなければなりません。

Page Top

記事内の編集リンク anchor.png

コンテンツの公開側から、直接に当該コンテンツの「編集」画面に行きたい、という要望も多いのですが、実は、テンプレートをちょっとカスタマイズするだけで実現可能です。

テンプレート tinycontent*_index.html の中に、コメントとして用意してあります。

<{* A sample displaying Edit link only for system admin *}>
<{* <{if $xoops_isadmin == 1 }><a href="<{$mod_url}>/admin/index.php?op=edit&amp;id=<{$id}>">[Edit]</a><{/if}> *}>
<{* If you turn this on, disable this module's cache *}>

この部分の真ん中の行について、行頭と行末のコメントを外す(<{*および*}>を削除)と、[Edit]という編集用リンクが出現します。最初からSPAWによる編集画面を出したい場合には、

<{if $xoops_isadmin == 1 }><a href="<{$mod_url}>/admin/index.php?op=edit&amp;id=<{$id}>&amp;usespaw=1">[Edit]</a><{/if}>

とすればOKです。

この編集用リンクがデフォルトでコメントで隠してあるのは、TinyDにモジュールキャッシュをかけることを想定しているためです。
TinyDは、数少ない「モジュールキャッシュをONにして良い」モジュールですが*1、このように、ユーザ権限によって表示される内容が異なる場合、管理者のために表示された編集リンク付画面がキャッシュされて混乱を生じさせかねません。

このテンプレートカスタマイズを施した場合には、該当TinyDのモジュールキャッシュはOFFにするべきでしょう。

同様に、コンテンツの最終変更時刻を表示したい場合には、同じテンプレートから、こちらのコメントを外してください。(こちらは、モジュールキャッシュに影響ありません)

<{* A sample displaying Last Modified *}>
<{* Last Modified:<{$last_modified|date_format:"%Y-%m-%d"}> *}>
Page Top

内容表示ブロックあれこれ anchor.png

内容表示ブロックは、実はかなり使える機能です。

代表的な使い方の一つが、メインコンテンツの要約のブロック表示です。コンテンツを[summary][/summary]というタグでくくると、その内側だけが、ブロック内に表示されます。(ただし、コンテンツタイプがBBCode有効でないと、[summary]タグがそのまま表示されてしまいます)

もう一つの使い方が、カスタムブロックの置き換えです。
実際の所、カスタムブロックはXOOPSの中でもかなり宙ぶらりんな機能であり、本家版2.2・Cube2.1・俺的XOOPSでは、取り扱い方がまったく違います。今後、いずれかにアップグレードする際にも心配ではあります。その点、TinyDの内容表示ブロックであれば、元々がモジュールですから、コアとは独立しています。

テキスト整形ルールも豊富で、PHPブロックを除けばなぜか3種類しかパターンを選べないカスタムブロックと違って、TinyDでは細かな修飾のON/OFFが出来ます。もちろん、PHPコードモードも持っています。唯一、ブロックの編集が、直接ブロックを編集するわけではなく、ブロック編集で指定されたコンテンツを編集する、という間接指定になっているところが判りづらいポイントかもしれません。

TinyDの内容表示ブロックは、カスタムブロックと違って、テンプレートを利用することも可能です。

ただし、内容表示ブロックのテンプレートはやや特殊なFILEテンプレートとなっています。

templates/blocks/tinycontent_content_block.html.dist
を、
templates/blocks/tinycontent_content_block.html
とリネームすることで、テンプレート機能が有効になります。


*1 他にはxhldくらいです

トップ   凍結 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 16468, today: 1, yesterday: 0
初版日時: 2006-05-24 (水) 19:06:11
最終更新: 2014-01-13 (月) 22:06:01 (JST) (1172d) by Kaz
Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities