サポート » 使い方全般 » 「投稿」のpage.phpをカテゴリーごとに作りたい

  • 解決済 jiluro

    (@jiluro)


    「投稿」で使われるベースのテンプレートファイルはsingle.phpという唯一1種類ですよね。
    これが悩ましいところでして、どうにかして改造したい状況におります。

    やりたいことは、カテゴリーごとに違うテンプレートデザインを用意し、投稿する記事によってこのカテゴリーごとのテンプレートデザインを選択して投稿したい、ということです。

    投稿する記事が所属するカテゴリーのテンプレートデザインを選択し、「投稿」画面の「カテゴリー」欄に予め用意したカテゴリー名を選択した上で記事を投稿すれば、パン屑ナビにも

    サイト名 > カテゴリー名 > 記事タイトル

    という表示がされてバッチリです。

    カテゴリーごとにデザインを変えたいのは、画像でつくっているGlobal Navigationボタン群を、カテゴリー名と連動させていて、

    例えば、「製品案内」の記事のページならば、GlobalNavigationの中の「製品案内」画像ボタンだけがRollOver画像が表示されていて、その他のGlobalNavigationの画像ボタンは全てRollOut画像が表示されている、ということをおこないたいからです。

    「投稿」でなく「ページ」ですと複数のphpテンプレートファイルを作って使うことができますが、そもそも「ページ」の作成ではPINGが飛ばないし(プラグインもありますが動作がおかしいです)、パン屑ナビもうまくいきません。
    また、最新ニュース欄にも掲載されませんしキツいです。

    「投稿」用のsingle.phpをカテゴリーごとに複数つくる方法以外であっても同じようなことができる手法があればそれでも構いません。アドバイスいただけましたら幸いです。
    宜しくお願いいたします。

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • まったく違う内容なんですかね?
    single.php 内でカテゴリで条件分岐させて、おのおの記述してあげても良いと思いますし、条件分岐して該当する記述のファイルをincludeするのでも良いと思いますが

    sandBoxというテーマをご存知ですか?

    このテーマファイルは、htmlのクラス属性を動的に配置するクラスをfunctions.phpに持っています。
    ミニマリズムという、創作理論をブログに適用してみようかという発想の、めちゃくちゃシンプルなテーマファイルなのですが、カテゴリもクラスとして動的に配置されるようですから、このクラス名でスタイルを指定することで、動的な視覚表現ができるかもしれません。試してはいませんが、、、、

    以下のようなクラスを自動生成します

    <body class="wordpress y2009 m09 d25 h17 single postid-1529 s-y2009 s-m09 s-d25 s-h09 s-category-accident s-author-admin loggedin">

    plaintxt.org

    トピック投稿者 jiluro

    (@jiluro)

    どうもありがとうございます。

    まったく違う内容なんですかね?

    いえ、画像で制作しているGlobal Navigationの部分だけであとは共通です。
    「リンクをクリックして今開いたこのページがどのカテゴリーに所属しているのか?」
    ということをユーザに認知させるために、開いているページが所属しているカテゴリー画像ボタンだけ色違いの画像ボタンにしたいのです。

    single.php 内でカテゴリで条件分岐させて、おのおの記述してあげても良いと思いますし、

    せっかく教えていただいたのに申し訳ありません。プログラミング的なものはわからないので意味がわかりませんでした。条件分岐というのですからif文というヤツでしょうか。自分には敷居が高かったみたいです。意味がわからず申し訳ありません。

    条件分岐して該当する記述のファイルをincludeするのでも良いと思いますが

    これも条件分岐なのですね。
    「このカテゴリーを選んで『投稿』をしたら、gbnavi-product.phpをincludeさせよ」
    というようにされるのでしょうか。

    ありがとうございます。

    お使いのテーマがどんな作りなのかわからないので、具体的にあってるかどうかわからないのですが

    <div class="navigation">
    
    <?php if (in_category(1)) {?>
    ここにカテゴリID1のナビゲーション群
    <?php } elseif (in_category(2)) {?>
    ここにカテゴリID2のナビゲーション群
    <?php } elseif (in_category(5)) {?>
    ここにカテゴリID5のナビゲーション群
    <?php } else {?>
    ここに上記以外のカテゴリIDのナビゲーション群
    <?php } ?>
    
    </div>

    こんな感じなのかな?と思います。
    htmlを記述する感じでいいんですよね?
    各ナビゲーション群に、普通にhtmlを書いて下されば良いかと思います。
    前後の<div>タグは例ですのでお使いのテーマがどうなってるのか・・・

    トピック投稿者 jiluro

    (@jiluro)

    nobitaさま、ありがとうございます。

    sandboxはみかけたことはありましたがいまひとつ何が良いのかわかっておりませんでした。
    もう一度ググってみてみましたが何か便利そうですね。
    ちょっと今の自分の作業完遂には遠い気がしましたが今後また違うサイトを作る際には事前に取り組む価値がありそうだと感じました。

    情報ありがとうございました!

    トピック投稿者 jiluro

    (@jiluro)

    kvexさま、具体的な記述方法を書いていただいてとてもとても助かります。
    この程度でできてしまうのですか!ちょっと今から試してみます。
    管理者画面の「カテゴリー」画面で登録したカテゴリーが、「in_category(1)」などというところに該当するようですね!
    うん?ただ、トップページ、つまりホームの画像ボタンをこれに反映させるにはどうしたらいいのかな?
    トップページにもこのためだけにカテゴリーをつくればよいのかな??
    とにかくちょっと試してみますね!これでできれば素晴らしいです!

    「投稿」ではパーマリンク設定で.htmlにさせることができているのに「ページ」ではなぜか.htmlが反映されず、この点でも「ページ」でコンテンツをつくっていくのは止めたく思っていました。
    これでうまくいくと嬉しいなぁ。結果ご報告いたします。

    取り急ぎ

    トピック投稿者 jiluro

    (@jiluro)

    kvexさま、済みませんひとつお尋ねさせていただいてよろしいでしょうか。

    ご案内の記述では画像ボタンの切り替えができますでしょうか?
    ご案内の記述では画像を表示させるかさせないか、になっていないでしょうか。

    念のためやりたいことを書かせていただきます。
    例えば以下のカテゴリー群があったといたします。

    ●ホーム
    ●受注製品情報
    ●既製品情報
    ●お客様の声
    ●会社概要
    ●採用情報

    これらは画像で作成されており、ヘッダー横並びに配置されています。
    そして、マウスを各カテゴリーの上にもっていったらRollOver(マウスオン)画像に切り替わります。よくあるマウスオーバーです。

    RollOut(マウスOFF)画像:青基調色でデザイン
    RollOver(マウスON)画像:赤基調色でデザイン

    そして、例えば「既製品情報」というカテゴリーのページを開いたら、以下のようにさせたいのです。

    ●ホーム・・・・・・・・・・・・RollOut用画像ボタンを表示させる
    ●受注製品情報・・・・・・RollOut用画像ボタンを表示させる
    ●既製品情報・・・・・・・・RollOver用画像ボタンを表示させる
    ●お客様の声・・・・・・・・RollOut用画像ボタンを表示させる
    ●会社概要・・・・・・・・・・RollOut用画像ボタンを表示させる
    ●採用情報・・・・・・・・・・RollOut用画像ボタンを表示させる

    「既製品情報」の画像ボタンだけ、RollOver用画像を表示させたいという意味です。
    その他のカテゴリーページを開いたときもあとは同様で、「お客様の声」のページを開いたら、「お客様の声」の画像ボタンだけRollOver用画像をさせる、といったぐあいです。

    画像ボタンは

    ●RollOut画像:gbnavi_kisei_off.gif
    ●RollOver画像:gbnavi_kisei_on.gif

    というように二つの画像を用意しております。
    この画像の切り替えをおこないたい、という意味なのですが、ご案内の記述を拝見させていただきますと、

    <?php if (in_category(1)) {?>

    これは、「もしもカテゴリーIDが1ならば」以下を表示させよ」という意味ですよね?
    そして、

    <?php } elseif (in_category(2)) {?>

    これは、「もしもカテゴリーIDが1ではなくカテゴリーIDの2だったら、以下を表示させよ」
    という意味に思えました。

    もしこの想像があたっていましたら、これですと画像の表示・非表示の切り替え機能になってしまうのではないだろうか、と思いました。
    実際はどんなでしょうか?

    それから、このWordPressのPHPコードの記述方法ノウハウが載っている本があると思うのですが、良い本がありませんでしょうか。

    トピック投稿者 jiluro

    (@jiluro)

    済みません、本スレのタイトルが間違っていました。
    正しくは、

    「「投稿」のsingle.phpをカテゴリーごとに作りたい」

    でした。page.phpではありません。これは「ページ」作成のときのテンプレートでした・・・
    お詫びして訂正させていただきます

    え~っと・・・すみません、なにもソースを呈示されていないので、さっぱりどうなってるかわかりません。
    ロールオーバーなのはわかりましたが、やりかたが世の中に一つなわけではなく、Dreamweaverがはき出すロールオーバーもあれば、Ajaxで実現している場合、cssで実現している場合、などなどコーディングを行った人、千差万別でしょう。

    また、画像を表示するか非表示にするかの分岐なんてことありませんよ。
    ずばりソースを書いてしまえばいいと思います。

    Dreamweaverがはき出すJavascriptでちょっと例にしてみます。

    <?php if (in_category(1)) {?>
    <div id="header_navi">
    <a href="index.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image2','','images/menu_r1_c1_f2.png',1)"><img src="images/menu_r1_c1.png" alt="戻る" name="Image2" width="135" height="36" border="0" id="Image2" /></a>
    <a href="info.html" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image3','','images/menu_r1_c3_f2.png',1)"><img src="images/menu_r1_c3.png" alt="ご案内" name="Image3" width="132" height="36" border="0" id="Image3" /></a>
    </div>
    <?php } elseif (in_category(2)) {?>
    ここにカテゴリID2のナビゲーション群
    上記のように全部書いてしまう
    <?php } elseif (in_category(5)) {?>
    ここにカテゴリID5のナビゲーション群
    上記のように全部書いてしまう
    <?php } else {?>
    ここに上記以外のカテゴリIDのナビゲーション群
    上記のように全部書いてしまう
    <?php } ?>

    で、全部書くとごちゃごちゃしてイヤなら、ナビゲーション群だけを記述した外部ファイルを作って

    <?php
      if (in_category(1)) {
          include 'カテゴリID1のときのファイル';
      }
      elseif (in_category(2)) {
          include 'カテゴリID2のときのファイル';
      }
      elseif (in_category(3)) {
          include 'カテゴリID3のときのファイル';
      }
      else (in_category(3)) {
          include '上記カテゴリID以外のときのファイル';
      }
    ?>

    こんなんでもいいですかね。

    トピック投稿者 jiluro

    (@jiluro)

    ありがとうございます!
    成功しました!

    当方、プログラミングを全く知りませんでして、if文というものの使い方すらわかっておらず、
    そのため、本件におけるif文の書き方自体をお尋ねした次第です。
    ので、if文の使い方がわかってしまえばRollOverの記述方法はどんな記述方法でもできるだろうと思っていましたのでRollOverの仕方は別段書きませんでした。

    とにもかくにもお陰様でできました!
    画像ボタンひとつひとつごとにif文を終わらせるのですね。ようやく意味がわかりました。
    アドバイスとネットサーフと本屋を絡めて、結局以下でできました。

    • <?php if (in_category(‘お客様の声’)) : ?>
      <a href="/voice/"><img src="/wp-content/themes/mytheme/img/cmn/gbnv04on.gif" alt="お客様の声" name="gbnv04" width="140" height="48" border="0" id="gbnv04" onMouseOver="MM_swapImage('gbnv04','','/wp-content/themes/mytheme/img/cmn/gbnv04on.gif',1)" onMouseOut="MM_swapImgRestore()" /></a>
      <?php else : ?>
      <a href="/voice/"><img src="/wp-content/themes/mytheme/img/cmn/gbnv04.gif" alt="お客様の声" name="gbnv04" width="140" height="48" border="0" id="gbnv04" onMouseOver="MM_swapImage('gbnv04','','/wp-content/themes/mytheme/img/cmn/gbnv04on.gif',1)" onMouseOut="MM_swapImgRestore()" /></a>
      <?php endif; ?>

    カテゴリーIDでもよかったのですが、あとからわかりやすくするために管理画面の「カテゴリー」でつくったカテゴリー名をin_category欄に入れてみました。
    あとは画像ボタンの数だけ繰り返し。

    どうもありがとうございました!

    PS:外部ファイル版も便利そうですね。こちらも試そうとおもっております。

    あ、いちおう私が思っていたことで良かったんですね。
    よかったです!

    トピック投稿者 jiluro

    (@jiluro)

    kvexさま、アドバイスいただきまして本当にありがとうございました。
    今回採用したのは

    <?php if (in_category(‘お客様の声’)) : ?>

    という、HTMLファイル一枚で全部済ます方法にしましたが、kvexさまから教えていただいた「別のフファイルを呼び出す」方法も今後試してみたいと思っております。

    <?php
    if (in_category(‘お客様の声’)) {
    include ‘カテゴリID1のときのファイル’;
    }

    ご支援、ありがとうございました。

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • トピック「「投稿」のpage.phpをカテゴリーごとに作りたい」には新たに返信することはできません。