CakePHPでページの違う画面の内部リンクを有効にしたい場合

  • このエントリーをはてなブックマークに追加

二通りやり方があって、一つは.htaccessでURLの#以降もCakePHPに制御させない方法と、javascriptで対応する方法。

今回はjavascript(jQuery)で対応してみました。

javascriptで実現する方法

遷移先のVIEWに下記を記述するだけです。

<script type="text/javascript">
$(document).ready(function () {
    if (location.hash) {
        y = $("*[name="+location.hash.slice(1)+"]").offset().top;
        scrollTo(0,y);
    }
})
</script>

location.hashで#xxパラメーターを取得して、それを使ってname属性でフィルターしたオブジェクトのoffsetを取得します。
あとは、そこまでスクロースする処理を行えば疑似的に内部リンクが有効になります。

.htaccessで実現する方法

.htaccessに下記を記述すると実現できるようです。(未検証)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)(#*.*)$ index.php?url=$1$2 [QSA,L]
</IfModule>
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

ads

コメントを残す

*