質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

1987閲覧

phpで変数が入っているページ以外はdescriptionを空欄にしたい

kapimako

総合スコア39

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/09/14 02:43

編集2016/09/14 05:21

現在、以下phpが入っていてますが、※の部分を空欄にすると全ページが空欄になってしまい、変数が入っているページのdescriptionも空欄になってしまいます。
どなたかご教示のほどよろしくお願いいたします。

//meta Description if(isset($headData['abc']) && $headData['abc'] != ''){ echo('<meta name="description" content="' . $headData['abc'] . '" />' . "\n"); } else{ echo('<meta name="description" content="※全ページ共通の紹介文が入っています" />' . "\n"); } //例:トップページ.php <?php $headData['abc'] = 'トップページや変数abcが入っているページはそれぞれ紹介文を入れたい、ただ殆どのページは空欄でよい'; ?>

(追記:空欄にしたコード)
//meta Description
if(isset($headData['abc']) && $headData['abc'] != ''){
echo('<meta name="description" content="' . $headData['abc'] . '" />' . "\n");
}
else{
echo('<meta name="description" content="" />' . "\n");
}

(追記:トップページだけ作りが違うようです)
トップページだと思われる.phpに<meta>タグを直接追加したり<title>の中身を変えても変わりませんでした。ただ、参照しているhead.phpにvar_dump($headData['abc']);を入れるとNULと表示されます。この場合、head.phpは読み込んでると思うので、トップページだけ指定のdescriptionを入れる。という書き方を教えていただけますでしょうか。ドメインのルートでindex.htmlやindex.phpの場合、という書き方になりますでしょうか。

(追記:トップページはwordpressのindex.phpになっていました)
すみません、トップページだけ作りが違うのが判明しました。
ワードプレスのindex.phpを参照していましたので、そこに直接書き込みたいと思います。

