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

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

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

DrupalはPHPで書かれたオープンソースのCMSフレームワークです。

PHP

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

Q&A

2回答

786閲覧

Drupal のエラーについて

d3I22Zd3cPzvRbT

総合スコア11

Drupal

DrupalはPHPで書かれたオープンソースのCMSフレームワークです。

PHP

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

0グッド

1クリップ

投稿2018/10/05 01:00

編集2018/10/05 01:16

昨日迄問題のなかったDrupalが、今朝サイトを開いてみたところ、
以下のようなメッセージがアーカイブ上に表示されておりました。

Voiceとして、お問合せページを個別で作成しているのですが、
個別ページは表示されず、アーカイブはエラーが羅列されているものの個別の内容は読めます。
Drupalは何をどう直せばよいのかわからず困っております。どうぞよろしくお願いします。

エラーメッセージ↓
Strict warning: Only variables should be passed by reference include() (/home/sites/heteml/users/x/x/x/xxxx-admin/web/xxxx/voice/sites/all/themes/〷〷/node--back-number.tpl.php ファイル 69行).
Strict warning: Only variables should be passed by reference include() (/home/sites/heteml/users/x/x/x/xxxx-admin/web/xxxx/voice/sites/all/themes/〷〷/node--back-number.tpl.php ファイル 86行).

69行目が含まれる箇所

<?php if(isset($node->field_family["und"][0]["value"])): ?>
ご家族構成 = <?php print $node->field_family["und"][0]["value"]; ?> <br> <?php endif; ?>

86行目が含まれる箇所

<div class="arrow">------------------> <?php if(isset($node->field_answer["und"][0]["value"])): ?> <?php print $node->field_answer["und"][0]["value"]; ?>からの返事 <?php endif; ?> </div>

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

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

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

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

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

Orlofsky

2018/10/05 01:06

エラーを起したコードを提示できないと、エラーメッセージでググってください、程度のコメントしか付かないのでは?
退会済みユーザー

退会済みユーザー

2018/10/05 02:07

$node->field_familyおよび$node->field_answerの構造を示してください
guest

回答2

0

エラーメッセージで検索するなんて誰でもデキることですけども。
PHPで「Only variables should be passed by reference....」エラー - Qiita

$node->field_familyを受ける単純変数(例えば$field_family)として、
$field_family = $node->field_family;
if(isset($field_family["und"][0]["value"]))などとするのかなぁと、
データ構造もdrupalも知りませんが、そう察します。
isset()に与えるのが、単純変数であるべきものなので。
PHP: isset - Manual

投稿2018/10/05 01:27

編集2018/10/05 06:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

d3I22Zd3cPzvRbT

2018/10/05 01:39

ありがとうございます。こちら質問前に、確認しました。同じ書き方をしているものがいくつもあるのですが、なぜ69行目と86行目だけがエラーになるのかも不明だったため質問させていただきました。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/10/05 02:06

すでに確認している情報が寄せられるムダを防ぐために、質問文にすでにチェックした情報も掲載して「意味がわかりませんでした」くらい書くべきです。 質問者さんの理解レベルを第三者でもわかるように示すことで、よりフィットする情報が寄せられる可能性が高まるのですから。
d3I22Zd3cPzvRbT

2018/10/05 02:31

大変参考になります。PHP、本当に理解できずにいるため質問からして頓珍漢で申し訳ございません。
退会済みユーザー

退会済みユーザー

2018/10/05 08:08

謙ってお詫びしたところで問題解決にならないので、 何を試して期待した結果にならなかったのかを、どんどん質問文中に追記していってください。 isset()に与えるべき単純変数を定義して、どの段階で単純変数に代入してからisset()で判定するか、 また、var_dump($node->field_family); などとした場合の出力も知りたいので、そちらも忘れずに。
guest

0

現状の質問文からは
「node--back-number.tpl.php ファイルの69行目(及び86行目)」で
「Only variables should be passed by reference」エラーが発生している
ことまでしか読み取れません。

故に
・エラーメッセージでググって
・エラー発生個所付近を見直してください
ぐらいのアドバイスしかできないです…。

投稿2018/10/05 01:16

madoka9393

総合スコア992

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

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

d3I22Zd3cPzvRbT

2018/10/05 01:18

コードを記載するのを失念しておりました。
madoka9393

2018/10/05 01:31

まだ該当行がどこか(おそらくは「isset」の行なのでしょうが)わかりませんが、 m6u 様の回答のリンク先を読んで該当部分を修正すれば解消するはずです。
d3I22Zd3cPzvRbT

2018/10/05 01:58

ありがとうございます。 以下直してみたのですが解消されないため、わかりましたらご教授願います。 <?php if(isset($node->field_family["und"][0]["value"])): ?> ご家族構成 = <?php print $node->field_family["und"][0]["value"]; ?> <br> <?php endif; ?> ↑こちらでエラーの為、field_family["und"][0]["value"]の部分を $field_family = field_family["und"][0]["value"]; と定義し、 <?php if(isset($node->$field_family)): ?> ご家族構成 = <?php print $node->$field_family; ?> <br> <?php endif; ?> としました。
madoka9393

2018/10/05 02:04

m6u 様の回答についたコメントを拝見して、 ・他の箇所でも同様の記述をしているがここだけエラーが発生している という事実を新たに認識しました。(ここら辺も質問文に記載してあげるとよいかもです。) 本題ですが、該当箇所をアロー演算子を使用せずに記述することはできませんかでしょうか? また、直接本エラーと関係するかはわかりませんが、場合によっては「$field_family」に格納されている値を確認する必要もあるかもしれませんね。
d3I22Zd3cPzvRbT

2018/10/05 02:16

すみません。本当に初心者でPHPが全く分からないのですが、「$field_family」に格納されている値というのは、field_family["und"][0]["value"]ではないのでしょうか。アロー演算子を使わない記述。。調べてみます。
madoka9393

2018/10/05 02:23

失礼いたしました。 アロー演算子は「->」のことですね。 該当箇所で「$node->$field_family」としていますが、この部分を m6u 様も仰っているように単純な変数で記述することはできないか?という質問でした。 「$field_family」に格納されている値というのは「field_family["und"][0]["value"]」の実際の値のことです。 「field_family」の「und」要素の「0」番目の「value」要素に何が格納されているのか?(またはいないのか)を調べる必要が出てくるかもしれないですね~位のニュアンスでした。
d3I22Zd3cPzvRbT

2018/10/05 02:29

わかりやすく教えて頂きありがとうございます。field_familyとfield_answerだけでエラーなので、確かに中身なのかもしれません。「und」が何か、どこに書いてあるのか理解していないため、fileを探してみます。
madoka9393

2018/10/05 02:37 編集

問題の本質としては m6u 様も仰っている通り 「「isset」に単純な変数でないものを渡している」 ことが原因であるような気がします故、 解決するならその部分をどうにかする(=issetに渡す値を単純な変数にする) ことに注力するのがよいかと思われます。 (他の箇所では同様の記述でもエラーが発生していない、という部分は少々引っ掛かりますが…。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問