一部テーマ適用時のエラーについて

2012年7月8日 at 11:54

皆様こんにちは。初めて質問させていただきます。

先日concrete5本体のインストールを無事に完了し、サイト制作に取りかかったばかりです。
自サイトに使うテーマを決めるべく、マーケットプレイスでいくつかのテーマを入手しました。この中で、「Rigid Light」というフリーのテーマを選択して保存ボタンを押すと、

「Fatal error: Call to a member function getThemeID() on a non-object in /home/users/1/lolipop.jp-◯◯◯◯◯/web/◯◯◯/concrete/models/page.php on line 1044」

という表示が画面に現れて、エラーになってしまいます(戻るボタンで適用前に戻すしかない状態)。

他のテーマは問題なく使えたので「Rigid Light」というテーマのみが何らかの理由で使えないのかなと思っていたのですが、貴社サイト「テーマのつくり方」ページ内にあるサンプルのテンプレートファイル(codeblog.zip)を試しに適用してみようとした際にも上記と全く同じエラーメッセージが出ました(チュートリアルに沿って自分でもファイルを作ってみましたが同じエラー表示)。

考えられる原因や解決方法はございますでしょうか。
ちなみにconcrete5のバージョンは5.5.2.1、レンタルサーバはロリポップです。
宜しくお願い致します。

タグ:

Re: 一部テーマ適用時のエラーについて

2012年7月8日 at 12:43
当サイトからcodeblog.zipをダウンロードして5.5.2.1.jaのサイトにインストールしてみましたが、問題なく有効化できました。concrete5.orgのフォーラムを見てもそのような報告に対する回答は見つけられませんでした。まず最初に確認してほしいことですが、concrete5のファイルをサーバーにアップロードされたと思いますが、それらのファイルがすべてアップできているかご確認ください。concrete5はファイル数が多いため、レンタルサーバーへのFTPアップロード時に途中でアップロードするべきファイルが漏れていることがたまにあります。

それでも解決しなかったら、[管理画面 > システム&設定 > サーバー設定一覧 > 環境情報]で表示される内容を投稿してください。解決の助けになります。


# 余談ですが、このサイトはオープンソースソフトウェアである「concrete5」のユーザーが有志で運営しています。フォーラムの回答者もボランティアです。会社が運営しているサイトではありませんので、念のため…
 

Re: 一部テーマ適用時のエラーについて

2012年7月8日 at 13:08
私もRigid lightでエラーが出ました。
MAMP上のローカル、inetd、Hetemlでもエラーが出ました。
この時5.4.2.1だったと思います。5.5以降ではエラーのファイル名は同じですが、行番号が違ったものが表示されます。
vividにも問い合わせましたが、free Themeのせいか全く返信がありません。
5.4.2.1の時ははっきり覚えていないのですが、エラー該当箇所の$this->をself::に変更したらエラーは表示されなくなりました。ただし、5.4.2.1ではTheme内のファイルだったのですが、ご質問の場合はシステムのファイルのようですので、これが当てはまるかどうかは分かりませんし、システムに手を加えるのは避けたほうがいいように思います。現在このテーマは使わないようにしています。
 

Re: 一部テーマ適用時のエラーについて

2012年7月8日 at 14:37
hissy様
早急なご返信どうもありがとうございます。
調べてみたところ、concrete5のファイルは全てサーバーにアップロードされているようでした。
環境情報で表示される内容を以下にペースト致します。


# concrete5 バージョン
5.5.2.1

# concrete5 パッケージ
Innovation (2.1), Rigid Light - Theme (2.0), Salt n Pepa Theme (1.0), Social Media (1.0).

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

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

# サーバーAPI
cgi-fcgi

# PHPバージョン
5.3.13

