Twigでよくあるエラーの1つ、「A template that extends another one cannot include contents outside Twig blocks.」をご紹介します。

Twigではテンプレートの継承という概念を備えています。1つの親テンプレートを拡張して子のテンプレートを作ることでヘッダーやフッターなど共通要素の管理コストを大幅に下げられます。

ただ継承にはいくつかルールがあって、その中の1つに「extends」している子テンプレートではコンテンツは「block」の中に書かなければならないというものです。
例えばEC-CUBE3のトップページテンプレートはindex.twigですが、最初の方で{% extends ‘default_frame.twig’ %}というようにdefault_frame.twigを継承しています。

なのでブロックの外に何かを書いてしまうと・・・

A template that extends another one cannot include contents outside Twig blocks. Did you forget to put the contents inside a {% block %} tag in “__string_template__cfced8c61c7de427d11e8d72abf103e1121349b1b6599d3855c73859e48277bc” at line 56?

Whoops, looks like something went wrong.とエラーになります。
ブロックの外にコンテンツを書かないというのはTwigで継承を行う場合の基本ルールになります。

関連するカスタマイズ

style.cssに#contents min-height: 100vh;は必要か?... default/css/style.cssに #contents { min-height: 100vh;}という最低の高さ指定があります。 デフォルトテーマでこれを全ページに適用させている理由としては、新規ページ等でコンテンツが少ない場合に、ある程度高さがないと見た目が悪いということだと思...
Bootstrap3のクラスform-controlを取り除く方法(form_widget)... EC-CUBE3.0系ではSymfonyComponentの1つであるFormにより、Twig内では強力な関数form_widget、form_errorsが使用できます。 これらは作成したFormType(定義ファイル)に従って自動で初期データ入力やエラー処理をしてくれるというたいへん便利な...
Choiceタイプ(ラジオボタン)でNoneを消す方法... セレクトボックスやチェックボックス、ラジオボタンを簡単に生成することができるChoiceタイプは非常に強力なフォームタイプです。 ただ添付画像のようにラジオボタンを生成したときにNoneという選択肢が自動で表示されることがあります。 このNoneの消し方は意外と知られてい...
Invalid parameter number: number of bound variable...   クエリビルダを使用して開発していると頻繁に出くわす例外エラーがQueryExceptionです。 その中でも有名なInvalid parameter numberについてご紹介致します。 この例外はクエリビルダにバインドした変数の数と、渡したパラメーターの数が異なると...

弊社はEC-CUBE公式インテグレートパートナーです。