チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月10日 at 22:05

はじめまして、お世話になります。
concrete5を触りだして間もない者です。
今日、concrete5のテーマ作成チュートリアルサイトを見ながらテーマ作成の基本を学び始めました。

参考にしたのは次の2つのページです。
http://concrete5-japan.org/help/design/step_by_step/
http://concrete5-japan.org/help/design/theme-design-basic-seminar/

まず、
http://concrete5-japan.org/help/design/step_by_step/
を見ながら、チュートリアル通りにテーマ作成を進めて行きました。
完成し、XAMPPやレンタルサーバ(Firebird)で作ったテスト環境に入れてみたのですが、次のような状態が起こっています。

・オートナビを使用したグローバルナビ(Header Nav)が、ブログの個別記事で消える

ほかのページでは、


$a = new GlobalArea('Header Nav');
$a->display($c);

とすることで、全ページでナビゲーションが表示されますが、ブログの個別記事を読み込んだ時だけ、どういうわけかナビゲーションが消えてしまいます。

自分の作り方がいけなかったのかと思い、チュートリアルサイトにある
「変換作業を終えたテンプレートファイル」もダウンロードして有効化してみましたが、結果は同じでした。
ちなみに、header.phpにナビゲーションを置いた場合は、個別記事のページでもheader.php内のナビゲーションは残っています。
default.phpに置いたナビゲーションが、個別記事で表示が消えてしまうののはどうしてでしょうか?

また、header.phpとdefault.phpの両方に同じナビゲーションを置いた場合、default.phpのナビゲーションの各項目が2つずつ表示されているのですが、この理由についても教えていただけると嬉しいです。
編集モードにした時にdefault.php側の編集ができない(赤枠が出ているのみ)ので、競合しているのだろうなというのは予想がつくのですが…。
よろしくお願い申し上げます。

タグ:

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月10日 at 23:21
>ブログの個別記事で消える
もともと用意されているテーマでは消えることがないように思います。

>header.php と default.php の両方に同じナビゲーションを置いた場合.....
default.php の中に $this->inc('elements/header.php') というのがあると思います。
このphpコードはdefault.php の なかに header.php を 展開するといういみですので
同じものを書くと被ります。
ブラウザからページのソースを見てみてみるとheader.php と defaluit.php の
2つのファイルの内容が表示されているはずです。

もし、差支えなければ、作られたテーマを圧縮してフォーラムに添付してもらうと
見させてもらうことはできます。
 

Re: Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 1:50
レスありがとうございます。

> もともと用意されているテーマでは消えることがないように思います。
私の環境では、チュートリアルページからダウンロードした「変換後のファイル」、チュートリアルを元に自作したファイル共に同じことになっています。。。
自作したファイルを添付します。
自作したものは、default.php の new Area('Header Nav'); を new GlobalArea('Header Nav'); に変えた以外は、サンプルと同じだと思うのですが。。。

> default.php の中に $this->inc('elements/header.php') というのがあると思います。
> このphpコードはdefault.php の なかに header.php を 展開するといういみですので
> 同じものを書くと被ります。
これは理解できるのですが、例えばheader.phpでの出力が
・ホーム
・概要
・ブログ
・検索
なのに対し、

default.phpではnew GlobalArea('Header Nav');を指定した場所で
・ホーム
・ホーム
・概要
・ブログ
・検索
・概要
・ブログ
・検索

・・・という二重状態になっていたので、気になって質問させていただいたのです。
一応、その画面キャプチャも添付させていただきます
※添付ファイルはheader.phpのHeader Navの指定は削除してあります。

以上、お手数をおかけいたしますが、よろしくお願い申し上げます。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 2:05
添付のテーマをインストールしてみましたが

> default.phpではnew GlobalArea('Header Nav');を指定した場所で
> ・・・という二重状態になっていた

ならないんですよねぇ…。concrete5のバージョンはなんぼでしょうか?
管理画面から環境情報 /dashboard/system/environment/info/ にアクセスし、中身を教えていただけますでしょうか?
 

