如何在CakePHP 1.3中修改$content_for_布局

如何在CakePHP 1.3中修改$content_for_布局,cakephp,model-view-controller,layout,cakephp-1.3,cakephp-1.2,Cakephp,Model View Controller,Layout,Cakephp 1.3,Cakephp 1.2,我使用的是CakePHP1.3。在app/views/layouts/default.ctp中,我使用以下命令: <?php echo $content_for_layout;?> 使用CSS,我隐藏/显示拆分测试主页内容原始或拆分测试主页内容重新设计,具体取决于拆分测试将显示的版本。但是我遇到了问题,因为布局的$content\u被渲染了两次。尽管人们在视觉上只看到一个版本,但在幕后,页面在同一页面上加载了两次。这给我带来了各种各样的问题,比如重复的表单,由于重复的变量而导致Ja

我使用的是CakePHP1.3。在
app/views/layouts/default.ctp中,我使用以下命令:

<?php echo $content_for_layout;?>

使用CSS,我隐藏/显示
拆分测试主页内容原始
拆分测试主页内容重新设计
,具体取决于拆分测试将显示的版本。但是我遇到了问题,因为布局的
$content\u
被渲染了两次。尽管人们在视觉上只看到一个版本,但在幕后,页面在同一页面上加载了两次。这给我带来了各种各样的问题,比如重复的表单,由于重复的变量而导致JavaScript元素不能正常工作等等。我想做的是修改
$content\u for_layout
的作用。我正在考虑的一个选项是使用JavaScript,这样在
jQuery(document).ready(function($){
部分,我可以在实验中做一些事情,这样,如果一个变量包含一个特定的布尔值,我就可以显示一个版本或另一个版本。类似这样:

如果(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\u for\u layout
的功能吗?谢谢。

复制内容肯定是自找麻烦。我使用了一种更好的方法,仅在不复制内容的情况下操作CSS类和ID。

$content\ur_布局
包含渲染动作视图模板(例如
视图/帖子/索引.ctp
),如果您想修改变量所包含的内容,那么您可能需要相应地修改操作视图模板。如果您详细说明您想要/需要更改的内容,或者提供一个前后示例,您可能会得到更好的答案。谢谢@ndm。我在我的问题的
UPDATE 1
中解释了更具体的问题我正在努力完成。具体的(程序性的)目标在哪里决定要向用户显示哪些版本?如果在服务器端做出决定,那么您可以简单地更改为不同的布局,例如应用程序控制器。如果在前端做出决定,那么您应该考虑将该更改移到后端;这个决定是在前端进行的,谷歌优化是配置我正在使用的A/B测试实验的工具。谷歌优化不操纵后端,但它可以处理前端的任何东西。因此,在我看来,我需要考虑前端计划作为计划A,而计划B将是后端解决方案。n、 啊,我明白了,一种方法是使用脚本模板,即
,并通过JS相应地插入所需的模板。只要内容在模板标记内,它就不会被解释为HTML,因此不会把事情搞砸。但请注意,不能将
标记嵌套在模板内。
<div id="split-test-homepage-content-redesign">
    ..........
    <?php echo $content_for_layout;?>
    ..........
</div/>