2014-04-07 2 views
0

이것은 Joomla의 Dizi-images 모듈 (plugin/content/images/images.php)의 코드입니다. 이 작품은 특정 기사의 끝에 이미지 또는 이미지 갤러리를 게시합니다.Joomla 모듈을 다른 위치로 렌더링하는 방법

그러나 이미지/이미지 갤러리를 다른 위치 (Joomla 관리자에서 위치를 변경하고 아래 코드에서 getModules 값을 변경하여)를 게시하려는 경우 기사에 대한 '연결'이 느슨합니다. 사이트의 모든 기사에 표시됩니다.

이미지/이미지 갤러리를 특정 기사에 연결하지 않고 다른 위치에 게시하려면 아래 코드를 만들 수 있습니까? 나는에 위치를 변경 모듈의

/* 
* load front end images module 
*/ 

public function onContentAfterDisplay($context, &$row, &$params, $limitstart = null) 
{ 
    $jinput = JFactory::getApplication()->input; 
    $option = $jinput->get('option', '', ''); 
    $view = $jinput->get('view', '', ''); 

    if($context == 'com_content.article' && ($modules = JModuleHelper::getModules('images'))) 
    { 
     return JModuleHelper::renderModule($modules[ 0 ]); 
    } 

    return ''; 
} 

감사

매그너스는

Screenshot of the modules that I change position on

스크린 샷 (Joomla를 관리/확장/모듈 관리자 /)

플러그인 I 사용법은 "Dizi images gallery"-extension입니다.

The Dizi-tab in Article Manager. Where you add images to the article your in

는 같은 고전-이미지 탭을 보여줍니다. 기사에 이미지/이미지 갤러리를 추가하는 곳

+0

Joomla 3.x에서는'JRequest'를 사용하지 마십시오. 더 이상 사용되지 않습니다. 'JFactory :: getApplication() -> input-> get()'을 사용해야합니다. – Lodder

+0

코드를 JInput으로 업데이트했습니다. 나는 프로그래머가 아니므로 그것이 정확하지 않은지 말해주십시오. –

답변

0

다른 위치에 대한 모듈의 새 인스턴스를 만드는 것이 어떨까요? 그렇게하면이 모듈은 그대로 유지되고 새로운 모듈은 여러분이 가진 코드와 충돌하지 않고 다른 곳에 게시됩니다.

Lodder에서도 JInput을 사용하십시오.

+0

모든 이미지/이미지 갤러리에 대해 새 모듈을 만들지 않습니다. 플러그인은 모든 이미지/이미지 갤러리에 동일한 모듈을 사용합니다. 그래서 나는 Joomla 관리자 "모듈 관리자"(위 그림 참조)의 기존 모듈 위치 만 변경합니다. –

+0

원래 코드를 유지하는 것에 대한 훌륭한 아이디어. 그렇다면 솔루션은 아마도 if else 문을 필요로 할 것이므로 이미지 갤러리는 두 곳 모두에 나타나지 않습니다. –

1

이 세 줄의 코드를 사용하여 필요에 따라 기존 모듈을로드하고 렌더링 할 수 있습니다. 당신이 백 엔드에서 관리하려면

jimport('joomla.application.module.helper'); 
$module = JModuleHelper::getModule('mod_myimagemodulename', 'Images Gallery'); 
echo JModuleHelper::renderModule($module, array('style' => 'xhtml')); 

, 당신은 다른 메뉴 위치 지정과 기존 모듈의 중복을해야합니다. 유일한 제한은 소스 이미지 폴더 인 것 같아서 모듈은 신경 쓸 필요가 없습니다!

** 수정 **

, 당신은 당신이 새로운 위치 싶습니다 어디 템플릿의 index.php에 새 jdoc 요소를 추가해야 "오른쪽"와 같은 새로운 위치를 만들려면 :

<jdoc:include type="moduels" name="right" style="xhtml" /> 
을 이 모듈은 당신이 거기, 당신은 woul 배치 할 복사로 이동하면 이제

<position>right</position> 

: 템플릿에서 다음

매니페스트 XML 파일은 기존 위치의 목록에 새 위치를 추가 d 새로 생성 된 "올바른"위치를 선택할 수 있어야합니다.

** 수정 **

모듈 인스턴스가로드되는 방식에

드러내 뭔가 이름이 모듈 형 이름을 반영해야한다.

$modules = JModuleHelper::getModules('images', 'Images gallery') 

확실히 JRequest에서 마이그레이션하십시오.

+0

나는 이것과 이것에 가까운 몇몇 부호를 시도했다. 그것은 아마 ($ context == 'com_content.article') 기사와의 연결을 잃어 버리는 것 같습니다. 모듈이 모든 페이지에 나타납니다. 그리고 특정 (예 : "오른쪽") 위치로 어떻게 렌더링합니까? –

+0

좋은 질문입니다. 위의 편집을 참조하십시오. –

+0

그 솔루션은 위치 확인을 위해 작동합니다. 이제 가장 중요한 문제입니다. 추가 된 기사에만 이미지/이미지 갤러리를 표시합니다 (새 스크린 샷 참조). 이 코드는 원래 코드에서 작동하지만 내용 (onContentAfterDisplay)과 그 코드가 $ context == 'com_content.article'이면됩니다. 이 코드는 모듈이 특정 위치에서 렌더링 될 때 작동하지 않습니다. 나는 해결책을 찾기 위해 구글을 시도했지만 운은 없다. 아마 올바른 키워드는 아닙니다. 현재 어떤 키워드를 사용해야할지 모르겠습니다. 결코 끝내지 않는 이야기에 대해 유감으로 생각합니다 ... –

관련 문제