ブログ - 最新エントリー
D3Blog [1.02.xx] を携帯表示にあうようにカスタマイズしてみる。
■方針
全体に表示を簡素化してスリムにする。特に行を減らす方向で...
■やりたいこと
(1) 編集系の画面が xoopsdhtmlarea を使っていて重いので単なる textarea にする。
(2) RSSの配信メニューやカテゴリの表示がリスト表示になっていて、行を稼いでいるので、それをなんとかする。
(追記)
関連データが
http://archives.masa-lab.net/modules/d3downloads/index.php?page=singlefile&cid=2&lid=3
にあります。
■方針
全体に表示を簡素化してスリムにする。特に行を減らす方向で...
■やりたいこと
(1) 編集系の画面が xoopsdhtmlarea を使っていて重いので単なる textarea にする。
(2) RSSの配信メニューやカテゴリの表示がリスト表示になっていて、行を稼いでいるので、それをなんとかする。
(追記)
関連データが
http://archives.masa-lab.net/modules/d3downloads/index.php?page=singlefile&cid=2&lid=3
にあります。
iモードHTMLブラウザで見ると ※ が化けている。
(実機はないのでわからない...)
ソースで確認すると ※ となっている。
常に化けるわけでもないのかな?
よくわからない...
同じ pico のコンテンツを、ブロックで配置したときには化けないのだが、コンテンツとして表示すると化けている...???
当然PCの場合は問題ない訳だが。
ひとつ気がつくことは、化けているときには も になっていることだ。
と、よーく見るとソースの最後にエラーが出ていた。
どうやらページ分割との関係のようだ。
確かに化けるほうの画面は、コメント欄があるためデータ量が多い。
(実機はないのでわからない...)
ソースで確認すると ※ となっている。
常に化けるわけでもないのかな?
よくわからない...
同じ pico のコンテンツを、ブロックで配置したときには化けないのだが、コンテンツとして表示すると化けている...???
当然PCの場合は問題ない訳だが。
ひとつ気がつくことは、化けているときには も になっていることだ。
と、よーく見るとソースの最後にエラーが出ていた。
どうやらページ分割との関係のようだ。
確かに化けるほうの画面は、コメント欄があるためデータ量が多い。
Warning [PHP]: DOMDocument::loadHTML()
[function.DOMDocument-loadHTML]: Attribute class redefined in Entity,
line: 94 in file /.../xoops_trust_path/wizin/src/util/Web.class.php line 135
wizmobile [0.22] のログイン画面には、簡単ログインボタンの下に注意書きが書かれている。
携帯の画面は小さいので、ユーザー名のテキストボックスが下のほうに行ってしまうので、注意書きを画面下に移すことにした。
このままだと注意書きに気がつかないので、代わりにボタンの下に「簡単ログインとは」というリンクをはることにした。
カスタマイズはテンプレートだけで行うことができる。
携帯の画面は小さいので、ユーザー名のテキストボックスが下のほうに行ってしまうので、注意書きを画面下に移すことにした。
このままだと注意書きに気がつかないので、代わりにボタンの下に「簡単ログインとは」というリンクをはることにした。
カスタマイズはテンプレートだけで行うことができる。
■db 取得の仕方
(1) $db = $xoopsDB;
(2) $db = & XoopsDatabaseFactory::getDatabaseConnection();
(3) $db = $root->mController->getDB();
個人的には(3)がいいかなぁ...
■クラス XoopsMySQLDatabase
(1) $db = $xoopsDB;
(2) $db = & XoopsDatabaseFactory::getDatabaseConnection();
(3) $db = $root->mController->getDB();
個人的には(3)がいいかなぁ...
■クラス XoopsMySQLDatabase
■現象
wizmobile [0.22] で管理画面から、非表示ブロックの設定をした更新をかけると画面が真っ白になる。
更新は正しくかかっている。
PHPデバッグをONにしても変わらない。
■
URL は .../modules/mobile/admin/admin.php となっている。
ちなみに非表示ブロックの設定画面は admin.php?act=BlockSetting である。
おそらくact が指定されていないときに、何のActionも動かないので真っ白になってしまうのだろう。
コードを追ったが、actの指定がないときのロジックを追うのは面倒だったので、最初に目に入ったのが updateNonDisplayBlocks() メソッド。
xoops_trust_path/modules/xizmobile/class/WizMobile_Action.class.php
おそらくここで処理しているのであろう、メソッドの最後に
という記述がある。
考えてみれば、処理終了後再度非表示ブロック設定画面になってくれたほうがいいので、パラメタを追加することにする。
これで無事、真っ白画面とお別れできた。
(追記) 0.26?以降で修正されました
wizmobile [0.22] で管理画面から、非表示ブロックの設定をした更新をかけると画面が真っ白になる。
更新は正しくかかっている。
PHPデバッグをONにしても変わらない。
■
URL は .../modules/mobile/admin/admin.php となっている。
ちなみに非表示ブロックの設定画面は admin.php?act=BlockSetting である。
おそらくact が指定されていないときに、何のActionも動かないので真っ白になってしまうのだろう。
コードを追ったが、actの指定がないときのロジックを追うのは面倒だったので、最初に目に入ったのが updateNonDisplayBlocks() メソッド。
xoops_trust_path/modules/xizmobile/class/WizMobile_Action.class.php
おそらくここで処理しているのであろう、メソッドの最後に
executeRedirect(WIZXC_CURRENT_URI, ...
WIZMOBILE_MSG_UPDATE_BLOCK_SETTING_SUCCESS)) );
という記述がある。
考えてみれば、処理終了後再度非表示ブロック設定画面になってくれたほうがいいので、パラメタを追加することにする。
executeRedirect(WIZXC_CURRENT_URI . "?act=BlockSetting", ...
WIZMOBILE_MSG_UPDATE_BLOCK_SETTING_SUCCESS)) );
これで無事、真っ白画面とお別れできた。
(追記) 0.26?以降で修正されました
これはすばらしい。
おすすめ度:★★★★★
モジュール開発には必須ですね。
XOOPS Cube デバッグ用 preload “ryusDebug”
http://ryus.co.jp/modules/wordpress/index.php?p=107
プリロードを追加して、テーマの中に
を書いておくことによって SQL のクエリを確認することができます。
おぉ、xoops ってこんなにクエリを発行するんだね。まぁ仕方ないか...
という感想は置いておいて。
デバッグ用の print なども見られる。
うれしい〜〜〜〜〜〜
すばらしいものをありがとうございます。
ちなみに、元のままだとSQLにHTML特殊文字が入っていた場合に表示に問題が発生するので、若干修正。
40行目を
から
45行目を
から
へ変更。
おすすめ度:★★★★★
モジュール開発には必須ですね。
XOOPS Cube デバッグ用 preload “ryusDebug”
http://ryus.co.jp/modules/wordpress/index.php?p=107
プリロードを追加して、テーマの中に
<{xoops_explaceholder control=ryusDumpSql}>
を書いておくことによって SQL のクエリを確認することができます。
おぉ、xoops ってこんなにクエリを発行するんだね。まぁ仕方ないか...
という感想は置いておいて。
デバッグ用の print なども見られる。
<{$stdout_buffer}>
うれしい〜〜〜〜〜〜
すばらしいものをありがとうございます。
ちなみに、元のままだとSQLにHTML特殊文字が入っていた場合に表示に問題が発生するので、若干修正。
40行目を
$qlog['sql'],
から
htmlspecialchars($qlog['sql']),
45行目を
$log[] = '<li>'.$qlog['sql'].'</li>';
から
$log[] = '<li>'.htmlspecialchars($qlog['sql']).'</li>';
へ変更。
D3モジュール関連の調査をしているときに
$mydirname と $mytrustdirname の値が空になることがあった。
xoops_version.php 内に関数を作って
関数内から global 宣言をして $mydirname などにアクセスするのだが、いくら確認しても空なのだ。
まったく理解できずに、設定している場所にも global 宣言を置いてみたら、正しくアクセスできるようになった。
kernel/module.php loadInfo() 内から xoops_version.php はinclude されていた。
確かに、xoops_version.php で定義するものがグローバルになってしまうのは困るから...
やはり、xoops_version.php にはあまり変なことをしないほうがよさそうだ。
$mydirname と $mytrustdirname の値が空になることがあった。
xoops_version.php 内に関数を作って
関数内から global 宣言をして $mydirname などにアクセスするのだが、いくら確認しても空なのだ。
まったく理解できずに、設定している場所にも global 宣言を置いてみたら、正しくアクセスできるようになった。
kernel/module.php loadInfo() 内から xoops_version.php はinclude されていた。
確かに、xoops_version.php で定義するものがグローバルになってしまうのは困るから...
やはり、xoops_version.php にはあまり変なことをしないほうがよさそうだ。
altsys [0.58] でカスタムブロックを新規作成したとき
以下のようなワーニングが表示されることがある。
確かにこの行では include をしており、このようなファイルはない。
この行の前で error_reporting(0) をしているが、どうもこれが利かずにワーニングが出ているようだ。
この現象は常に出るわけではないようだ。
今のところレンタルサーバ(xrea)上で何度か出ている。(常に出るわけではないようだ...)
以下のようなワーニングが表示されることがある。
Warning: MyBlocksAdmin::include() [function.MyBlocksAdmin-include]:
Unable to access /.../modules/__CustomBlocks__/xoops_version.php
in {XTD}/libs/altsys/include/MyBlocksAdmin.class.php on line 233
確かにこの行では include をしており、このようなファイルはない。
この行の前で error_reporting(0) をしているが、どうもこれが利かずにワーニングが出ているようだ。
この現象は常に出るわけではないようだ。
今のところレンタルサーバ(xrea)上で何度か出ている。(常に出るわけではないようだ...)
(分割を ON にしている場合?)
XML パーサでの変換が入るためか、
<textarea></textarea>
が
<textarea/>
に変換されてしまう。
そのため端末(iモードHTMLシミュレータだが...)が</textarea>がないと勘違いし、その後のデータがテキストエリア中に流し込まれてしまうようだ。
動作環境との兼ね合いもあるかもしれない...
とりあえずモバイルテンプレートを修正する。
のようになっているものに HTMLコメント<!---->を差し込む
これでとりあえず、対処できた。
XML パーサでの変換が入るためか、
<textarea></textarea>
が
<textarea/>
に変換されてしまう。
そのため端末(iモードHTMLシミュレータだが...)が</textarea>がないと勘違いし、その後のデータがテキストエリア中に流し込まれてしまうようだ。
動作環境との兼ね合いもあるかもしれない...
とりあえずモバイルテンプレートを修正する。
<textarea id="contents" ...><{$entry.xxxx}></textarea>
のようになっているものに HTMLコメント<!---->を差し込む
<textarea id="contents" ...><{$entry.xxxx}><!----></textarea>
これでとりあえず、対処できた。