サポート » 使い方全般 » URLを判別して違う画像を表示させたい

  • 解決済 qpgawgaw

    (@qpgawgaw)


    PHPの記述でURLを判別しようとしていますが、上手くいきません。

    TOPページには新着情報とページナビが設置してあります。

    TOPページを表示したときは画像①と画像②を表示させ、ページナビで次のページに移動したときは、画像②だけを表示したいと思っています。

    TOPページのURLは「…/sample/」で
    ページナビで表示されるURLは「…/sample/page/2#label」なので、後ろに付けた#labelで判別しようと思いましたが、記述自体で止まってしまいました。

    トップページだけでも判別させたいと思いコードを書きましたが、下記のコードでは「syntax error, unexpected T_ENDIF」が表示されてしまいます。

    TOPページとページナビで移動したときに違う画像を表示したいので、
    PHPが全くの素人で恐縮ですが、ご享受お願いします。

    <?php if($_SERVER['REQUEST_URI']=="/sample/") ?> //TOPページ
    <div id="javascript"> //javascript用画像
    <img src="<?php bloginfo('template_url'); ?>/images/0001.png" >
    <img src="<?php bloginfo('template_url'); ?>/images/0002.png" >
    </div>
    <?php endif; ?>
    
    //ページナビで判断用PHP
    
    //ページナビで表示されるURL「/sample/page/2#label」←2ページ目のlabel
    <div class="tablenav"><?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    	$paginate_format = '';
    	$paginate_base = add_query_arg('paged', '%#%');
    } else {
    	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    	user_trailingslashit('page/%#%/', 'paged');;
    	$paginate_base .= '%_%#label';
    }
    echo paginate_links( array(
    	'base' => $paginate_base,
    	'format' => $paginate_format,
    	$pt = $wp_query->max_num_pages,
    	'total' => $pt,
    	'mid_size' => 5,
    	'current' => ($paged ? $paged : 1),
    )); ?></div>
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター gatespace

    (@gatespace)

    <?php if($_SERVER[‘REQUEST_URI’]==”/sample/”) ?> //TOPページ

    エラー自体はここの行でコロンが抜けているためです。
    if($_SERVER['REQUEST_URI']=="/sample/") :

    なお、WordPressの条件分岐タグ使った方が、簡単にできると思います。
    Codex:条件分岐タグ

    ざっくりとですが

    <?php
    if ( is_front_page() ) { // フロントページ(WordPressのサイトトップ)なら
    	if ( !is_paged()) { // 2ページ目以降でなければ(=1ページ目なら)
    		echo "画像1";
    	}
    	echo "画像2";
    }
    ?>

    もう一つ、’$pt = $wp_query->max_num_pages,’の箇所でエラーになると思います。
    この位置で変数に代入する必要性はありませんので、そっくり削除してください。
     
    フォーラム » 使い方全般 » 新着情報でページナビゲーションの使い方。のコードから変更があったのでしょうか?
    変数への代入については、そちらの質問に返信しました。

    トピック投稿者 qpgawgaw

    (@qpgawgaw)

    gatespaceさん

    返信遅くなり申し訳ございません。
    それと、ご回答ありがとうございます。

    エラーは教えていただいた通り、コロンが原因でした。
    とても助かりました。

    WordPressのCodexについても情報ありがとうございます。

    教えていただいたコードで、TOPページとフロントページ(2ページ目以降)で画像の振り分けが出来るようになりました。
    このWordPressの条件分岐タグは大変便利ですね、ご享受ありがとうございます。

    申し訳ございません、最初の質問が少し的を外していました。

    TOPページでは画像①と画像②を表示させて、ページナビで2ページ目に移動したときは画像②のみ表示させるところまでは同じなのですが、
    ページナビで1ページ目に戻った時も画像②のみ表示させたいと思っております。
    このような動作は可能なのでしょうか?

    現在のURLの表示ですが
    TOPページを表示した時(TOPへ移動するリンクボタン等から移動した場合)
    http://***/sample/

    ページナビで2ページ目(ラベルを付けています)
    http://***/sample/page/2#label

    ページナビで1ページ目(ラベルを付けています)
    http://***/sample/#label

    となっています。
    URLの後ろの「#label」があるかどうかで振り分けられればと思っていますが、上手くいきませんでした。

    もし、このような動作が出来るのであれば参考サイトでも結構ですので
    教えていただけませんでしょうか。
    よろしくお願いします。

    下記にTOPページ振り分けと、1ページ目の振り分け、フロントページの振り分けを記述しましたが、1ページ目はTOPページとして振り分けられてしまいました。

    <?php if($_SERVER['REQUEST_URI']=="/sample/"): ?> //TOPページ振り分け
    <div id="javascript"> //javascript用画像
    <img src="<?php bloginfo('template_url'); ?>/images/0001.png" >
    <img src="<?php bloginfo('template_url'); ?>/images/0002.png" >
    </div>
    <?php endif; ?>
    
    <?php if($_SERVER['REQUEST_URI']=="/sample/#label") ?> //ページナビ1ページ目振り分け
    <img src="<?php bloginfo('template_url'); ?>/images/0002.png" >
    <?php endif; ?>
    
    <?php if ( is_paged()) { ?> //フロントページ振り分け
    <img src="<?php bloginfo('template_url'); ?>/images/0002.png">
    <?php } ?>
    
    ...........
    新着情報コード
    ...........
    
    //ページナビで表示されるURL「/sample/page/2#label」←2ページ目のlabel
    <div class="tablenav"><?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    	$paginate_format = '';
    	$paginate_base = add_query_arg('paged', '%#%');
    } else {
    	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    	user_trailingslashit('page/%#%/', 'paged');;
    	$paginate_base .= '%_%#label';
    }
    echo paginate_links( array(
    	'base' => $paginate_base,
    	'format' => $paginate_format,
    	'total' => $pt,
    	'mid_size' => 5,
    	'current' => ($paged ? $paged : 1),
    )); ?></div>
    トピック投稿者 qpgawgaw

    (@qpgawgaw)

    popupさん

    お気遣いありがとうございます。
    本当に感謝します。

    仰る通り’$pt = $wp_query->max_num_pages,’でエラーになっており、
    その状態で質問してしまい大変申し訳なく思っております。

    ご回答いただいたgatespaceさん、popupさんご迷惑をおかけしました。

    フォーラム » 使い方全般 » 新着情報でページナビゲーションの使い方。からは「#label」をつける変更をしました。

    上記の質問では大変お世話になりました、ありがとうございます。

    モデレーター gatespace

    (@gatespace)

    $_SERVER['REQUEST_URI'] はリクエストURI を取得するので#以降までは取得できなかったと思います。

    考え方を変えて、ページナビで2ページ目以降に行きリンクをクリックすることでトップページ(1ページ目)に戻っているのであれば、$_SERVER["HTTP_REFERER"]で比較するのが簡単かと思います。

    if ( is_front_page() ) { // フロントページ(WordPressのサイトトップ)なら
    	$ref = preg_match( '/page/', $_SERVER["HTTP_REFERER"] );
    	if ( !is_paged() and !$ref ) { //1ページ目かつリファラーに page が入っていない
    		echo "画像1";
    	}
    	echo "画像2";
    }
    トピック投稿者 qpgawgaw

    (@qpgawgaw)

    gatespaceさん

    ご回答、ありがとうございます。
    思い通りの動作が出来ました。

    「$_SERVER[“HTTP_REFERER”]」戻るボタン設置時も使えるみたいで
    大変勉強になりました。

    ご教授いただきありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「URLを判別して違う画像を表示させたい」には新たに返信することはできません。