いろんなやりかたがあるとは思いますが、サイドバーの可否とコンテンツブロックの幅だけの問題なら
■ページの場合
page.php 内で、条件判定するだけで良いのでは?
<?php if (is_page(array(1,’test’,3,’sample’))) : ?>
幅広ペ-ジの場合
<?php else : ?>
幅狭ページの場合
<?php end if ?>
■カテゴリの場合
category.php 内で、なんか同じような処理
など。
kvex様いつも回答ありがとうございます。
すみません。PHP自体よく分かってなくて、いまいち理解できてないんですが
<?php if (is_page(array(1,’test’,3,’sample’))) : ?>
この上のタグの(1,’test’,3,’sample’)のところにページIDを
入れて、page.phpに追加すればいんですよね?
幅広ペ-ジの場合と幅狭ページの場合の指定は
どうすればいんでしょうか?
固定ページで話を進めますね。
WSCにはpage-sitemap.php とか、専用のページファイルがありますが、ちょっとそれはおいておきます。
それ以外の、page.php で表示されるページを前提にします。
<?php get_sidebar(); ?>
を、ページスラッグ staff、profile、members、の3つのページでは読ませないようにするには
<?php if (!is_page(array('staff','profile','members'))) : ?>
<?php get_sidebar(); ?>
<?php enfif; ?>
などとします。上記は’以外のページ’という指定ですので、その辺は臨機応変にどうぞ。
同じく、divのidを
alpha(幅が狭い)、alpha-wide(幅が広い)などと仮定すると
<?php if (!is_page(array('staff','profile','members'))) : ?>
<div id="alpha-wide" class="alpha_bg">
<?php else: ?>
<div id="alpha" class="alpha_bg">
<?php enfif; ?>
ということになると思います。
‘staff’,’profile’,’members’
のときは、サイドバーが無しに、id=”alpha-wide”
それ以外の時は サイドバーが有りで、id=”alpha”
style.cssにalpha-wideを作って
<?php get_sidebar(); ?>を消して
<?php if (!is_page(array(‘web’))) : ?>
<div id=”alpha-wide” class=”alpha_bg”>
<?php else: ?>
<div id=”alpha” class=”alpha_bg”>
<?php enfif; ?>
上のタグをpage.phpに追加してみたのですが、
なぜか、webというページのみが真っ白になってしまいました。。。
いちおう、alpha-wideは
もともとあるalphaの設定の
#alpha{float: left;text-align:left;width: 630px;overflow: hidden;padding: 17px 17px 20px 18px;}
をコピーしてwidthのみを変えたんですが。。。
ちょ(苦笑
ミスタイプしてました;;
<?php enfif; ?>
じゃなくて
<?php endif; ?>
d と f が隣だった;;
<?php endif; ?>に修正したら、webというページの
サイドバーはなくなってたんですが、widthが変わってませんでした。。
style.cssのalpha-wideがおかしんでしょうか?
う~んと、どんな状況なのかよく見えませんが、ソースを表示すると思ったとおりになってるか見ればわかりませんか?
一番いいのは、firefoxのFirebugとか、Safariの開発者モードで見るとかなんですけどねぇ。
確かに開発者モードで見れたら便利なんですが。。。
もう一度自分で確認してみたんですが、
結局原因がみつかりませんでした。
<?php if (!is_page(array('web'))) : ?>
<div id="alpha-wide" class="alpha_bg">
<?php else: ?>
<div id="alpha" class="alpha_bg">
<?php enfif; ?>
を書いたと言うことはページ「web」のときは
<div id="alpha" class="alpha_bg">
となるのですが、ソースを見てそれはOKですか?
すみません。
よく見たら「web」ページのサイドバーがなくなっじゃなくて、
全部のページサイドバーがなくなっていて、
表示されているのあ、各カテゴリーのページのサイドバーでした。
てことは
<?php if (!is_page(array('web'))) : ?>
<div id="alpha-wide" class="alpha_bg">
<?php else: ?>
<div id="alpha" class="alpha_bg">
<?php enfif; ?>
↑自体設定がうまくいってないみたいです。。
その部分はサイドバーには関係ないですよぉぉ。
そこは、コンテンツ部分で、幅が広いのか狭いのかを表示させてる部分ですから。
<?php if (!is_page(array('web'))) get_sidebar(); ?>
サイドバー部分に関しては、上記にて web 以外 でサイドバーが読み込まれます。
web だけでしたらarrayなんてする必要は無いですけどね。
<?php if (!is_page('web')) get_sidebar(); ?>
とりあえず、「web」ページを入れてやってみただけなので、
最終的には、複数入れる予定です。
<?php if (!is_page(array('web'))) get_sidebar(); ?>
上のget_sidebar(); ?というのは、いるんでしょうか?
初めの説明ではなかったと思うのですが。。。
<?php if (!is_page(array(‘web’))) get_sidebar(); ?>をコピーして試してみましたが画面が真っ白になってしました。
サイドバー部分は、それはそれで書かないといけませんよ。
get_sidebarが不要なんて書いた覚えは無いですけど、逐一書かないで「たとえば」という前提で書いてます。
<?php if (!is_page(array('web'))) get_sidebar(); ?>
たった今私の環境で上記を書いてみたら、ページ「web」のときはサイドバーが読み込まれずに、その他のページでは読み込まれましたよ。
全部書かないとわかりづらいですかね?
とりあえず、単純な page.php を想定して書いてみますね。
<?php get_header(); ?>
<?php if (!is_page(array('web'))) : ?>
<div id="alpha" class="alpha_bg">
<?php else: ?>
<div id="alpha-wide" class="alpha_bg">
<?php endif; ?>
<!-- メインエリア -->
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div id="page-<?php the_ID(); ?>" class="page-asset asset">
<div class="asset-header">
<h1 id="page-title" class="asset-name"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
</div>
<div class="asset-content">
<div class="asset-body">
<?php the_content('Read the rest of this entry »'); ?>
</div>
</div>
<div class="asset-footer">
</div>
<?php endwhile; ?>
</div>
<?php else : ?>
<h2 class="center"><?php _e('Sorry, no posts matched your criteria.'); ?></h2>
<?php endif; ?>
<?php comments_template(); ?>
</div>
<?php if (!is_page(array('web'))) get_sidebar(); ?>
<?php get_footer(); ?>
webじゃないとき : id=alpha で サイドバーを読まない
webのとき : id=alpha-wide で サイドバーを読む
これでいいかな?
今現在、うちの環境ではちゃんと動いています。
いろいろと勘違いをしていて
`<?php if (!is_page(array(‘web’))) : ?>
<div id=”alpha” class=”alpha_bg”>
<?php else: ?>
<div id=”alpha-wide” class=”alpha_bg”>
<?php endif; ?>`
しか入れてませんでした。。。
<?php if (!is_page(array(‘web’))) get_sidebar(); ?>
を追加したらできました。
kvex様、本当にありがとうございました。