检查div是否包含带有php

时间:2017-12-01 14:57:34

标签: php html dom joomla

我想知道是否可以查看父元素是否具有带php的子元素?我知道jQuery是可能的,但是我需要用php来做,因为我需要根据子元素的存在来做一个以不同方式显示我的内容的检查。

我现在拥有的是:

<?php if ($showLeftColumn) : ?>
            <aside class="sppb-col-md-3 custom-style-left">
                <jdoc:include type="modules" name="left-top" style="xhtml" />
                <jdoc:include type="modules" name="left-center" style="xhtml" />
                <jdoc:include type="modules" name="left-bottom" style="xhtml" />
            </aside>
        <?php endif; ?>

现在可以使用,但它仍然显示为空,因为位置是标准加载的。我想要的是,如果位置被加载,那么它进入第一个if,然后检查父元素中是否存在子元素。

有没有人知道这是否可能通过获得dom结构或其他更简单的方式?

2 个答案:

答案 0 :(得分:1)

以下内容可以解决您的问题。

<?php
        $content = '<aside class="sppb-col-md-3 custom-style-left">
                            <jdoc:include type="modules" name="left-top" style="xhtml" />
                            <jdoc:include type="modules" name="left-center" style="xhtml" />
                            <jdoc:include type="modules" name="left-bottom" style="xhtml" />
                        </aside>';
        if (strpos($content, '<p') === false) {
          //Don't show content, maybe show something else?
        } else {
          echo $content;
        } ?>

答案 1 :(得分:0)

请允许我重新表述你的问题。你的方法是首先创建一个问题(创建空的一边),然后清理它(找出旁边是否为空),同时你也可以一起避免这个问题。

Joomla提供了方法countModules(),允许您根据将来的内容制作代码。然后,您可以将代码重写为

<?php if (($showLeftColumn) &&
        ($this->countModules("left-top") + 
         $this->coutnModules("left-center") +
         $this->countModules("left-bottom"))): 
?>
        <aside class="sppb-col-md-3 custom-style-left">
            <jdoc:include type="modules" name="left-top" style="xhtml" />
            <jdoc:include type="modules" name="left-center" style="xhtml" />
            <jdoc:include type="modules" name="left-bottom" style="xhtml" />
        </aside>
    <?php endif; ?>