2011年2月18日金曜日

[WP]Event Calendar(3?)の複数月の同時表示で各カレンダーにclass指定

 結論から言いますと、~/plugins/event-calendar/template-functions.php を弄りました。

  1. function ec3_get_calendar_month($date,$calendar_days,$thead)

    function ec3_get_calendar_month($date,$calendar_days,$thead,$my_count)
  2. ec3_get_calendar_month($this_month,$calendar_days,$thead);

    ec3_get_calendar_month($this_month,$calendar_days,$thead,$i);
  3. echo "<table id='" . $date->month_id() . "'>\n<caption>"

    echo "<table id='" . $date->month_id() . "' class='table" . $my_count . "'>\n<caption>"
上記で、カレンダーのtableタグに「class="table0"」「class="table1"」・・・と、classが振られます。

単にforでループ表示されている関数に、forの$iを引数として渡し、クラス名として表示しただけですが、弄った所を忘れない様にメモ。

ついでに、カレンダーとナビゲーション周りのブロックを分割する為に、下記をLine:323、324付近に以下を挿入。

echo "</div>\n";
echo "<div id='wp-calendar-navi'>\n";

さらに、次の月、前の月へのリンクのhrefにカテゴリー情報が無く、何故か使えないのを下記にて修正。

echo "\t<td id='prev'><a id='ec3_prev' href='" . $prev->month_link() . "'"

echo "\t<td id='prev'><a id='ec3_prev' href='" . $prev->month_link() . "&cat=" . $ec3->event_category . "'"

echo "\t<td id='next'><a id='ec3_next' href='" . $next->month_link() . "'"

echo "\t<td id='next'><a id='ec3_next' href='" . $next->month_link() . "&cat=" . $ec3->event_category . "'"

何故、この状態でのリリースなのか・・・正直、不思議です。
プラグイン更新すると上書きされるだろうから気をつけなくては・・・

余談ですが、次月へのリンクは最初の月が最後に表示されていた月の次の月・・・つまり、2月と3月の2月分を並べて表示していた場合は4月、5月と、前回の表示月とかぶらずに表示されるのに、前の月のリンクでは1ヶ月前・・・つまり、1月と2月が表示されるというのもちょっと違和感があります。

2011年2月13日日曜日

[WP]get_postsから取ったpost_dateのフォーマットを変える

結論から言いますと、

$mydate = mysql2date('Y-m-d', $post->post_date);

でいけます。(※$postにはget_postからループ内で取得する等した1記事のクラスを代入)

 MTは独自タグを駆使すればかなり幅広い事ができますが、
ワードプレスはそれに当たる出力用クラスよりも関数でカスタマイズするのが良いですね。

[参考]

2011年2月12日土曜日

[WP]投稿画面のカテゴリ-一覧をラジオボタンにしてみた

結論から言いますと、コア弄りました。(※WPバージョン3.0.5)
検索して調べて出てきた方法だと出来なかったのです。

編集したデータはこちら↓
[WPインストールDIR]/wp-admin/includes/template.php

■「全カテゴリー」タブ内
Line:184付近のクラス「Walker_Category_Checklist」内、Line:209付近「$output .=~」の「type="checkbox"」を「type="radio"」に。

■「よく使うもの」タブ内
Line:316付近の関数「wp_popular_terms_checklist」内、Line:343付近「<input~」の「type="checkbox"」を「type="radio"」に。(ここは何故かPHPではなくHTML生打ちでした・・・)

意外と需要がある要件だと思うものの、情報を探すのに結構時間かかりました。
出来ればコアを弄らずになんとかしたかったですが、JSで何とかしようとしてもダメでした。

そもそも、主観ではWPに関わらず、CMSとして扱う場合に記事投稿で同階層の複数カテゴリー選択ってあまりする場面が無い様に思えます。親子関係が保てさえすれば良い事の方が多い。
ブログではよくある事かもしれませんし、WPは基本的にはブログツールなので仕方が無いと思いますが、切り替えが出来たら嬉しいですね。

それと、WPってマイナーチェンジ時に結構コアの構成変えてたりします?
検索して出てくる数ヶ月前の情報とファイルや内容の構成が一致しない事が多い気がするのは気のせいか。

[PHP]ヒアドキュメントの記法

結論から言いますと、

echo <<<__HTML__
~ソース記述~
__HTML__;

です。

Perlとは「<」の数が微妙に違ったりするでややこしい。

無くても何とかなる物でもありますし、自分があまり使わないという事もありますが、あれば便利なのでちゃんと覚えておこうかと。

2011年2月10日木曜日

[CSS]CSSのみでロールオーバー効果

いつも見直すのが面倒なのでメモ。
以前に元同僚に教えてもらった方法です。

a:hover img { opacity:0.7; filter:alpha(opacity=70); -ms-filter: "alpha( opacity=70 )" }

IEもいけますよね。
通常時とオーバー時の画像を並べてくっつけた画像を用意してbackgroundに指定した画像のpositionをズラすという手法が良く使われますが、更新の手間が大きくなるので正直なところ余り効率的ではないと感じていましたが、これは楽だし効率的、且つ、実用的です。

デメリットとしては、背景が白である事が前提になります。

今はこれか、普通に2枚に分けた画像をJSで操作するのが効率、実用性ともに良いかな~と思う次第です。

2010年12月30日木曜日

[PHP] 「Cannot redeclare」でハマる

「Cannot redeclare」というエラーでハマりました。

下記の構成のデータで起こったのですが、簡単な関数を作成して再現しようとしても再現できず、結局原因は分からず。

FuncBの定義をFuncAの外に出す事で回避しました。

■表示用ページPHPデータindex.php
<?php require_once('hoge.php') ?>

■require_onceで呼び出している外部PHPデータhoge.php
<?php
$a = "A";
$b = "B";
function FuncA($a, $b){
    $c = "C";
    $d = "D";
    function FuncB($c, $d){
        &#65374;実行処理&#65374;
    }
    FuncB($c, $d);
}
FuncB($a, $b);
?>

構成は上記と通りですが、実際には多数の処理が入っています。
しかし、ループ内でもなければ、同じ名前で二度定義もしていない、require_once文もべた書きで二重にはなっていない、include文にしても変化無し・・・と、検索して調べた原因には全て該当せず。

しかも、上記の通りの簡単な関数では再現できず・・・時間が無いのでここまで。
残念。

[PHP] 「It is not safe to rely on the system's timezone settings.」でハマる

「It is not safe to rely on the system's timezone settings.」というエラーでハマりましたが、解決。

結論からいいますと、php.iniの「;date.timezone =」を「date.timezone = "Asia/Tokyo"」に変更。
(コメント化を解除して、"Asia/Tokyo"を追加です。)

これまで何度もPHPのインストールは行っていますが、このエラーは今回初です。
最近のバージョンアップで何か変わった?
インストール時に何か設定見落としたかなぁ・・・。

ググって出てきた以下のサイトの通りでした。ありがとうございます。

[参考]
It is not safe to rely on the system's timezone settings.: 気まぐれ底辺プログラマ -