当ブログで使用している WordPress のプラグイン Customizable Post Listings 1 の修正点
ローカルで構築した MySQL のバージョンだと、GROUP BY 句を指定していると正常に SELECT されないので、以下の様に修正$sql .= "GROUP BY $tableposts.ID ORDER BY $orderby $order";
$sql .= "ORDER BY $orderby $order";
上記の最初の if 文で $orderby 変数を置き換えてしまっているので、2番目の if 文では真とはなりません。なので、関数の最初で別変数に保持するように修正if ($orderby != 'rand()') $orderby = "$tableposts.post_$orderby";
・
・
・if ('modified' == $orderby) $sql .= "AND $tableposts.post_modified_gmt <= '$now' ";
$o = $orderby;
・
・
・if ('modified' == $o) $sql .= "AND $tableposts.post_modified_gmt <= '$now' ";
単に投稿日時と更新日時が同じでないレコードを抽出するように条件を加えただけif ('modified' == $o) $sql .= "AND $tableposts.post_modified_gmt <= '$now' AND $tableposts.post_date_gmt <> $tableposts.post_modified_gmt ";
WordPress の事 の記事で書いた問題が解決したので、その時行った対策を記事としておきます。結論から言うと、formatting.php を修正する事でほぼ解決。ソースの中を見ると解るように私にとっては余計な事をし過ぎている。修正した点は wptexturize, wpautop の 2つの関数。1 前者は一部の処理をコメントにし、後者は入力パラメーターを処理はせずにそのまま返す様に修正
前述の修正を施した WordPress を暫くの間、ローカル環境の WordPress でテストし、私が使用するもとでは問題ないと判断し、その時にテストしていたプラグイン 2 と一緒にサーバー側にも反映させました。最近の記事 (recent posts) と最近更新 (recent update) された記事のリストがそうです
話は変わって、WordPress はカスタマイズ性が抜群にいいのはいいのですが、如何せん、ドキュメントの不備が酷すぎます。今回の移転で私は初めて WordPress を触りました。所謂、WordPress 初心者です。実際にテンプレートを作製している時に感じたんですが、やりたいこと、実現したいことは解っているのですが、そこから目的の情報に辿り着くまでが時間かかり過ぎました。ひとえに逆引きやチュートリアルといった情報を掲載しているサイトがないからです。これは、公式サイト、日本の WordPress 関連サイトでもそうでした
例を挙げると WordPress でテンプレートを作成するには テンプレートタグ(実体は PHP の関数) というものを使用します。で、公式サイトを閲覧していき、テンプレートタグのマニュアルページなるものを見つけましたが…こんなんじゃ初めて触る人には理解できません。テンプレートタグの要約すら記述していません('A`) 結局テンプレートタグ一つ一つのページを何ができるのかを知る為に見て回らなければなりません。一言要約を記述するだけでこの手間が省けるに…('A`) これらを日本語に翻訳したサイトもあるんですが、情報が古かったり、リソースを置いてる場所が不安定だったりと日本語での情報収集は断念しました
実際にテンプレートについて書いていこうかと思いましたが、ダラダラと長くなるので今回は此処までとします
Panels UI が不安定で頻繁に foobar2000 がクラッシュする問題についてチョット纏めてみました。あくまでも、私自身のソフトウェア環境、経験、検証に基づくものだと言う事を前置きしておきます
私が主に foobar2000 を動かしている環境としては…
以上のような環境なんですが、Panels UI を使い始めた頃は、まともに設定画面を開けなくて苦労しました。そこで、以下の事を試しました
1番に関してはほとんど (と言うか、全く) 効果が得られませんでした。アプリケーションの言語を色々と変更してみたんですが…劇的な効果が得られたのは 2番でした。ウィンドウを制御するソフトウェアに私は ぴたすちお 1 を使用していたんですが、このソフトウェアの使用をやめる事によって、設定画面を開く事によって foobar2000 がクラッシュすると言う問題は完全に解消しました
これで、設定画面が完全に開けるようになって、るんるん気分 2 で TF を書き、foobar2000 でお気に入りを再生させていたのですが、長時間再生させていると下記に示している不具合が出てくるケースに遭遇 3
上記、2つの問題はかなりの時間を浪費して調べた 4 結果、Panels UI の TF を記述する際には以下の点に注意する様にする事によって解消しました
以上のような対策を施す事によって、私の環境下では foobar2000 + Panels UI 0.14.12 は安定して動作しています
この件で検索を行っても CSS を PHP のヒアドキュメントとして、記載する方法が見つからなかったのでメモとして記事にします
CSS を記載する方法としては style 要素の中に記述するか、link 要素の中にスタイルシートの URI を記載して UA に読み込ませると言う 2つの方法がありますが、今回、ここで記載するのは後者の方です。何故この様な事を考えたかと言うと、いい加減此処の超カオス気味のスタイルシートを何とかしたいと思った次第です
PHP の公式マニュアルによると PHP: 基本的な構文 - Manual たいていの場合、PHP は HTML ドキュメントの中に埋め込まれます と記載されています。たいていの場合? では、別に HTML でなくてもいい訳です。参照先にその具体例が記載されています。そこで、まず行ったのが HTML の head 要素内の link 要素を以下の様に修正
<link rel="stylesheet" type="text/css" href="filename.php" media="all" />
スタイルシートを指定しているファイルのサフィックス部分が php になっている所がポイント。で、実際のスタイルシートファイル(.php) は以下の様に記述します
@charset "UTF-8";
<?php
$color = 'pink';
$background = 'green';
?>
body {
color: <?php echo $color; ?>;
background-color: <?php echo $background; ?>;
}
ブラウザをリロード行っても…真っ白けです。どぎつい配色になるはずなんですが、これはスタイルシートが適用されていないようです。つまり、UA がスタイルシートとして認識しなかったようです。そこで Proxomitron 1 のログウィンドウを開いて、もう一度リロードを行います。案の定 PHP が HTTP レスポンスヘッダー Content-Type のメディアタイプに text/html として返しています。これが原因の様です。つまり、スタイルシートならばメディアタイプを text/css として返さなければならないのに UA に対して HTML 文書ファイルですよ。と、返してしまっている訳です。これは、PHP の設定 default_mimetype が text/html となっているので正常な動きです。そこで、スタイルシートファイル(.php) を以下の様に修正します
<?php header('Content-Type: text/css; charset=utf-8'); ?>
@charset "UTF-8";
<?php
$color = 'pink';
$background = 'green';
?>
body {
color: <?php echo $color; ?>;
background-color: <?php echo $background; ?>;
}
どうってことはありません。header 関数にてデフォルトのヘッダーを置き換えてやっているだけです。ブラウザを再度リロードするとスタイルシートが認識されました。本来ならば、ここで終了なんですが、link 要素のファイル名の指定が php となっているのがどうもかっこよくない。そこで、HTTP サーバーのアクセス制御ファイルを以下の様に記述します 2
<FilesMatch "filename\\.css">
SetHandler application/x-httpd-php
</FilesMatch>
あとは、HTML の head 要素内の link 要素のファイル名指定部分の php を css に変更。実際のファイル名も css に変更。実際にブラウザをリロードしてアクセス制御ファイルが効いているか確認して終わりです
これには色々と応用が効きます。各 UA に対応させる為に UA のバグを逆用して苦労してスタイルシートの読込みの振り分けなどを行っている様ですが、PHP 変数の $_SERVER["HTTP_USER_AGENT"] で判定を行えばいいのです。3 他には、色を容易に変更できる様に PHP の変数としておけば、変数の値を変更するだけで配色の変更が可能です。などなど…PHP コードが記述できるので、良いと思います 4
Panels UI の私的マニュアルです。Commands references なんていきなりディープなものを作っておきながら、introduction (序章、入り口) 部分のマニュアルがないのはオカシイので作ってみました。特に 原文: Foobar2000:Components 0.9/Panels UI (foo ui panels) - Hydrogenaudio Knowledgebase には特にタイトルが明記されていなかったので、内容から推測して勝手に introduction と命名しました
Panels User Interface
Maintainer: | terrestrial |
Stable release: | 0.13.8 beta [June 12 2007] |
Preview release: | 0.14.12 beta [Jul 18 2007] |
Foobar version: | 0.9.4.x |
Use: | Graphical user interface |
License: | - |
Website: | panels.fooblog2000.com |
Discussion thread: | Hydrogenaudio Forums |
Panels UI は titleformatting の使用によるfoobar2000 の外観を変更する為の GUI です。これらは Panels UI 独自の titleformat 機能およびフィールドと foobar2000 の機能とフィールドを含んでいます。Panels UI は現在統合されている Track Info Mod と Single Columns Playlist コンポーネントの後継者です
Panels UI はまだベータ段階にあって、それは手広くテストされていません
Panels UI の開発は 2007年7月現在 停止している様です…('A`)
以下の特徴を提供するカスタマイズ可能なユーザーインターフェイス (UI) です
このインポート、エクスポートは機能していません。インポートは PanelsUI ディレクトリに .PUI ファイルをコピーする事で代用できます。エクスポートは Layout を変更または foobar2000 を終了した際に .PUI ファイルが保存されるので、適当なディレクトリにコピーする事で代用できます
バージョン 0.14.x は foobar2000 をクラッシュさせる場合があって不安定です。この理由から 0.14.x は公式の Known Problematic Components(問題のあるコンポーネント) にリストされています
foo_uie_tabs の中に Track Display を加えた場合、その中の Track Display の $panel は機能しません
0.14.12 のダウンロード: Panels UI : 0.14.12