# PHP エクステンション
apc, bcmath, bz2, calendar, cgi-fcgi, Core, ctype, curl, date, dom, ereg, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, imagick, imap, ionCube Loader, json, libxml, mbstring, mcrypt, mhash, mysql, openssl, pcre, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, radius, Reflection, session, SimpleXML, soap, sockets, SPL, SQLite, sqlite3, standard, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib.

# PHP 設定
apc.max_file_size - 1M
log_errors_max_len - 1024
max_execution_time - 5
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 128M
post_max_size - 8M
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 - 2M
mysql.max_links - Unlimited
mysql.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
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: 一部テーマ適用時のエラーについて

2012年7月8日 at 16:03
サーバーAPIがcgi-fcgiの時に起こる不具合のようです。はっきりとした原因は分かりませんが、この方法を一度試してみてください。

1. [管理画面 → システム&設定 → 最適化 → キャッシュ&スピード設定]にアクセスし、基本キャッシュをオフにして保存
2. [管理画面 → システム&設定 → 最適化 → キャッシュをクリア]にアクセスし、[キャッシュをクリア]ボタンをクリック
3. テーマの変更を行う

うまく言ったら、基本キャッシュは有効に戻しておいてください。
 

Re: 一部テーマ適用時のエラーについて

2012年7月9日 at 0:51
hissy様
ご返信ありがとうございます。
上記操作を行ったところ、Rigid Lightテーマでは先述の「Fatal error: Call to〜」が再び現れてエラーとなりましたが、codeblog.zipは有効化できました!

今後、テーマはカスタマイズして使用する予定です。
手を加えたテーマを有効化する時にも同じ問題が発生した際には、こちらの方法で対処します。

早急なご対応、非常に助かりました。
どうもありがとうございました。
 

Re: 一部テーマ適用時のエラーについて

2012年7月8日 at 14:44
xark様
早急なご返信どうもありがとうございます。
そうですか、xark様もRigid Lightで不具合があったのですね。
洗練されたデザインでなかなか魅力的だったのですが・・・
システムに全く詳しくない私は、下手に触らないほうが無難かもしれませんね。
ご経験をシェアしていただき、とても助かります。
どうもありがとうございます。
 

Re: 一部テーマ適用時のエラーについて

2012年7月9日 at 14:15
「Rigid Light」での不具合という事なんですが、concrete5.5.0 以降のこちらのテーマは、発表されていたかと、記憶しています。version1.1.1 という事で、その時に concrte5.5.1en にてこのテーマをちょっと研究していたものです。現在確認をしてみたら、「Rigid Light2.0」になっているようです。

まずは、私のローカル環境の中に、その当時の concrete5.5.1 のバージョンとその時の「Rigid Light1.1.1」のまま残っていたので、今回手始めに concrete5.5.1en⇒concrete5.5.2.1へアップグレードさせて、「Rigid Light2.0」をダウンロードして、こちらもテーマのバージョンアップさせてみましたが、全く問題はありません。

実は、この「Rigid Light」はちょっと初心者には敷居が高いという理由がちょっとあります。

マーケットプレイスからダウンロードは、ともかくも、通常の手作業でのインストールの場合、通常テーマのフォルダーは、root / themes のフォルダーに解凍したものをそこに置くというルールがあるのですが、このパッケージに関しては、 root / packages の中に解凍したものを解凍したフォルダー毎に入れるという、ちょっと変わったテーマパッケージになっています。

その理由は、解凍したフォルダーの中身を確認すれば、わかりますが・・・

①、 rigidlight / blocks / autonav /
  rigidlight / blocks / power_slider_rigid /
  rigidlight / blocks / simple_cta /
  rigidlight / blocks / simple_logo /
  rigidlight / blocks / vcard /

②、 rigidlight / themes / rigidlight /



ということで、テーマ作者の作った他の簡単な1つのテーマとともに、5つのブロックアドオンが一緒にパッケージされているからです。
また version2.0からは、 rigidlight / themes / rigidlight / element の代わりに inc フォルダーなるものに変わっていたりと、どうみても既存の方法やルールから違うやり方になっています。

