現在wordpressでサイト構築をしています。
トップページ(front-page.php)のみに読み込んで欲しいjsコードがあります。
そこで下記のように記述しているのですが、、Chromeの検証で確認するとエラーが出てしまいます。。
javascript
1$(window).on('load resize', function(){ 2 var mainheight = $(window).height(); 3 if(is_front_page()){ 4 $('#first-view').css('height', mainheight); 5 } 6});
検証を見る限りでは上から3行目の
if(is_front_page()){
この部分でエラーが出てしまっています。
jsファイル内で読み込まれるphpファイルによってtrueを返すというコードはどのように記述したらよろしいでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
PHP側で変数を定義して、jsファイルではその変数が「定義済み」であるか、かつ「true」であるかをチェックすることで判定してはどうでしょう。
PHP
1<script type="text/javascript"> 2isFrontPage = <?php echo is_front_page() ?>; 3</script>
JavaScript
1if(typeof isFrontPage !== 'undefined' && isFrontPage){ 2 $('#first-view').css('height', mainheight); 3}
投稿2017/02/14 06:41
総合スコア9206
0
もしかしてis_front_pageという関数はphp上の関数でしょうか?
でしたらこうだと思います。
php
1if(<?php echo is_front_page() ?>){ 2 $('#first-view').css('height', mainheight); 3}
もしくはこう
php
1<?php if(is_front_page()){ ?> 2$('#first-view').css('height', mainheight); 3<?php } ?>
前者はPHPが解決され、JavaScript的にはif(true)となります。
後者はそもそもPHP上でis_front_pageが正しくならなければcssの行自体が出力されません。
投稿2017/02/14 05:56
総合スコア9206
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
PHPとJavaScript間は相互に移動できるものではありません。
PHPで処理されたコードをブラウザで読み取りますから、PHPは下処理と思ってください。
フロントページか判断するのに関数を適用するのはそういう意味でよくありません。
front_pageで仮にJavaScript上のis_front_page()メソッドを実装したとしたら
他のPHPでも不の値を返すis_front_pageメソッドを実装しなければなりません。
一番いいのはfront_page.phpでのみ以下のコードを出力しておくことだと思います。
$(window).on('load resize', function(){ var mainheight = $(window).height(); $('#first-view').css('height', mainheight); });
投稿2017/02/14 06:57
総合スコア1591
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
JSに書いたので~ ということでPHPコードは書けないとおっしゃってますが、別にこの部分のコードを今からでもPHPに移動させることは可能ではないでしょうか。
まあ、一応JSだけでの判定となると、いっそのこと単純にlocation.hrefで判断するとか、タイトルで判断するとか(タイトルは動的でしょうから無理でしょうけど)、あとはfront_pageにしか絶対にないようなエレメントとかそんなので判定するとか、いろいろと探れば判断材料は見つかるのではないでしょうか。
js
1// URLで判定 2if(location.href.indexOf('front-page.php') !== -1) { 3//~ 4} 5 6// タイトルで判定 7if(document.title.indexOf('最初のページのタイトルに含まれるであろう単語など') !== -1) { 8//~ 9} 10 11// front_pageにしかなさそうなもので判定(onloadイベント後) 12if(document.getElementById('front_pageにしかないエレメントのID')) { 13//~ 14}
ただ、リサイズイベントにおいても判定しているようなので、これらの情報は変数に入れて変数で判定したほうが負荷は減ります。
js
1var isFront = location.href.indexOf('front-page.php') !== -1; 2$(window).on('load resize', function(){ 3 if(isFront) $('#first-view').css('height', mainheight); 4});
この処理自体そもそもfront_pageしか行わないのであれば、
js
1if(location.href.indexOf('front-page.php') !== -1) { 2 $(window).on('load resize', function(){ 3 $('#first-view').css('height', mainheight); 4 }); 5}
としたほうが他のページでの影響は少なくなるでしょう。
投稿2017/02/14 06:49
総合スコア4267
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
PHP
1$(window).on('load resize', function(){ 2 var mainheight = $(window).height(); 3 <?php if(is_front_page()){ ?> 4 $('#first-view').css('height', mainheight); 5 <?php } ?> 6});
投稿2017/02/14 05:49
総合スコア69364
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/14 06:19
2017/02/14 06:24
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/15 05:57