web-dev-qa-db-ja.com

page.tplの外部でレンダリングされたカスタム領域のビューブロック

Node.tpl.phpファイル内にレンダリングされたカスタム領域が期待どおりに機能しますが、viewsモジュールによって作成されたブロックがそれらに配置されると、phpエラーが発生します。

 [:error] [pid 2563] [client 127.0.0.1:35606] PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /filepath/sites/all/modules/devel_themer/devel_themer.module on line 333

他のブロックはすべて領域で正常に機能し、ビューブロックはpage.tpl.phpによって呼び出されるすべての領域で正常に機能します。このエラーは、2つを組み合わせた場合にのみ発生します。他のログメッセージはなく、ページは空白の画面を返すだけなので、問題が何であるか、それを修正する方法はよくわかりません。以下のコードをtemplate.phpで使用して、page.tpl.phpの外部で領域を使用できるようにします

function smark_design_theme_preprocess(&$variables) {
  if (block_get_blocks_by_region('region_name')) {
    $variables['region_name'] = block_get_blocks_by_region('region_name');
  } else { $variables['region_name'] = FALSE; }      
}

そして、これはnode.tpl.phpのリージョンを呼び出すためのものです

<?php if ($page): ?>
  <?php if ($region_name): ?>   
    <div id="region-name">
      <?php print render($region_name); ?>
    </div>
  <?php endif; ?>
<?php endif; ?>
2
Salem616

ノードテンプレート内の領域をレンダリングすることは正常ではありません。これが理由の1つです。これらの領域の1つにあるブロック内のノードを表示すると、node.tpl.phpがそれ自体を(他のいくつかのテーマ呼び出しを介して)間接的に呼び出すという無限回帰が発生します。

テーマの構造を見直してください。

1

Php.iniを検索し、max_execution_timeの値を次のように変更します。

max_execution_time = 300

デフォルトでは、php.iniは30秒で、PHPは処理にさらに時間が必要です。この場合、300秒です。

EDIT:問題が解決しないと your comment で言うように、次の解決策を使用できますが、あなたのサイトはあなたのリクエストを処理するのに長い時間がかかる場合があります。

ファイルYOUR_SITE/sites/default/settings.phpを編集して、2行目にこれを追加し、ファイルを保存します。

set_time_limit(0);

この関数の詳細については php.net をご覧ください。

2