Re: Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 2:15
hissyさん、ありがとうございます。
ええと、「二重状態」というのはheader.phpとdefault.phpの両方に
new GlobalArea('Header Nav');を指定した場合で、添付のファイルでは
header.phpのnew GlobalArea('Header Nav');は外してありますので、「二重状態」にはならないと思います。

hissyさんの環境では、「個別記事でナビが消える」現象も発生していないのでしょうか?

こちらの環境ですが、以下のとおりです。XAMPPとレンタルサーバの両方を明記しておきます。
【XAMPP】
# concrete5 バージョン
5.6.0.2

# concrete5 パッケージ
なし

# concrete5 オーバーライド
languages/ja_JP.UTF8, themes/codeblog, themes/codeblog.zip, themes/tutorialTheme, themes/tutorialTheme.zip

# サーバーソフトウェア
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1

# サーバーAPI
apache2handler

# PHPバージョン
5.3.1

# PHP エクステンション
apache2handler, bcmath, bz2, calendar, com_dotnet, Core, ctype, date, dom, ereg, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, imap, json, libxml, mbstring, mcrypt, mhash, ming, mysql, mysqli, mysqlnd, odbc, openssl, pcre, pdf, PDO, pdo_mysql, PDO_ODBC, pdo_sqlite, Phar, Reflection, session, SimpleXML, soap, sockets, SPL, SQLite, sqlite3, standard, tokenizer, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib.

# PHP 設定
max_execution_time - 60
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
memory_limit - 128M
post_max_size - 128M
safe_mode - Off
safe_mode_exec_dir - <i>no value</i>
safe_mode_gid - Off
safe_mode_include_dir - <i>no value</i>
sql.safe_mode - Off
upload_max_filesize - 128M
mysql.max_links - Unlimited
mysql.max_persistent - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
odbc.max_links - Unlimited
odbc.max_persistent - Unlimited
pcre.backtrack_limit - 100000
pcre.recursion_limit - 100000
session.cache_limiter - nocache
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
safe_mode_allowed_env_vars - PHP_
safe_mode_protected_env_vars - LD_LIBRARY_PATH

【レンタルサーバ】
# concrete5 バージョン
5.6.0.2

# concrete5 パッケージ
なし

# concrete5 オーバーライド
languages/ja_JP.UTF8, themes/codeblog, themes/tutorialTheme

# サーバーソフトウェア
Apache

# サーバーAPI
cgi-fcgi

# PHPバージョン
5.3.3

# PHP エクステンション
bz2, calendar, cgi-fcgi, Core, ctype, curl, date, dom, eAccelerator, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imap, json, libxml, mbstring, mcrypt, mysql, mysqli, openssl, pcntl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, pspell, Reflection, session, shmop, SimpleXML, soap, sockets, SPL, SQLite, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib.

# PHP 設定
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 30M
post_max_size - 500M
safe_mode - Off
safe_mode_exec_dir - <i>no value</i>
safe_mode_gid - Off
safe_mode_include_dir - <i>no value</i>
sql.safe_mode - Off
upload_max_filesize - 500M
eaccelerator.shm_max - 0
mysql.max_links - Unlimited
mysql.max_persistent - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 100000
pcre.recursion_limit - 100000
session.cache_limiter - nocache
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
safe_mode_allowed_env_vars - PHP_
safe_mode_protected_env_vars - LD_LIBRARY_PATH

以上です。よろしくお願い申し上げます。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 8:28
> header.phpとdefault.phpの両方にnew GlobalArea('Header Nav');を指定した場合

なるほどなるほど。その発想は全くありませんでした!
concrete5では、1つのエリアは、1ページに1か所、これが原則です。2か所以上はNGです。
header.php に Header Nav エリアを置き、default.php には Left Nav エリアを置く。これはOKです。
設定が同じオートナビブロックを置けばいいですし、もし全く同じコンテンツを2ヶ所に設置したいなら、「スタック」機能が使えます。


