Как изменить $ content_for_layout в Cake PHP 1.3 - PullRequest
0 голосов
/ 13 января 2020

Я использую торт PHP 1.3. В app/views/layouts/default.ctp я использую это:

<?php echo $content_for_layout;?>

Согласно Cake PHP Разработка приложений, Ahsanul Bari и Anupom Syam,

"Эта линия в основном отвечает за размещение содержимого представлений, отображаемых контроллером, внутри макета. Мы должны включить это, чтобы сообщить Cake, где размещать специфичные для действия c представления, отображаемые контроллером. "

Я пытался выяснить, как изменить содержимое $content_for_layout. Но я думаю, что это не та переменная, которую я должен изменить, чтобы изменить макет. sh Я пытаюсь либо изменить $content_for_layout, либо создать новый макет, чтобы настроить некоторые элементы для эксперимента А / Б тестирования. Не могли бы вы помочь мне лучше понять, как манипулировать $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 Я прячу / показываю либо split-test-homepage-content-original, либо split-test-homepage-content-redesign в зависимости от версии, которую будет отображать сплит-тест. Но у меня проблемы, потому что $content_for_layout отображается дважды. Хотя визуально люди видят только одну версию, но за кулисами страница $content_for_layout загружается дважды на одной странице. Это вызывает у меня всевозможные проблемы, такие как дубликаты форм, элементы JavaScript, работающие неправильно из-за дублированных переменных и т. Д. c. Я хочу изменить то, что $content_for_layout делает для <div id="split-test-homepage-content-redesign">. Один вариант, который я рассматриваю, - это использовать JavaScript, чтобы в разделе jQuery(document).ready(function($) { я мог что-то сделать в эксперименте, чтобы, если переменная содержала заданное логическое значение c, я показывал одну или другую версию. Примерно так:

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? Спасибо.

1 Ответ

0 голосов
/ 21 января 2020

Дублирование контента определенно вызывает проблемы. Я использовал гораздо лучший подход для манипулирования CSS классами и идентификаторами только без дублирования контента.

...