我在 Concrete5 中为我的自定义主题创建了一个条件语句。我的代码目标是切换布局。如果当前页面下有一个子页面,它将显示一个额外的侧边栏(<div class="grid_3">
)来列出子页面项目。如果没有子页面,它将显示完整的布局(<div class="grid_13">
)。
不幸的是,我得到了不同的结果。 在我的条件陈述中,我可能遗漏了一些东西。它不只是显示一个布局,而是渲染两个布局。
下面是我的代码的样子:
<? if($c->getNumChildren()) { ?>
<div class="grid_3">
<?php
$bt_sidenav = BlockType::getByHandle('autonav');
$bt_sidenav->controller->orderBy = 'display_asc';
$bt_sidenav->controller->displayPages = 'below';
$bt_sidenav->controller->displaySubPages = 'all';
$bt_sidenav->render('view');
?>
</div>
<div id="main-content-container" class="grid_10">
<div id="main-content-inner">
<?php
$a = new Area('Main');
$a->display($c);
?>
</div>
</div>
<? } else { ?>
<div id="main-content-container" class="grid_13">
<div id="main-content-inner">
<?php
$a = new Area('Main');
$a->display($c);
?>
</div>
</div>
<? } ?>
虽然你的PHP内容生成部分使用正确的PHP标签(<?php … ?>
),但你的if/else语句使用短标签(<? … ?>
),这些标签经常被禁用。
请改用<?php
。
尝试这样做,这可能会解决问题
<?php if($c->getNumChildren()!='') { ?>
...
<?php } else { ?>
...
<?php } ?>