我的 PHP 条件语句显示两个结果,分别是 if 和 else,我的代码出了什么问题


My PHP condition statement display two results for if and else, what's wrong my my code?

我在 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 } ?>