ということで、中級者の方がお勉強がてらに、「Rigid Light1.1.1」で、お勉強すると良いかと思います。ポイントは、Themes だけに関して云えば・・・


1、heder.php

①、<?php Loader::element('header_required'); ?> の位置に注意。

②、<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->getStyleSheet('main.css')?>" /> の記述の注意。

③、<script type="text/javascript" src="<?php echo $this->getThemePath()?>/js/JS.js"/></script>Javascrip の扱いの注意。

④、html5表記なのか、既存のままの表記かや、lang の指定などなど。

2、default.php
①、<?php $this->inc('elements/footer.php'); ?> を最後に忘れないように。

②、php 記述方法の違い
(通常ブロック挿入記述例)
  <?php
  $a = new Area('Main');
  $a->display($c);
  ?>

(グローバルエリアの記述例)
  <?php
  $a = new globalArea('Logo');
  $a->display($c);
  ?>

(ページリンクの記述例)
  <?php echo $this->url('about / pageName ')?>

(ダイレクトのイメージ挿入の記述例)
  <?php echo $this->getThemePath()?>/images/ イメージの名前



ほかのダウンロードされた「テーマ」ファイルと見比べると良いかと思います。

結論からいけば・・・この「Rigid Light」テーマパッケージは、concrete5の能力を引き出す試行錯誤した、やり方の宝庫という事で、お手本にするには最高のパッケージという事になります。
 

Re: 一部テーマ適用時のエラーについて

2012年7月9日 at 14:52
もうひとつ! どうしてもこの「Rigid Light」を使いたいということであれば・・・

ご自身でのローカル環境の中で、自己責任でテストしてみてください。

1、ローカル環境の cocrete5.5.2.1 を稼動させている条件を満たして・・・

ケース:1
①、マーケットプレイスから、「Rigid Light」をダウンロードして来て、それを解凍する。
②、解凍したフォルダー「Rigid Light」を 稼動している concrete5.5.2.1 / packages にコピーする。
③、稼動している concrete5.5.2.1 にログインをして、ダッシュボード⇒Extend concrete5 または機能拡張から、「Rigid Light」パッケージが表示されていれば、インストール。
④、サイトを各ページ確認して、不具合がないかどうか確かめる。

ケース:2
①、上記でどうしても動かない場合。(ありえないけど・・・)
②、マーケットプレイスから、「Rigid Light2.0」をダウンロードして解凍したフォルダーの中身の
rigidlight / themes / ligidlight を 稼動 concrete5.5.2.1 / themes / の中の取り出した、rigidlight / themes / ligidlight をコピーして入れる。
③、稼動している concrete5.5.2.1 にログインをして、ダッシュボード⇒テーマとページ へ行ってそこで表示されている「Rigid Light2.0」をインストールして、サイトで有効化をさせるという荒業もあります。
その際に注意事項として・・・


rigidlight / themes / ligidlight / inc / header.php の19行目あたりにある。

<?php
$bt_main = BlockType::getByHandle('autonav');
$bt_main->controller->displayPages = 'top';
$bt_main->controller->orderBy = 'display_asc';
$bt_main->controller->displaySubPages = 'all';
$bt_main->controller->displaySubPageLevels = 'custom';
$bt_main->controller->displaySubPageLevelsNum = '1';
$bt_main->render('templates/dropdown');
?>

ケース1(通常ブロック表示例)
<?php $a = new Area('Header Navi'); $a->display($c); ?>

ケース2(グローバルブロック表示例)
<?php $a = new globalArea('Header Nav'); $a->display($c); ?>

ケース3(スクラップブックからの表示例)
<?php
$block = Block::getByName('My_Site_Name');
if( $block && $block->bID ) $block->display();
else echo SITE;
?>



ナビ(メニューの部分)の変更方法として・・・
'My_Site_Name' を適当な名前をつけて 'Header Navi' などに変更する方法などがあります。

