Posts tagged css
WordPress テーマを作成する(2)
1前回は style.css と index.php だけを作成して最低限のブログを表示させました。なぜこれだけのファイルで表示ができるかというと選択しているテーマに必要なファイルがない場合は wp-content/thmems/default 内のファイルを使用するためです。
今回はヘッダファイルとフッタファイルを作成します。
ヘッダファイル
テーマディレクトリに header.php を作成し下記のような内容にしました。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" /> <title><?php bloginfo('name'); ?> <?php wp_title(); ?></title> <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats --> <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" /> <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" /> <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" /> <?php wp_head(); ?> </head> <body> <div id="page"> <div id="header"> <h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1> <div class="description"><?php bloginfo('description'); ?></div> </div>
ゼロから書くのは大変なので default/header.php をコピーして必要最低限のみ残してみました。
フッタファイルの作成
ヘッダ同様に footer.php ファイルを作成し、下記のようにしました。
<div id="footer"> <?php bloginfo('name'); ?> Powered by <a href="http://wordpress.org/">WordPress</a><br /> <a href="<?php bloginfo('rss2_url'); ?>">Entries (RSS)</a> and <a href="<?php bloginfo('comments_rss2_url'); ?>">Comments (RSS)</a>. </div> </div> <?php wp_footer(); ?> </body> </html>
ヘッダとフッタのみのブログができました
scriptaculous.js を使ってマトリックス状に配置した要素を並び替える
1scriptaculous.js を使って並び替えを行う を応用して格子状に並んだ要素を並び替える例です。基本的な部分はリスト形式の並び替えと同じですので省略します。
最初にデモ、その後にコードを紹介します。
デモ
#sortarea { width: 350px; } #sortarea div { float: left; width: 100px; height: 70px; border: 1px solid #000; margin: 5px; text-align: center; padding-top: 30px; cursor: default; }
ソートする要素
前回は li タグで要素を定義しましたが、今回は div タグで定義しました。
CSS で格子状に並ぶようにしています。
<style> #sortarea { width: 350px; } #sortarea div { float: left; width: 100px; height: 70px; border: 1px solid #000; margin: 5px; text-align: center; padding-top: 30px; cursor: default; } </style> <div id="sortarea"> <div id="drag_1">A1</div> <div id="drag_2">A2</div> <div id="drag_3">A3</div> <div id="drag_4">A4</div> <div id="drag_5">A5</div> <div id="drag_6">A6</div> <div id="drag_7">A7</div> <div id="drag_8">A8</div> <div id="drag_9">A9</div> </div>
ソートする JavaScript コード
Sortable.create の option に overlap:’horizontal’ を指定しなくても並び替えはできますが、少しぎこちない感じになりますので、指定しておいたほうがいいでしょう。
<script type="text/javascript" language="javascript"> // <![CDATA[ Sortable.create("sortarea",{ tag:'div',overlap:'horizontal',constraint: false, }); // ]]> </script>
Smarty で正規表現を if 文で使用する
2Smarty には正規表現を使用して文字列を置換する regex_replace があります。
これを上手に使用して if 文で正規表現を用いて条件分岐させます。
if (preg_match('/php/i', 'PHP is the web scripting language of choice.')) { echo 'A match was found.'; } else { echo 'A match was not found.'; }
PHP で上記のような処理を Smarty で書くと下記のようになります。
{assign var='string' value='PHP is the web scripting language of choice.'} {if $string|regex_replace:'/.*php.*/i':'php' eq 'php'} A match was found. {else} A match was not found. {/if}
ポイントは regex_replace を用いて、正規表現のパターンに該当する場合は元の文字列を何かしらの文字列(上の例でいうと’php’)に置換してしまい、それを eq で置換されているか判定するということです。
これを実際に使用したのは OpenPNE のテンプレートです。
OpenPNE を使用していて、特定のカテゴリのときのみ読み込む CSS を変えたいときがありました。
OpnePNE のイベント関連の URL は http://expamle.com/?m=pc&a=page_c_event_*** という感じになります。
全部で14種類ありますので、これを普通に if 文で書いていると大変なことになりますし、追加などがあったときのことを考えるとよくありません。
そこで Smarty の if 文に正規表現を使用して下記のようにすることにより1つの条件で page_c_event_*** の URL を条件分岐させました。
Smarty テンプレート
{if $smarty.get.a|regex_replace:"/page_c_event.*_/":"event" eq "event"} {** イベントです**} {else} {** イベント以外です **} {/if}
OpenPNE コンテンツをセンター寄せにする
0OpenPNE のデザインは左寄せなのですが、これをセンター寄せに変更したいという要望がありました。
最初は CSS に
.ext_sub_container { width: 720px;margin: 0px auto; }
を追加してみたのですが、やはり IE ではうまく表示できません。
そこでテンプレートを見直すと
inc_header.tpl 339行目
<div align="left">
というを
<div align="center">
に変更したらうまく行きました。
ちなみに OpenPNE テンプレートのカスタマイズ でも書きましたが
/openpne/webapp/modules/pc/templates/inc_header.tpl を
/opnepne/webapp_ext/modules/pc/templates/inc_header.tpl に
コピーしてからカスタマイズすると元のファイルを残したままカスタマイズできるのでお勧めです。
その場合は /openpne/config.php の
define('USE_EXT_DIR', false);
を
define('USE_EXT_DIR', true)
に変更するのをお忘れなく。
optionタグを選択不可にする disabled 属性を IE6 でも有効にする方法
0optionタグを選択不可にする disabled 属性で紹介したように option タグに disabled 属性を指定することにより選択不可にすることができるのですが、IE6 では選択できてしまいます。
JavaScript で解決する方法です。
Select, Option, Disabled And The JavaScript Solution
上記の参考サイトに詳しくやり方が書かれていますので、簡単に手順だけ紹介。
- 参考サイトの「Implementing」にある download リンクより JavaScript コード(select-option-disabled-emulation.js)をダウンロード
- select-option-disabled-emulation.js を適当な場所に保存
- html 内で select-option-disabled-emulation.js を読み込む
- 選択不可にしたい option タグに disabled 属性を指定する
DHTML で解決する方法です。
これは上記参考サイトの補足で紹介されていたサイトです。
apptaro’s blog: Emulating Disabled Options in IE with DHTML Behaviors
こちらも上記URL に詳しいやり方が書かかれていますので、簡単にご紹介。
- 参考サイトの中央よりやや下にある Download よりファイル一式をダウンロード
- 適当な場所に css, htc ファイルを保存
- html で上記 css を読み込む
- 選択不可にしたい option タグに disabled 属性を指定する
これで IE6 でも option タグの disabled 属性が使えるようになりました。
WordPress でタグを使えるようにしてみた
2使用したプラグインは Simple Tagging です。
WordPress用、タグ付けプラグイン:Simple Tagging | 創造マラソン
こちらのサイトでかなり詳しく解説されています。
Single.php のエントリー本文の後に
<?php STP_PostTags(); ?>
を入れて、タグを表示させ、さらに
< ?php STP_RelatedPosts(); ?>
でタグにより、関連するエントリーを表示させるようにしました。
また、サイドバーに
< ?php STP_Tagcloud(); ?>
を入れてタグクラウドを表示させました。
ただ、このままではリスト構造で縦に並んでしまうので、
Tag Cloud – Simple Tagging for WordPress – Trac
こちらを参考に下記を追加しました。
style.css
ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; } ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;} ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; } ul#tagcloud li a:hover { text-decoration:underline; } ul#tagcloud li.t1 a { color:#797979; font-size: 120%; } ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; } ul#tagcloud li.t3 a { color:#616161; font-size: 190%; } ul#tagcloud li.t4 a { color:#555555; font-size: 210%; } ul#tagcloud li.t5 a { color:#484848; font-size: 230%; } ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; } ul#tagcloud li.t7 a { color:#303030; font-size: 270%; } ul#tagcloud li.t8 a { color:#242424; font-size: 290%; } ul#tagcloud li.t9 a { color:#181818; font-size: 310%; } ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; }