お手数おかけして申し訳ありませんでした。他のページは問題なく、ご教示くださった方ありがとうございました。m(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/09/14 02:51

空欄にしたコードも追記ください。
guest

回答4

0

書かれているコードを手元で実行しましたが、特におかしい点はないと思います...

php

1<?php 2$headData['abc'] = 'トップページや変数abcが入っているページはそれぞれ紹介文を入れたい、ただ殆どのページは空欄でよい'; 3if(isset($headData['abc']) && $headData['abc'] != ''){ 4 echo('<meta name="description" content="' . $headData['abc'] . '" />' . "\n"); 5} 6else{ 7 echo('<meta name="description" content="aaa" />' . "\n"); 8}

実行すると

html

1<meta name="description" content="トップページや変数abcが入っているページはそれぞれ紹介文を入れ 2たい、ただ殆どのページは空欄でよい" />

条件式も、値がセットされている かつ 空文字ではない で別に問題ないと思います。
※emptyとかで代用できるかもしれませんが

なので、最初から$headData['abc']がうまく渡っていなかったとかないか確認してください

var_dump($headData['abc'])とかを//meta Description直後に書いて調査するとか

投稿2016/09/14 03:20

popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kapimako

2016/09/14 03:32

//meta Description if(isset($headData['abc']) && $headData['abc'] != ''){ echo('<meta name="description" content="' . $headData['abc'] . '" />' . "\n"); } else{ echo('<meta name="description" content="空欄 " />' . "\n"); } var_dump($headData['abc']); と書くのでしょうか?
popobot

2016/09/14 03:42 編集

はい、それで個別にdescriptionが設定されているページを見てみてください。 var_dumpは変数を出力する関数です。もし設定されていれば、設定されている値が表示されます。何も表示されなかったら、変数の設定がうまく行っていないということになります。
kapimako

2016/09/14 03:40

トップページはNULLと表示され、他の変数が入っているページは、string(171) "テキストテキスト…紹介文が入っています。 "のように表示されました。
popobot

2016/09/14 03:44 編集

トップページだけうまく行っていないみたいですね。他のページはうまく行っているのであれば、descriptionのコード自体は正しいと思います。 なぜ、トップページだけうまくいかないのかは、現状の情報だけだとわかりませんね... 他のページと作りが違うのでしょうか?
kapimako

2016/09/14 03:56

他のページと同じソースを入れても、トップページだけNULになりますね。。 因みに、他のページは変数が入っていても以下があると全部のページが空欄になるので何かが違う??と思っています。。。 else{ echo('<meta name="description" content="空欄" />' . "\n"); }
kapimako

2016/09/14 04:00

何かが違う・・・というのは、一番最初の質問に戻るのですが、条件分岐で変数が入っていない場合は空欄にする。という部分で、変数が入っていても全てのページが空欄になってしまう。という点です。
kapimako

2016/09/14 04:03

phpの参照の順番・・・かもしれません。。。色々組み合わさって参照しているので。 最初に、descriptionは空欄とする。変数が入っていたら、変数のdescriptionにする。という書き方にした方がよいのでしょうか。その書き方がわからず・・・。
kei344

2016/09/14 04:05

To: kapimakoさん var_dump($headData['abc']); が NULLになったのであれば、「変数が入っていても全てのページが空欄になってしまう」は成り立ちません。$headData['abc']に値が入っていないということです。値を入れる部分を確認されてみてはいかがでしょうか。
popobot

2016/09/14 04:06

うーん、謎は深まりますね.... 試しに条件を!empty(空じゃなかったら)に変えてみますか? if(!empty($headData['abc'])){ あとは、各所にvar_dumpを入れて変数の値が途中で変わっていないかみてみるといいかもしれません
kapimako

2016/09/14 04:11

To:kei344さん そうですね! 今見ましたら、トップページだけ変数が効かないようです。
kapimako

2016/09/14 04:16

To:icchiiさん 謎ですね。。。因みに、トップページは違いますが、一部ワードプレスで作られていて、他に参照しているのがあるのか…見てみます。。。
guest

0

if文を通す前に単純に echo $headData['abc'] して出力されますか?

投稿2016/09/14 03:03

編集2016/09/14 03:03
bezeklik

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kapimako

2016/09/14 03:12

//meta Description より前の行のソースには特にecho $headData['abc']は書いてありませんが、レンダリングされたソース(右クリソースをみる)を見ると、descriptionはecho出力されています。すみません、回答になっていますでしょうか。
bezeklik

2016/09/14 03:19

そういうことではなくて、if文が影響しているかどうかの確認ですね。また値の代入のタイミングが誤っている可能性も考えられます。 まず、きちんと配列の値が出力されるかどうかだけを先に確認してみましょう。 <?php echo $headData['abc']; ?> だけで値が出力されないのであれば、その記載箇所時点で値が代入されておらず、変数の代入処理の流れが間違っていることになります。
guest

0

自己解決

(追記:トップページはwordpressのindex.phpになっていました)
すみません、トップページだけ作りが違うのが判明しました。
ワードプレスのindex.phpを参照していましたので、そこに直接書き込みたいと思います。

お手数おかけして申し訳ありませんでした。他のページは問題なく、ご教示くださった方ありがとうございました。m(_ _)m

投稿2016/09/14 05:22

kapimako

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

popobot

2016/09/14 05:29

なるほど、うまくいってよかったです!!
kapimako

2016/09/14 05:41

1個1個潰していったおかげで、このサイトの構造が少し分かりました。大変助かりました。ありがとうございました。m(_ _)mぺこり
guest

0

if文の条件が&&だからではないでしょうか。

投稿2016/09/14 02:58

s.t.

総合スコア2021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kapimako

2016/09/14 03:07 編集

例)1 && 2 != 空欄 を 1 !=空欄でよいということでしょうか?? &&で挟まれた左辺と右辺の違いが分からず…なぜ2つ書いてあるのか…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問