
概要 :
Joomla!では、記事の一斉置換などの機能がありません。
そのため、全体的な記事の修正を行うには、その記事の一つ一つ修正しなければなりません。
今回、その修正を一時的にも助けてくれるReReplacerというエクステンションについて記述します。
一斉置換をしてくれる(有料の)コンポーネントなどもありますが、ReReplacerは、記事の表示時に、一時的に文字列を置換するものです。
記事を本当に置換して、データベースへ保存するわけではありません。
ただ、使い方によっては、結構便利なエクステンションだとおもいましたので、記事を書くことにしました。

もっと、Joomla!やPHP、Apacheについて詳しく知りたい方は、以下の本なども良いと思います。
本から学ぶことは多いと思います。ネットだけでは判らない様々な事に気づかされます。
先のダウンロードサイトから、ZIPファイルをダウンロードし、インストールを行います。
(メニューの [エクステンション] - [インストール/アンインストール] から行ってください。)
インストールの後、[コンポーネント] - [ReReplacer]で置換した文字列を編集します。
画面右上の新規ボタンをクリックします。


| パラメータ名 | 説明 |
| 詳細 | |
| 公開 | いいえ ●はい この置換情報を有効にするか否かを指定します。 |
| 名前 | この置換情報の名前を入力します。 |
| 説明 | いいえ ●はい この置換情報の説明を入力します。 |
| Search & Replace | |
| 検索 | 検索する文字列を入力します。 |
| Replace | 置換する文字列を入力します。 |
| Syntax help |
●非表示 表示 ここで利用できる特別な構文のヘルプを表示します。 ここで"表示"を選択すると、この画面のすぐ下にヘルプ情報が表示されます。 |
| Search options | |
| Regular Expressions |
●いいえ はい 検索文字列、置換文字列に正規表現を有効にするか否かを指定します。 |
| Word Search |
●いいえ はい 単語検索を有効にするか否かを指定します。 |
| Word Search |
●いいえ はい 単語検索を有効にするか否かを指定します。 単語検索は、単語の違いを検出します。 例えば、'foo'を検索した時、'foobar' や 'foot' 別の単語として検索にヒットしません。 しかし、一つの単語として扱われない 'foo3' や 'foo-bar' は、ヒットします。 ※日本語は、恐らく、正しく動作しないでしょう。 |
| Use 'newline' modifier |
●いいえ はい dot(.)を新しい行とみなします。 ※日本語は、恐らく、正しく動作しないでしょう。 |
| Case sensitive |
●いいえ はい 大文字・小文字を区別して検索します。 ※日本語には、意味がありません。英字のみ有効でしょう。 |
| Thorough |
●いいえ はい ここを"はい"と指定すると、常に、表示切り替えで、同じ文字列の検索処理が100回行われます。 つまり、置換することで、また、検索対象の文字列ができてしまうようなパターンでない限り、ここは、"いいえ"を選択すべきです。 (多分・・・。英訳が間違ってたらすみません。) |
| Search areas | |
| Enable in area |
検索・置換する範囲を指定します。 |
| Enable in title |
●いいえ はい 検索・置換する範囲を指定します。 記事のタイトルも検索・置換の範囲とするか否かを指定します。 このパラメータは、Enable in area = "Content+" の場合のみ有効です。 |
| Enable in author |
●いいえ はい 記事の投稿者も検索・置換の範囲とするか否かを指定します。 このパラメータは、Enable in area = "Content+" の場合のみ有効です。 |
| Only between (start) |
Only between (end) と一緒に使います。 Only between (start)とOnly between (end) が指定されている場合、 その2つの文字列の範囲内が、検索・置換の対象範囲となります。 例) '123 xxx123xxx456xxx456'のような文字列があったとした場合、 '123'と'456'の間で'x'を'y'に置換したいなら、
Only between (end)='456' と指定します。 ※指定された文字列の範囲の最も短い範囲で、検索・置換が実施されることに注意してください。 |
| Only between (end) |
Only between (start) と一緒に使います。 上記説明を参照してください。 |
| Enable in feeds |
いいえ ●はい Only Feed情報も検索・置換の範囲とするか否かを指定します。 |
| Enable in Admin |
●いいえ はい Only 管理画面も検索・置換の範囲とするか否かを指定します。 |
| Tags | |
| Enable in tags |
いいえ ●はい Only (HTML)タグの中も検索・置換の範囲とするか否かを指定します。 |
| Limit to tag selection |
●いいえ はい 'はい'を選択すると、 'Tag selection'を設定できるフィールドが、画面に表示されます。 そこに指定された(HTML)タグの範囲内だけを検索・置換の範囲とします。 'Tag selection'には、 tag_name_1[parameter_name_1, parameter_name_2] tag_name_2[parameter_name_1, parameter_name_2] の形式で記述します。 例) *[alt,title] a[*] *: 全ての意味になります。 |
| Sections / Categories | |
| Limit to Sections / Categories |
●いいえ はい 特定のセクションとカテゴリのみを検索・置換の範囲とするか否かを指定します。 'はい'とした場合、 'Sections / Categories'のリストが、画面に表示されるので、そこで、対象としたセクションとカテゴリを選択します。 |
| User Group Levels | |
| Limit to User Group Levels |
●いいえ はい 特定のユーザグループでのみを検索・置換の範囲とするか否かを指定します。 'はい'とした場合、 'User Group 'のリストが、画面に表示されるので、そこで、対象としたいユーザグループを選択します。 |
| テンプレート | |
| Limit to Templates |
●いいえ はい 特定のテンプレートでのみを検索・置換の範囲とするか否かを指定します。 'はい'とした場合、 'テンプレート'のリストが、画面に表示されるので、そこで、対象としたいテンプレートを選択します。 |
置換情報の編集・保存を終えたら、プラグイン管理から"System - ReReplacer"を有効にしましょう。
(メニューの [エクステンション] - [プラグイン管理] から"System - ReReplacer"を探してください。)

