구성 요소 영역에 모듈을 표시하는 방법


13

종종 다른 내용없이 구성 요소 영역에 모듈을 표시하는 메뉴 항목을 만들어야합니다.

이 문제를 해결하는 방법은 새 기사를 만들고 {loadposition mymodule}기사 내용 에만 추가하는 것 입니다. 그런 다음 기사에 대한 단일 기사 메뉴 항목을 만듭니다. 단일 모듈에는 문제가 없지만,이 방법으로 표시하려는 20 개의 다른 모듈이 있으면 어떻게합니까? 20 개의 모듈, 20 개의 (거의 비어있는) 기사 및 20 개의 메뉴 항목을 만들어야합니다.

템플릿의 구성 요소 영역에 모듈을 표시하는 다른 방법이 있습니까? 트릭? 해킹? 아이디어?


Joomla에서 유용 할 수 있습니다! 3 모듈을 생성하는 편집기 버튼을 사용하십시오. 그러면 오류가 발생하기 쉽고 빠릅니다.
Eoin

답변:


10

구성 요소와 동일한 위치에 모듈 위치를 만들고 모듈 이이 위치에 있는지 확인한 다음 표시하여 구성했습니다. 그렇지 않으면 구성 요소로 이동하십시오.

코드 샘플 :

<main id="content" role="main" class="main">
 <?php 
 if ($this->countModules('myposition')) 
   { ?>
     <jdoc:include type="modules" name="myposition" style="xhtml" />
 <?php } 
  else 
  { ?>
     <jdoc:include type="component" /> 
  <?php } ?>
</main>

그런 다음 페이지에 구성 요소 대신 모듈을 표시하려고 할 때 해당 메뉴 항목에 모듈을 할당하면 모듈이 만들어집니다.

작은 쪽지 :

편의성과 명확성을 높이기 위해이 모듈의 이름을 "content-module", "main-module"또는 "compomodule"과 같이 지정하는 것이 좋습니다. 거기에 배치 된 모든 모듈이 구성 요소 출력을 대체한다는 것을 상기시키는 것.


1
이것이 이상적인 솔루션입니다. 많은 상용 템플릿에는 관리자 측 구성에 매개 변수 토글이 있지만 이러한 상용 템플릿 중 하나를 사용하지 않는 경우 가장 효율적이고 우아한 답변입니다.
토니 마리

1
나는이 아이디어를 좋아하는데, 간단하고 효과적이며 기존 템플릿에서 쉽게 구현할 수 있습니다. 우수한.
johanpw

9

주어진 답변을 향상시키기 위해 :

컴포넌트 뷰에 모듈 위치를 포함시키고 모듈을로드하려면 추가해야합니다.

echo JHtml::_('content.prepare', '{loadposition yourmodulposition}');

뷰 파일에.

로드 위치가 짧은 태그가있는 두 번째 문자열은 필요한 경우 더 많은 html을 포함하는 var로 바꿀 수 있습니다. 모든 새로운 모듈 위치에 대해 해당 줄을 작성할 필요는 없습니다.

$outputModules = '<strong>Some Html</strong>'
                 .'{loadposition yourmodulposition1}'
                 .'{loadposition yourmodulposition2}';


echo JHtml::_('content.prepare', $outputModules);

(저는 이것이 저자 질문에 대한 직접적인 대답이 아니라는 것을 알고 있습니다.)


2

다음은 간단하고 효과적인 솔루션입니다. jdoc : include로 시도했지만 작동하지 않았습니다.

    $ document = JFactory :: getDocument ();
    $ renderer = $ document-> loadRenderer ( '모듈 ");
    $ position = 'custompositionname';
    $ options = array ( 'style'=> '원시');
    echo $ renderer-> render ($ position, $ options, null); 

질문에 설명 된대로 위의 코드를 사용하여 원하는 결과를 얻는 방법을 자세히 설명하십시오.
FFrewin

지원되는 모듈에서 새 모듈을 만들고 해당 위치 (예 : custompositionname)를 설정하고 게시하십시오. 프론트 엔드에서 위의 코드를 추가하면 아무런 문제없이 작동합니다.
user2589739

0

확장 데모와 다운로드 버튼을 위해 내 사이트에서 동일한 작업을 수행해야했지만 모든 정직하게 말하면 관리가 쉬우므로 여러 가지 방법을 사용하는 것이 더 좋습니다. 실제 CMS를 통해 원하는 것을 얻을 수있는 방법이 없으며 하드 코드 만 (더 이상은 아닙니다) 확신합니다.


0

우선, 귀하의 질문에 따라 이미 20 개의 모듈과 20 개의 메뉴 항목을 만들고 있으므로 실제로해야 할 유일한 추가 사항은 각 모듈에 대해 한 줄짜리 컨텐트 항목을 만드는 것입니다. 그것이 정말로 번거 롭다면 @FFrewin의 아이디어로 진행하십시오. 약간 해 키지 만 작동합니다.

개인적으로 나는 컨텐츠 아이템과 함께 갈 것입니다. 사실 팝업 대화 상자가있는 시스템을 구축 할 때 js를 사용하지 않고 작업하고 싶었습니다. 대화 상자 내용을 custom_html 모듈에 넣고 링크를 클릭했을 때 모듈이 드러나도록 조작했습니다. 그리고 나는 또한 당신이 묘사 한 모듈을 포함하여 컨텐트 아이템에 대한 링크를 지적했습니다. js가 활성화 된 경우 링크를 따르지 않고 대화 상자가 나타납니다. js가 비활성화 된 경우 링크가 이어지고 대화 상자의 내용이 내용으로 표시되었습니다. 그리고 내용이 한 곳에 있었기 때문에 내용의 두 복사본을 별도로 유지하지 않았습니다.




0

빈 기사를 만듭니다.

작성한 기사를 선택하여 메뉴 항목을 작성하십시오.

사용하지 않는 위치에 모듈을 만들고 선택한 페이지에서만 메뉴 할당을 설정하고 위에서 메뉴 항목 만 선택하십시오.

이것이 내가 대답 할 것이라고 생각한 상단에 있었기 때문에 이것이 내가하는 일입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.