Joomler!.net - Decided on Joomla!

デル株式会社

Wiki or Wordpress? No it is JContentPlus.

Home » Blog » エクスポート
3 votes
Written by:Joomler! 2216 hits Tuesday, 09 June 2009 06:35

やっと、Joomla!1.5化できました。何はともあれ、完了できたようです。サーバーを変更して勝手も変わったのでとまどったところもありましたが、何とか形になったように見えています。やはり、アップグレードは、大変ですね。記事のヒット数などは、少し前に戻りましたが、なるだけ最新のデータを適用するようにはしてみました。もしかするとまだ、前のサイトが表示されている方もいるかもしれませんけど。

ですが・・・まだ、未完了部分もあります。現在これを書いている時点では、demoサイトがまだですし、大雑把には完了していますが、まだチェック仕切れていない事もあります。何か不具合を発見されたら、お手数ですがご一報ください。

 
1 votes
Written by:Joomler! 2987 hits Monday, 23 February 2009 19:45

うちのデータベースをmigrationコンポーネントでJoomla!1.5用に出力し、Joomla!1.5準備サイトにデータを移行してみた。以下は、その際邪魔になるデータをSQLファイルから削除したリストです。
※私が面倒くさがり屋だとは言え、さすがにJoomla!1.5に移行するのにサイトのバックアップを取らずに行うほどではない。さらに別の環境を用意して準備するのが通常だと思う。
マイグレーションの手順は、次のようになっているので以下のリストが不要になります。

  1. Joomla!1.0.xにmigrationツール(コンポーネント)をインストール
  2. データベースを作成
  3. Joomla!1.5を新規インストール


新規インストール中に、2で作成したデータベースのファイルをmigrate.sqlにリネームし、installation/sql/migrationフォルダにあらかじめ入れ、実行するが当サイトの場合エラーが発生し、不完全な状態になってしまったので以下のようにしました。

 migrationツールでエクスポートしたSQLファイルから以下を削除した。
※ツールの設定次第で、こんなことしなくて良いかもしれない。

 
0 votes
Written by:Joomler! 3769 hits Sunday, 08 June 2008 21:12

見えない文字に以前から惑わされていました。

以前にMovableType XML-RPCでエラーが出るとフォーラムで投稿があり、仮に対応したファイルでとりあえず間に合わせていたのですが、それをすこし掘り下げて見てみました。

これは、MovableType XML-RPCを使わなくても発生するのでみなさんの環境(Joomla!1.5でも発生します。)でもテスト可能です。ただし、一度登録してしまうとデータベースを書き戻さないと元に戻らないことに注意してください。もし、試されるならテスト環境にされた方が良いです。

まず保存後の記事のタイトルを見てください。

after_save

なにも問題なさそうですよね。プレビューしてみるとこんな感じです。(Joomla!1.5)

after_save_html

まったく問題ないように見えます。

では、保存前のタイトルを見てください。

before_save 

「“」と「”」が含まれています。これは「“」と「”」のことです。"ではないことに注意してください。htmlentityで書くと「“」「”」です。

このデータをphpMyAdminで表示しても「Example」の前と後には何も表示されません。ところが、これをブログエディタで取り込むとエラーになります。それは、UTF-8で許されていない文字を使用しているというエラーです。

Joomla!は、いろいろなライブラリで構成されています。この中にinputfilterというライブラリ

  • Jooml!1.5では、Root/libraries/phpinputfilter/inputfilter.php
  • Joomla!1.0.xでは、Root/includes/phpInputFilter/class.inputfilter.php

は、Joomla!の中で適切なクリーニングとサニタイズを行うために重要な役割をしています。これは、Joomla!1.5でも同じです。コンテンツを保存するとこのinputfilterが適切にクリーニングをしてくれるのですが、どうもこのライブラリの基本設定をUTF-8で使う場合は変更しなければならないのではないかと思うのです。基本設定が、ISO-8859-1となっているのでUTF-8の数値文字の場合適切にクリーニング・サニタイズされないのではないかと思います。

そのinputfilterの設定を変更して保存してみるとこうなります。

after_utf8

ちゃんと保存され、表示されているのがわかります。※このテスト環境は、PHP5以上です。

これは、極まれな例なので普通に使っているときは遭遇しない問題かもしれません。ですが、ソースをコピーしたりしたとき、元のソースが数値文字となっていた場合は注意しなければなりません。UTF-8をデフォルトとしているユーザー(JP版もしくは、Joomla!1.5ならほとんどが該当ユーザーです。)ならばその数値文字があらぬ文字に変換されてしまいます。また、その文字はphpMyAdminで保存しなおしても消すことはできません。SQLをエクスポートし、該当する場所を正常な文字に書き換え、インポートしないと消すことはできません。

