そう言えば、base タグってありましたね。

ポーランド人のプログラマの同僚にぼそってささやかれて、先日はっとしました。
と言うのは、物凄く基本的な話ですが、下記の様なタグの存在をこの世からすっかり忘れていました。

<head>
	<base href="http://www.convexstyle.com/" />
</head>

これがあることで、Zend Framework 内で
www.convexstyle.com/controller
www.convexstyle.com/controller/
www.convexstyle.com/controller/action
www.convexstyle.com/controller/action/
を同じ処理出来るんですよね。

2 番目と 4 番目がディレトトリと見なされて、アセット関連のパスがおかしくなるのが嫌だったのでこれまでは Zend Framework 内で Smarty をテンプレートとして使う際に base タグを使わずに、例えば、<img src="<% $homeUrl %>images/sample.jpg" /> とか物凄い効率悪いやり方をしてました。

なのでこれからは

<head>
	<base href="<% $homeUrl %>" />
</head>

にして <img src="images/sample.jpg" /> でいいじゃんと思いました。
基本を忘れちゃいけないなあ。

一点問題は、<a href="#top">top</a> の様な内部リンクに関しては $homeUrl が http://www.convexstyle.com/ の場合、絶えずリンク先が http://www.convexstyle.com/#top になってしまうんですよね。この場合現状のページトップに行きたいのに IndexController にアクセスしてしまうので、これを避ける際は、やはりこういう場合は controller 側で対応して、view 側に 現状の controller や action やスラッシュとかを <a href="<% $currentUrl %>#top">top</a> の様な形で渡さないといけないですね。 もともと自分は javascript でページ top への移動は内部リンクと JQuery の animate で対応してたんですが、知らない間に scrollTo という JQuery のプラグインが存在していたので、これもまた <a href="Javascript:void(0);" onClick="goTop();">top</a> 的にすれば全く Zend の URL 構造は依存せず対応出来ますね。知らないで効率悪かったという話です。

・・・・・

参考サイト
base タグ
scrollTo (JQuery Plugin)

ページの一番上へ移動

トラックバック

この記事へのトラックバック URL は下記の通りです。
http://www.convexstyle.net/mt/mt-tb.cgi/117

コメントの投稿

初めて投稿される方のコメントは管理者の承認が必要となります。ご了承ください。