2008年1月27日日曜日

Scuttleに新しい画面を実装する

Scuttleにヘルプ画面など新規画面を追加する方法。

■ヘッダーにリンクを追加する
ヘッダーは共通ファイルとなっている。
ファイルはscutte/templates/toolbar.inc.phpがテンプレートになっています。
ユーザログイン時と未ログイン時のメニューが違います。
当該ファイルの30行目付近にある

の記述を境に上部がログイン時のメニューで下部が未ログイン時のメニューになってます。
ログイン時のメニューと未ログイン時のメニュー(<ul>タグ内)に以下を追記しUTF8で保存します。
<li><a href="<?php echo createURL('help'); ?>">ヘルプ</a></li>


■help.phpを実装する
先ほど作ったリンク先の画面がないので実装します。
scuttle/about.phpをコピーしscuttle/help.phpを作成します。
help.phpを開き
$tplVars['subtitle'] = T_('About');を
$tplVars['subtitle'] = 'ヘルプ';
に書き換えます。これが画面のサブタイトルになります。

$templateservice->loadTemplate('about.tpl.php', $tplVars);

$templateservice->loadTemplate('help.tpl.php', $tplVars);
に書き換えます。help.tpl.phpはtemplates以下のファイルに対応しています。
以上が終わったらUTF8でファイルを保存します。

テンプレートファイルはscuttle/templates/about.tpl.phpをコピーして
scuttle/templates/help.tpl.phpを作成するのが良いかと。
あとは自由に編集してUTF8で保存すればできます。

Scuttleの検索でタグの部分一致検索を可能にする

Scuttle/services/bookmarkservice.php
の321行目を以下に書き換えると部分一致検索が可能になる

$query_4 .= ' OR T.tag LIKE "%'. $this->db->sql_escape($aTerms[$i]) .'%"';

2008年1月24日木曜日

ZendDebuggerのインストールで嵌った

インストールで嵌りました。
Readme.txtの通りに設定したがうまくいかず・・・
Apacheのログに以下のメッセージが出て、ZendDebuggerが認識しなかった。
PHP Fatal error: [Zend Optimizer] Zend Debugger must be loaded after Zend Optimizer in Unknown on line 0

ZendDebuggerダウンロード元
http://downloads.zend.com/pdt/server-debugger/
からZendDebugger-5.2.12-cygwin_nt-i386.zip をダウンロードして解凍する。


以下のサイトを参考に
http://blog.tigeryao.com/2008/how-to-allow-zend-optimizer-and-zend-debugger-coexist.html

解決法は
ZendDebuggerの圧縮ファイルを解凍し、
(c:\full\path\to\ZendDebugger-5.2.12-cygwin_nt-i386)
そのディレクトリ直下の5_2_x_compフォルダ名をphp-5.2.xに変更

php.iniに以下の設定を追加する。
[ZendDebugger]
zend_extension_manager.debug_server_ts="C:\full\path\to\ZendDebugger-5.2.12-cygwin_nt-i386"
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always

これでApacheを再起動してうまくいきました。

※xamppでやってます

2008年1月2日水曜日

clearfixで段組の問題を回避

親のブロック要素の高さが子のブロック要素の高さより低くなってしまう現象
(css2.0の仕様だそうです。)
を回避する方法をclearfixというらしい。

以下のような2段組でつくると
<div id="header">
  ...(略)...
</div>
<div id="content">
<div id="content_l" style="float:left;">
  ...(略)...
 </div>
<div id="content_r">
  ...(略)...
</div>
</div>
<div id="footer">
...(略)...
</div>

content_lの高さが大きくなったときにcontentの高さが
自動的に大きくならないのでfooterがcontent_lとかぶってしまっていた。

http://norisfactory.com/stylesheetlab/000038.php
を参考にclearfixクラスを作成しcontentに適用することで
解決できた。