これは、intortext, fulltextは保存時にinputfilterを通りませんが、title, title alias, metakey, metadescriptionは、inputfilterによって処理されるので注意が必要です。

その、inputfilterの該当部分ですが、PHPのhtml_entity_decode関数を使っている部分です。ですが、この関数は、PHP5より下位バージョンの場合マルチバイトの文字セットをサポートしていないようです。なのでPHP4.xな場合、UTF-8と指定してもISO-8859-1で処理されてしまうため、同じ問題が発生します。PHP5以上の方はISO-8859-1と指定している部分をUTF-8に変更すれば解消されます。そうでない方は、PHPのバージョンを5以上に切り替えるか、PHP Manualを参考に自身で独自のメソッドを加えるか、Joomla!で対応されるのを待つのかをしなければならないのではないでしょうか。

after_save_sql これは、一度保存されてしまうと気づきにくい問題です。データをSQLでエクスポートしてテキストエディタで表示しても半角スペースにしか見えませんし、そのままブラウザで表示しても表示されません。文字の実態になっていないのです。

いろいろ検索してみましたが、Joomla!に関しては具体的な対策をされているものは私は見つけることができませんでした。

PHPのマニュアルに投稿されているメソッドを使って(借りて)変更するとすれば、例えば以下の例のように変更すればPHP4でも可能です。※確実かどうかは検証しているわけではありません。

 
0 votes
Written by:Joomler! 5113 hits Saturday, 01 March 2008 21:49

test-trans

以前からどこかの記事を見て知っていたのですが使っていませんでしたが、今回ふと思い立ち使ってみました。

はじめは、ヘッドタグに書き込むだけで良いのかと思っていたら

The script only fixes images named: *-trans.png

と書かれています。どうもファイル名に-transがついていないと何もしないようですね。

http://code.google.com/p/ie7-js/

そこで

  1. #__contentテーブルだけをphpMyAdminからDROP TABLEとIF NOT EXISTSオプションを追加して(他はデフォルトのまま)エクスポート。
  2. テキストエディタで1のsqlファイルを開き正規表現の置き換えで以下のように指定し、pngファイルを指定しているすべてを置き換えた。

    検索する文字列 (src="/[^"]*)(\.png")

    置き換え後の文字列 \1-trans\2
  3. サーバーのイメージの保存場所から全てのイメージをダウンロードし、これまたファイル名を正規表現で置き換えます。
    現在の名前.png を 現在の名前-trans.pngに置き換える。
  4. 全てのイメージをサーバーにアップロードします。
    (万一のリンク切れが発生しないように以前のイメージはそのまま残るようにしています。)
  5. テンプレートのindex.phpまたは、CustomHeadTagプラグインを使っているなら以下をヘッドタグに追加します。(IE8.jsを使うならIE7.jsを指定する必要はないようです。)
    <!--[if lt IE 8]>
    <script src="http://あなたのサイトのJSまでのURL/IE8.js" type="text/javascript"></script>
    <![endif]-->
  6. 完了

いかがでしょう右上にPNGを貼り付けてみましたが・・・・。

オチがありました。

 
1 votes
Written by:Joomler! 4059 hits Wednesday, 27 February 2008 21:24

今日、データベースをphpMyAdminでエクスポートし、ローカルにインポートするために中を見ていたらやけに単調なログのようなデータが何行もあるではないですか。見たらdocmanとdssyndicateのものでした。

必要ないのでさっと削除しました。おまけにサーバー上のものも削除。削除してからダウンロードしたものと比べたらなんとサイズが5分の1になりました。

ログの設定ってあったかな・・・。docmanにはあるようだが、dssyndicateには見あたらない・・・。

$query = "SELECT COUNT(id) FROM #__dssyndicate_stats";
$database->setQuery( $query );
$count  = $database->loadResult();
if($count > 100){
    $query = "TRUNCATE TABLE #__dssyndicate_stats";
    $database->setQuery( $query );
    $database->query();
}

これをadd_statsのところに書き足し、100件以上になると削除するように変更した。

それにしてもログがサイトの内容の4倍あったとは・・・・ログだけでサイトが後4つできることになる・・・。

とほほほ。

 
<<<12>>>
1 / 2

JContentPlus for Joomla!1.5 powered by Joomler!.net

デル株式会社
joomler.net is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla!(R) name is used under a limited license from Open Source Matters in the United States and other countries.
joomler.net is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.