ご自身でお勉強がてら、いろいろと試されると良いかと思います。
 

Re: 一部テーマ適用時のエラーについて

2012年7月10日 at 5:55
tomoya様
ご返信ありがとうございます。詳細にわたりご解説いただき、感謝致します。
知識が浅くまだまだ初心者の域を出られない私ですが、このテーマを教材として色々勉強してみようと思います。
アドバイスいただいた内容をもとに、また他のテーマのファイルとも見比べながら、トライしてみます。
どうもありがとうございました。
 

Re: 一部テーマ適用時のエラーについて

2012年7月10日 at 8:12
基本的には、記述ミス以外では、テーマによってエラーが出てくることはほぼありません。
php以外では、純粋にhtml/css/javascript だけの出力だからです。最近ではJavascript周りのエラーならわかりますけれども。

教材にするには、オリジナルから・・・concrete5 /concrete/themes フォルダーの中の・・・
①、themes/default (オリジナルプレーンヨーグルト:すべての基本形)
②、themes/greek_yogurt (グリークヨーグルト:最新版のver5.5以上の基本形)
③、themes/greensalad(グリーンサラダ:幅が狭いものの基本形)
④、themes/dark_chocolate(プレーンヨーグルトの色違い:css基本形のお手本)
⑤、そのほかダウンロードした、テーマファイルなどなど。

また、concrete5.4系とcocrete5.5系で記述方法などが違うケースもあります。間違い探しみたいな感じで気軽に取り組むと力が付きます。

また、対象の「Rigit Light」ですが、ver1.1.1がconcrete5.5.0以降。ver2.0がconcrete5.5.2.1以降推奨みたいな感じかと思います。唯一初期の頃のバージョンがconcrete5.4系かと思います。
基本的には、5.5系のものととらえた方がよろしいかと思います。

最後にconcrete5 /packages/rigitlight と云う風にパッケージでの使用をする場合には、面倒ではありますが・・・concrete5 /packages/rigitlight/ の中にある・・・

①、concrete5 /packages/rigitlight/ controller.php の中の記述の仕方が、パッケージのインストールの仕方を決めているので、これをトライアンドテストで、特に block のインスト制御の部分を削ってみたり、追加してみたりと色々と遊んでみるのも良いかもしれません。
(パッケージによる、ブロックのインストール方法。中級者向けのトライ!)

②、concrete5 /packages/rigitlight/ controller.php の中の記述の中身によって、「シングルページ」を一緒に作ってみたり、属性を含ませたり・・・とさらに上級者向けの学習がここにも含まれています。ますます夢(妄想)が広がります。
(要:他のパッケージ::アドオンを参照の事。)

③、最後に「オリジナル」のテーマをパッケージ化させる方法がわかれば、「Designer Contents」などで、作成したオリジナルのブロックと抱き合わせで、テーマファイルとオリジナルブロックのデザイン(css)を連動させり、インストールさせることなども可能になりますので、是非頑張ってみてください!

・・・さすがにそこまで行くと・・・concrete5が手放せなく(止められなく)なります(笑)
 

Re: 一部テーマ適用時のエラーについて

2012年7月11日 at 16:59
tomoya様
ご親切にどうもありがとうございます。

それぞれの既存テーマについての特徴説明もとても参考になりました。分かる方には一目瞭然なのでしょうが、完全なhtmlビギナーの私にとっては、テーマの特徴(グリーンサラダ=幅が狭い、など)を先に頭に入れてからその記述とにらめっこすることができて助かっています。

オリジナルテーマの作成にはhtml/cssの知識が不可欠であることは理解しておりますが、どうしてもこういうのにしたい!というレイアウトがあり、それを実現するにはやはりテーマのカスタマイズが必要なので、ご返信いただいた内容を参考に勉強して理解を深めて参ります。
お忙しいところ、どうもありがとうございました。