2011年8月25日木曜日

wordpressのパーマリンク設定 其の二(IIS7+URL Rewrite)

其の一ではIIS6+ISAPI_Rewriteでのパーマリンクを書きましたが次にIIS7+URL Rewrite。
IISのバージョンによってツールを使い分けないといけませんのが面倒ですがまずwordpressのドキュメントにも記載されているURL Rewriteをダウンロードします。

インストールは特に問題ないはずです。

インストール後、IISの管理画面にURL Rewriteという項目が新たに追加されますが、自分の環境では特にここれ触れることなく設定ができました。

設定はwordpressのパーマリンクを指定するだけ。そうするとwordpressのインストールディレクトリに"web.config"というファイルが作成されます。

念のためIISを再起動してサイトを見ると設定が反映されます。

wordpressのパーマリンク設定 其の一(IIS6+ISAPI_Rewrite)

以前にapache+mod_rewriteを使ったパーマリンクの設定を書きましたが今回はIIS6+ISAPI_Rewrite。
ISAPI_Rewriteについてはこっち(大したことは書いてませんが)

ISAPI_Rewriteの設定は以下
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?p=$1 [NC,L]

テスト環境とかだと複数のワードプレスをディレクトリ分けてやってるとこはあると思いますがそういった場合は環境に合わせて以下のように修正します。
RewriteBase /wordpress/ ←ここ
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/index.php?p=$1 [NC,L] ←ここ

これでIISの設定は完了。
あとはwordpress側でパーマリンクの設定をすることでapache+mod_rewriteと同じような動作をすることができます。

2011年8月24日水曜日

wordpressのl10n.js

wp_headを使ってヘッダー情報を出力した場合、l10n.jsというのが出力されます。
これはjavascriptで多言語メッセージを処理するものらしいのですが、これを除去する場合は
remove_action( 'wp_head', 'wp_print_head_scripts', 9 );

で除去することができます。
ただし、これでは他のライブラリ(jqueryとか)も一緒に消えてしまいます。
l10n.jsだけを取り除く場合は
function deregister_scripts() {
    if ( ! is_admin() ) {
        wp_deregister_script( 'l10n' );
    }
}
add_action( 'wp_print_scripts', 'deregister_scripts' );

これをfunctions.phpに記述することでl10n.jsだけを消すことができます。

2011年8月23日火曜日

カテゴリの説明文を取得・表示する(category_description)

wordpressのカテゴリを登録する際に説明文を入力する項目があります。
ただ、入力エリアの下に"この説明はデフォルトではあまり重要な意味を持ちませんが、これを表示するテーマも中にはあります。"と記載されてます。
ん??まぁ表示してみます。

<?php echo category_description(); ?>

これでカテゴリの説明文を表示することができます。
この関数を使うとpタグ付きで表示がされます。

このpタグを除去する場合はfunctions.phpに以下を記述します。
remove_filter('term_description', 'wpautop');

Facebookページのスクロールバーを消す方法

Facebookページをiframeでカスタマイズする場合は、ある程度のページ量をつくるとスクロールが表示されます。
Facebookのjavascript sdkを使うことでこれを解消することができます。

(1)読み込むページのhead部分に以下を追加
<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
<script language="JavaScript">
 FB.init({
  appId: 'アプリID',
  status: true,
  cookie: true,
  xfbml: true
 });
 window.fbAsyncInit = function() {
  FB.Canvas.setSize();
 }
 function sizeChangeCallback() {
  FB.Canvas.setSize();
 }
</script>

アプリIDはご自身のアプリIDに書き換えてください。

(2)さらにbodyタグの下に以下を追加
<div id="fb-root"></div>
<script>
FB.Canvas.setSize({ width: 520, height: 1200 });
</script>


「height:1200」の値を、スクロールがでないような高さに変更。
ページを開いたとき、一瞬スクロールバーが表示されますがすぐに消えてくれます。

同じように横スクロールを消したい場合はスタイルで
body {
 overflow-x: hidden;
}
と記述することで横スクロールは消えます。
(基本的に520pxのサイズで作ると思うので普段はあんまり気にはしないでいいと思いますが)

2011年8月22日月曜日

javascriptで0埋め

PHPで言うところのsprintf、VBで言うところのFormatやToStringみたいなことをjavascriptで。

いい記事がありましたのでそこを参考にしました。

PCソフト備忘録 JavaScriptで数値をゼロパディングする方法

slice関数を使って簡単に0埋めができます。
slice関数は先頭の引数に負の数字を指定すると後ろから数えてくれるのでそれを利用しています。
また、似たようなsubstring関数がありますがsubstringでは負の数字を指定しても0番目として認識してしまいます。