個別記事でナビが消えるというのは、こちらもよくわかりません、発生していません。
もう少し詳しく教えてもらえると、多分ナビ二重化問題のように解決できると思います。
 

Re: Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 19:54
hissyさん、レスありがとうございます。

> concrete5では、1つのエリアは、1ページに1か所、これが原則です。2か所以上はNGです。
> header.php に Header Nav エリアを置き、default.php には Left Nav エリアを置く。これはOKです。
なるほど、そもそもの使い方が間違っていたからエラーを起こしていた、ということなんですね。
わかりました。今後そのようにやってみます。


個別記事でナビが消える現象についてですが、
インストールした直後の concrete5 で、ルートにある themes ディレクトリに完成したテーマファイルが入ったフォルダを起き、インストールと有効化をした後、 default.php の Header Nav エリアが空白の状態になるのでそこにオートナビを指定しています。
特に変わったことはしていないと思うのですが、この作業で個別記事のみナビが表示されないのです。

以上、お手数をおかけいたしますが、引き続きよろしくお願い申し上げます。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 22:42
オートナビの各設定は、どのようになっていますか?
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月11日 at 23:11
hissyさん
設定というのは、「編集 オートナビ」の画面のことで間違いないでしょうか?
次のようになっています。

ページ表示順 : サイトマップ順
閲覧権限 : (チェックなし)
表示するページ : トップから
表示する下層ページ : なし
下層ページ : 開始レベルから現在のレベル (選択不可状態)
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月12日 at 12:10
新規ページはどこに作成していますか?(concrete5では記事という概念はないので全部ページです wink

「表示する下層ページ」がなしになっているので、ホームページ直下のページしかナビには出て来ません。2階層目以下は表示されないと思います。
 

Re: Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月12日 at 14:18
ありがとうございます。

> 新規ページはどこに作成していますか?
ブログの新規ページは、
/blog/hello-world/ および /blog/blogtest/
を作成しました(hello-worldはc5インストール時既にあるもの)

また、" /test/aiueo/" などとして、ページを作ってみました。

> 「表示する下層ページ」がなしになっているので、ホームページ直下のページしかナビには出て来ません。
とのことですが、「表示する下層ページ」がなしの状態でも、/test/aiueo/2層目にメニューが出てきます。
しかしやはり、ブログのページ(/blog/ 以下の下層ページ)のみ、メニューが出てきません。

オートナビの設定を「表示する下層ページ」「下層ページ」共に「すべてを表示」にしてみましたが、結果は変わらず「ブログの2層目以降のみメニューが表示されない」状態でした。

また、オートナビの設定を保存したタイミングで、ときどきナビのエリアに「view_edit_interface のパーミッションキーの取得に失敗しました。」というエラーが表示されます。
「毎回」ではなく「ときどき」であることが少し気になるのですが、これについてはどのようにすればよいのでしょうか。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月12日 at 16:20
うーまたまた全く経験がない。プライベートメッセージで、ログインアカウントをこっそり教えてもらえないかな。。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月13日 at 14:26
hissyさん
ありがとうございます。PMを送らせていただきました。
お手数をかけいたしますが、よろしくお願い申し上げます。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月16日 at 0:09
個別ページでナビゲーションが出ないという件は、concrete5のデフォルトの挙動ですね。
もし初めからオートナビブロックを配置しておきたい場合は、ページタイプのデフォルトで配置しておくか、全ページ共通のグローバルエリアが使えます。

オートナビに下層ページが出てこない件は、「表示する下層ページ」の設定が「なし」になっていたからでした。
 

Re: チュートリアルのテンプレートでナビゲーションの挙動がおかしい

2013年4月16日 at 0:20
hissyさん

管理画面の「ページタイプ」から「デフォルト」を選んで、そこで「編集」から操作すればよかったのですね。
無事解決することができました。
ご指導ありがとうございました。