置換文字列がある記事などを確認してみましょう。うまく置換されていると思います。
置換のパターンは、以下の左の文字列を右側のようにHTML形式で大文字に置換しています。
1 | hijklmno --> <font color=red><b>HIJKLMNO</b></font> |

上段が、オリジナルの文字列です。
下段が、ReReplacerで置換した文字列です。

この場合、以下のphpファイルを書き換えると正しく表示されます、。
[/administrator/components/com_rereplacer/views/list/tmpl/default.php]
153行目を以下のように変更すると説明部分が、文字化けしません。
153 154 | // $_description = explode( '---', htmlentities( $_row-->description ) ); $_description = explode( '---', htmlentities( $_row-->description ,ENT_COMPAT,'UTF-8' ) ); |
このエクステンションには、インポート、エクスポート機能があります。
これは、独自のタグ情報とともに、置換アイテムからテキストへの出力(エクスポート)し、
そのテキストと同じフォーマットであれば、そのテキストファイルから置換アイテムを作成(インポート)することができます。
以下は、エクスポートしたテキストファイルの内容です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <RR_ITEM_START> <RR_KEY>name<RR_VAL>テスト置換<RR_END> <RR_KEY>description<RR_VAL>テスト置換の説明<RR_END> <RR_KEY>search<RR_VAL>TEST<RR_END> <RR_KEY>replace<RR_VAL>テスト<RR_END> <RR_KEY>params<RR_VAL>@syntax_help=0 regex=0 word_search=0 s_modifier=1 casesensitive=0 thorough=1 area=articles enable_in_title=0 enable_in_author=0 between_start= between_end= enable_in_feeds=1 enable_in_admin=0 enable_tags=1 limit_tagselect=0 tagselect=*[title,alt] meta[content] limit_secscats=0 other_secscats_doreplace=0 other_secscats_replace= limit_usergrouplevels=0 usergrouplevels=0 other_usergrouplevels_doreplace=0 other_usergrouplevels_replace= limit_templates=0 other_templates_doreplace=0 other_templates_replace= <RR_END> <RR_KEY>ordering<RR_VAL>0<RR_END> <RR_ITEM_END> |
各パラメータは、上記と照らせば、大方、ご理解いただけると思います。
以下は、インポート時の画面です。ファイルを選択して、アップロードボタンをクリックするとインポートされます。

ただし、これを多用すると、ページの切り替えで重たくなると思いますので、最小限のご利用が良いと思います。
変更内容が、恒久的な変更なら、このエクステンションは、全ての情報の変更までの、仮処置として使うこともできると思います。






