2017-12-01 5 views
0

親要素にphpの子要素があるかどうか確認できますか?私はそれがjQueryで可能であることを知っていますが、私はその子要素の存在に基づいて私のコンテンツを違うように表示するチェックをする必要があるので、PHPでやる必要があります。私が今持っている何divにph要素のp要素が含まれているかどうかを確認

は次のとおりです。

<?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構造や他の簡単な方法でこれが可能であれば誰でも知っていますか?

+0

あなたは何をしようとしていますか(コードにはpは含まれていません)が、PHPを使用してDOMを解析する場合は、 PHPの[DOMDocument](http://php.net/manual/en/class.domdocument.php) –

+0

Mmh、はい、あなたは正しいです...私は私の質問にはかなり敬意を表しますが、awnserに感謝します! ifステートメントは、左上の位置をロードする必要があるかどうかを確認します。私はそれが本当にロードされるようにそれを設定しましたが、ロードされたときに、ロードされたときには、p要素を含む記事にロードされ、その要素が含まれているかどうかをチェックしたいときがあります。 – Brum

答えて

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; 
     } ?> 
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; ?> 
+0

Mmh、これはウェブサイト全体がもうロードされないように思えますか?私はそれがうまくいくと思いますか? – Brum

+0

あなたのウェブサイトがもうロードされない場合は、PHPコードの構文エラーが考えられます。コードをコピーしただけでは、2番目のインスタンスでcountModulesではなくcoutnModulesをコピーしました。 - ごめんなさい –

関連する問題