2017-12-01 15 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; ?> 

. 내가 원하는 것은 위치가로드되면 첫 번째 요소에 도착한 다음 자식 요소가 부모 요소에 있는지 확인합니다.

어쩌면 dom 구조 또는 다른 쉬운 방법을 얻는 것이 가능하다면 누구에게 알 수 있습니까?

+0

PHP가 사용하는 DOM을 구문 분석하려면 코드에 p가없고 코드가 하나도 포함되어 있지 않습니다. PHP의 [DOMDocument] (http://php.net/manual/en/class.domdocument.php) –

+0

음, 네 말이 맞아 ... 나는 내 질문에 꽤 부끄럽지만, 감사인에게 감사한다! if 문은 left-top 위치를로드해야하는지 확인합니다. 나는 그것이 실제로로드되도록 설정할 것이지만,로드 될 때로드되는 요소가 ap 요소를 포함하는 기사에서로드되고 그 요소가 포함되어 있는지 확인하고 싶을 때가 있습니다. 가끔은 기사가 없지만 위치는 알기 쉬워야하기 때문입니다. 로드 된. – 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

음, 이것은 전체 웹 사이트가 더 이상로드되지 않는 것 같습니다? 나는 그것이 단지 일할 것이라고 생각할 것인가? – Brum

+0

웹 사이트가 더 이상로드되지 않는 경우 PHP 코드의 구문 오류가 가장 많이 발생합니다. 방금 코드를 복사하여 붙여 넣으면 두 번째 인스턴스에서 countModules 대신 coutnModules를 사용하여 실수로 오타를 복사했습니다. -- 죄송합니다 –