如何在 CakePHP 1.3 中修改 $content_for_layout

How to modify $content_for_layout in CakePHP 1.3

我正在使用 CakePHP 1.3。在 app/views/layouts/default.ctp 我正在使用这个:

<?php echo $content_for_layout;?>

根据 Ahsanul Bari 和 Anupom Syam 的 CakePHP 应用程序开发,

"This line is mainly responsible for placing controller-rendered view contents inside the layout. We must include this to tell Cake where to place the action-specific controller-rendered views."

我正在想办法修改$content_for_layout的内容。但我想这不是我应该修改以修改布局的那种变量。我想要完成的是修改 $content_for_layout 或创建一个新布局来为 A/B 测试实验自定义一些元素。你能帮我更好地理解如何操纵 $content_for_layout 吗?谢谢。

更新 1:

我正在配置一个 A/B 测试实验。我在 app/views/layouts/default.ctp:

中有这个
<body>
    ..........
    <div id="split-test-homepage-content-original">
        ..........
        <?php echo $content_for_layout;?>
        ..........
    </div>
    <div id="split-test-homepage-content-redesign">
        ..........
        <?php echo $content_for_layout;?>
        ..........
    </div/>
</body>

与 CSS 我 hiding/showing split-test-homepage-content-originalsplit-test-homepage-content-redesign 取决于拆分测试将显示的版本。但是我遇到了问题,因为 $content_for_layout 被渲染了两次。尽管视觉上人们只看到一个版本,但在幕后,该页面在同一页面上加载了两次 $content_for_layout。这给我带来了各种各样的问题,例如重复表单,JavaScript 元素由于重复变量而无法正常工作等。我想做的是修改 $content_for_layout<div id="split-test-homepage-content-redesign">。我正在考虑的一个选项是使用 JavaScript 以便在 jQuery(document).ready(function($) { 部分我可以在实验中做一些事情,这样如果变量包含特定的布尔值,我会显示一个版本或另一个。像这样:

if(javascriptvariable==true){ 然后使用以下 HTML 视图:

<div id="split-test-homepage-content-original">
    ..........
    <?php echo $content_for_layout;?>
    ..........
</div>

否则,Javascript 会注意不显示上面的内容,但是这个:

<div id="split-test-homepage-content-redesign">
    ..........
    <?php echo $content_for_layout;?>
    ..........
</div/>

JavaScript 方法对您有意义吗?或者我应该做一些关于创建新布局或修改 $content_for_layout 的事情吗?谢谢。

复制内容绝对是自找麻烦。我使用了一种更好的方法来仅操作 CSS 类 和 id 而不会复制内容。