2011年8月9日火曜日

ページをカスタマイズする際に親ページに属する子ページの一覧やリスト形式で表示する方法です。
やり方はいろいろですが自分のやり方を。。。

<?php
$c_pages = get_pages( 'child_of=' . $post -> ID );
if ( $c_pages ) {
    foreach ($c_pages as $c_page) {
        $c_title = apply_filters( 'the_title', $c_page -> post_title );
        $c_content = get_extended( $c_page -> post_title );
        $c_content = apply_filtes( 'the_content', $c_content['main'] );
?>
    <h3><?php echo $c_title; ?></h3>
    <?php echo $c_content; ?>
<?php
    }
}
?>

apply_filtesで the_title や the_content をフックすることでコンテンツを成形してくれます。
get_extendedは <!-- more --> で区切った内容を取得してくれます。

使用している関数

2011年8月2日火曜日

CSS3のWeb Font

従来からフォントの指定はできましたがローカルにインストールされていることが必須となっていました。
CSS3からサーバ上にあるフォントを使用することができます。

@font-face {
    font-family: 'フォント名';
    src: url(フォントのURL) format('truetype');
}
p {
    font-family: 'フォント名', serif;
}

フォント名の指定は何でもいいようですが識別しやすい名前がいいと思います。
フォントのURLはhttp://~もしくは相対で記述できます。
formatの定義には、拡張子がttfの場合は'truetype'、otfの場合は'opentype'を指定します。

フォントを使用するにあたりライセンス等は十分に注意する必要がありますが、おすすめはGoogle Web Font
無料でフォントを使用できコード(link要素とCSSコード)も載ってます。
さらにIE6とかにも対応しています。

調べてみたらIE6でもWeb Fontは使えるそうです。(恥ずかしながら知りませんでした)
ただし、フォントの形式がeot(Embedded Open Type)のみとなっています。
ttf2eotサイトでttfファイルをeotファイルに変換して使うといいと思います。

IEの場合
@font-face {
    font-family: 'フォント名';
    src: url(フォントのURL:拡張子がeot);
}
p {
    font-family: 'フォント名', serif;
}

Adobe Edge Previewを試してみた

Adobeからプレビュー版(無料)のHTML5のアニメーション生成ツールがでました。
ちょっとだけ時間があったので試してみました。

ここからダウンロード
HTML5 tools, Animation tools - Adobe Edge Preview | Adobe Labs

Windows版とMac版がリリースされています。
Windows版はVista以上で動作します。(HTML5なのでIE9とかじゃないと見れない)

生成した結果をExportすることでhtml・js・cssのファイルが出力されます。
見たかんじCSS3とjqueryのアニメーションとかを駆使してアニメーションを生成しているみたいです。


わたしはFlashすらまともに使ったことがないのでちょっと苦戦しましたがCS5とかを使ってる方にとってはすんなり受け入れられるのかな??

2011年8月1日月曜日

ASPで正規表現

ASPで正規表現を使用する場合は、RegExp(Regular Expression)オブジェクトを使用します。

【RegExpプロパティ】
Global
検索する文字列全体に適用するかどうか。
True(全体) / False(先頭一致)
IgnoreCare
検索する文字列の大文字・小文字の判別。
True(区別する) / False(区別しない)
Pattern
検索する文字列

【RegExpメソッド】
Execute(string)
検索対象となる文字列を引数(string)に指定します。
検索結果はMatchオブジェクトを含む、Matchesコレクションを返します。
Replace(string1, string2)
検索対象となる文字列を引数(string1)に指定し、置換する文字列を引数(string2)に指定します。
置換結果を文字列で返します。
Test(string)
検索対象となる文字列を引数(string)に指定します。
パターンに一致する文字列が検索された場合にTrueを返します。

【Matchオブジェクト】
FirstIndex
検索対象の文字列内で一致した場所を返します。
Length
検索対象の文字列内で一致した文字列の長さを返します。
Value
検索対象の文字列内で一致した文字列を返します。

使用例はこんなかんじ
Set obj_reg = New RegExp

obj_reg.Global = True
obj_reg.IgnoreCare = True
obj_reg.Pattern = "[\w\.\-]+\@[\w\.\-]+"

Set matches = obj_reg.Execute(str)

For Each match In matches
    Response.Write "一致した場所:" & match.FirstIndex & "<br />" & _
                            "一致した長さ:" & match.Length & "<br />" & _
                            "一致した文字:" & match.Value & "<br />"
Next

Set matches = Nothing
Set obj_reg = Nothing