4

会社の完全な再設計に取り組んでいますが、問題が発生しました。Cake Framework(1.2.0.7296 RC2)から離れた場合に構築しており、堅実なレイアウトテンプレートを作成するための最良のソリューションを見つけようとしています。私が作成したデザインには、各ページ全体に複数のラッパーがあります。以下は、コードの簡略化されたバージョンです。

<body style="background:url(somebackground.png);">
    <div class="page">
    <!--Page is used to constrain the content within a specific width-->
        <div class="header">
        <div class="nav">

      </div><!--End Nav-->
    </div><!--End Header-->
    <div class="content">
      <!--This area contains a slideshow and other info that varies from page-to-page-->
    </div><!--End Content-->
 </div><!--End Page-->
 <div class="wrapper" style="background:url(someotherbackground.png);">
    <div class="page">
    <div class="content">
        <!--Additional content-->
    </div><!--End Content-->
  </div><!--End Page-->
 </div><!--End Wrapper-->
 </body>

問題は、Cakeレイアウトには$ content_for_layoutが1つしかないことです。これは、ほとんどのWebサイトで機能します。ただし、構造化されているため、レイアウトテンプレートを最大限に活用することは困難です。私が考えた唯一の解決策は次のとおりでした。

  • ヘッダーの後にある上部のdivclass='ページを閉じてから、その下に別のdiv class='page'を追加します。そうすれば、ヘッダーとナビゲーションを要素に入れて、レイアウトテンプレートにのみ保持することができます。それに関する問題は、私がまだ多くのhtmlを繰り返すつもりなので、テンプレートを十分に活用していないことです。

理想的には、2つの$content_for_layoutが必要です。1つは最初のページの下のコンテンツ用で、もう1つは2番目のページのコンテンツ用です。そうすれば、レイアウトテンプレートを最大限に活用できます。次に、私のページに、パースペクティブコンテンツを配置できるセクションがあります。この問題の調査で、いくつかの解決策を見つけました。

これらが最善の解決策なのか、それとも私が探しているものを提供してくれるのかはわかりません。私はデザイナー兼フロントエンド開発者であるため、PHPに関する知識は限られています。ケーキについての私の知識はさらに限られています。私は最も簡単な解決策を探しています。

4

1 に答える 1

2

それが可能な場合(ただし、そうではないと思います)、最新バージョンのCake(2.2.1安定版)を使用してください。2.1以降、Cakeはビューブロックをサポートします。これにより、発生している問題を正確に解決できます。

それが不可能な場合は、コントローラーからいくつかの変数(レンダリングされた要素、またはより良いのは、レイアウトからレンダリングされた要素に転送する必要のある変数)を設定し、レイアウト上の任意の場所にエコーすることができます。 。コントローラからビューに渡すすべての変数はController::set、レイアウトでも使用できます。

于 2012-08-03T22:47:00.577 に答える