自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 2:08

はじめて質問させていただきます。

現在、サイト制作のため、以下環境でconcreat5を使用しています。
* MAMP 3.4
* concreat5 5.7.5.2

チュートリアルを見ながらテンプレートの作成をおこなっているのですが、件名にも書いたように
$view->inc('elements/header.php');
がdefault.phpでうまく動作せず、単なる文字列として表示されてしまいます。

を付けると明確にエラーが出るので、書き方としては間違えていないとおもうのですが…

ディレクトリ名(elements/)やファイル名 (header.php)は何度も確認しましたが、間違えていませんでした。
MAMPでの作業というところに問題があるのかな?とも思いましたが、正直お手上げ状態です。

お助けいただければ助かります。

よろしくお願いいたします。

追記: $の最後尾の`;`が抜けていたので付け足しました。それでも動かない状況です

タグ:

Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 3:21
どのチュートリアルか確認していないのですが、自分のテーマのコードと比べてみて

$this->inc('elements/header.php');

だったので、viewじゃなくてthisではできませんか?
 

Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 20:29
ご回答ありがとうございます。

チュートリアルというか、公式のページですね。
http://concrete5-japan.org/help/5-7/developer/designing-for-concrete5/building-a-concrete5-theme/reusing-common-elements-in-theme-template-files/

ここで書いてあるままやっているので、
$viewが正しいと思っているのですが…うまくできない状況です。
 

Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 8:02
文字列として表示されるのであればphpタグの中に書かれているか確認してください。
<?php $view->inc('elements/header.php'); ?>の <?php ?>の部分

エラーがでるという件は
エラーメッセージを教えてもらえると対象方法がわかるかもしれません。
 

Re: Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 20:31
ご回答ありがとうございます。

phpタグで囲むと以下のエラーが出力されます。


予期せぬエラーが発生しました。
include(/Applications/MAMP/htdocs/concreat5_7/concrete/themes/mytheme/elements/header.php): failed to open stream: No such file or directory


該当ファイルが存在しない…ということなのですが、ファイルは存在しているのです。
謎は深まるばかりで…
 

Re: Re: Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 21:49
すみません。解決したかもしれません。
$viewは、`/concrete/themes/mytheme/elements/`を見に行くのですね…
/application/mytheme/elements を見に行っているのだと思っていました。

ただ、今度は管理用のヘッダーが消えてしまいました。何かと競合しているのでしょうか。
スティッキーヘッダーを実装しているので、それが怪しい感じもします。
 

Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 22:32
$viewは、`/concrete/themes/mytheme/elements/`を見に行くのですね…
/application/mytheme/elements を見に行っているのだと思っていました。


$viewクラスのinc()メソッドは、オリジナルのテーマを設置しているディレクトリが
正しい(正しく読みに行ける)場合は、設置ディレクトリのパスを参照し、そのパスにアクセス出来ない場合は、
'/concrete/themes・・・'(core)配下のディレクトリを参照する実装に成っているようです。

`/concrete/themes/mytheme/elements/`を見に行っていると言うことは、
オリジナルのテーマを配置しているディレクトリパスが間違えておりませんでしょうか?

ちなみに、オリジナルのテーマを配置するディレクトリは
'/application/themes/{テーマ名}'ですので、記載されている通りだとすると、'themes'ディレクトリと同位置に置かれておかれておりませんでしょうか?

今一度、配置されているパスをご確認いただけないでしょうか?
 

Re: Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 22:41
ご回答ありがとうございます。


ちなみに、オリジナルのテーマを配置するディレクトリは
'/application/themes/{テーマ名}'ですので、記載されている通りだとすると、'themes'ディレクトリと同位置に置かれておかれておりませんでしょうか?


オリジナルのテーマを配置しているのは、
`application/themes/mytheme`になっています。その下にelementsを配置している状態です。
なので、elementsのパスは
`application/themes/mytheme/elements`
になっています。
 

Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 22:54
オリジナルのテーマを配置しているのは、
`application/themes/mytheme`になっています。その下にelementsを配置している状態です。
なので、elementsのパスは
`application/themes/mytheme/elements`
になっています。


失礼しました。
パスは正しいですね。

[システムと設定]-[最適化]-[キャッシュとスピード設定]などで、
キャッシュが有効に成っていたりしませんでしょうか?
もしくは、OSレベルのアクセス権など、ご確認頂けるといいかと思います。
 

Re: 自作テーマで $view->inc('elements/header.php'); が効かない

2015年11月1日 at 22:56
管理画面の[サーバー設定一覧]-[環境情報]で表示される内容を、掲示頂けるとより良いかと思います。