2013-08-09 2 views
3

Ok 이것은 모든 종류의 문서에서이 참조를 찾을 수 없으므로 물어봐야 할 것입니다. 실제 코드를 읽고 독서의 가장 좋은 방법을 찾아야합니다. 이것은 훨씬 오래 걸리고 소비하기를 원할 것입니다.joomla com_user는 com_categories 및 com_content와 유사하게 확장됩니다.

기사 관리자를 입력 할 때 범주 관리자에 대한 탐색 링크가 있으며 반대의 경우도 마찬가지입니다. 내 구성 요소 및 기본 사용자 관리자와 비슷한 것을하고 싶습니다.

내 필요에 맞게 사용자를 확장 할 수있는 프로필 플러그인이 이미 있지만, 구성을 원활하게 조정하여 com_user 구성 요소를 조정하면 원하는 구성 요소를 더 잘 통합 할 수 있습니다.

제 질문은 com_content 및 com_categories에서 "확장명"매개 변수를 사용하는 것입니다. com_users의 전체 코어 재 지정없이 유사한 기능을 추가 할 수 있습니까? 전체 무시를하면 사용자 의존으로 인해 확장 기능이 작동하지 않을 수 있습니다.

나는 무엇이든지 이해가되지 않으면 기꺼이하겠다.이 질문은 오버라이드없이 줌라를 "확장"할 수있는 정도를 더 많이 볼 수있다.

업데이트 : 그래도 멋진 기술, 꽤 대답을 발견

. 구성 요소에서 목록 컨트롤러/모델 /보기 만 재정의 할 수 있으며, 현재 com_users 구성 요소의 기반으로 설정 한 경우 직접 통합으로 보이게 할 수 있습니다. 당신이해야 할 일은 사용자보기에 대한 경로가 구성 요소로 전달되도록하는 것입니다.

그러나 한 가지 문제가 있습니다. 새 사용자를 추가하거나 편집 할 때 한 번 끝나면 주 사용자 관리자에게 연결됩니다. 시스템 플러그인이 도움이 될 수 있지만 사용자 관리자가 아닌 구성 요소를 통해 사용자가 편집 된시기를 감지하는 신뢰할 수있는 방법이있는 경우에만 가능합니다.

참고 : 사용자보기에 재정의를 추가 할 때 문제가되는 것은 다른 MVC 구성 요소가있는 5-6 개의 MVC 구성 요소가 있다는 것입니다. 따라서 핵심 com_users 업데이트로 쉽게 업데이트 할 수 있도록하려면 가능하다면.

com_users의 언어 파일을 찾고 모든 항목을 구성 요소에 추가해야합니다.

더 좋은 답변이 아직 있을지 모르지만이 방법으로 코어에 많은 영향을 미치지 않으며 com_users에 대한 업데이트로 업데이트하기가 쉽습니다.

나는 이것에 현상금을 벌고있다, 나는 이것이 지역 사회에 최대 이익을 가질 것 인 질문이다라고하는 모든 질문에서 내가 느낀다. 그래서 여기에 압축 된 버전의 질문이 있습니다.

코어 구성 요소를 사용자 지정 구성 요소에 쉽게 통합하고 코어 구성 요소를 최소한으로 편집하면서 해당 구성 요소를 원활하게 라우팅 할 수있는 방법은 무엇입니까?

답변

1

난 당신이 원하는 것을 정확히 명확하지 않다하지만 com_content이 같은 도구 모음 하위 메뉴의 얘기를하는 경우 :

com_content submenu

예를 당신이 카테고리의 제공 (즉,com_categories)은 확장 식별자 (extension=com_mycomponent)를 사용하여 com_catgories에 대한 링크를 전달할 수있는 특정 지원이며 확장에 대한 사이드 바 메뉴를로드합니다. 이것은 핵심 범주이므로 여러 구성 요소간에 공유 할 수 있습니다 [see Add Categories].

당신은 당신이 일반적으로이 당신의 확장에 주요 도우미 파일에 넣어 JHtmlSidebar::addEntry($title, $link, $active);

를 호출 할 수있는 구성 요소 관리자보기에 사이드 바 메뉴를 추가하는 방법을 알고 싶다면 당신은 이미 다음 사항을 수 있지만, addSubmenu($vName)이라는 기능 (&인데 com_categories은 툴바 하위 메뉴를 표시합니다). sidebar이 이전 버전의 Joomla에서 도구 모음 하위 메뉴로 변형되어 있기 때문에 그 이름은 addSubmenu()입니다.

하나는 기본적으로 발견되지 않는 경우이는 com_categories 도우미 클래스 CategoriesHelper가 호출 확장 코어 헬퍼 클래스를 찾습니다 매우 다른 addSubmenu() 방법을 (가지고 비교하여 administrator/com_content/helpers/content.php

/** 
* Configure the Linkbar. 
* 
* @param string $vName The name of the active view. 
* 
* @return void 
* @since 1.6 
*/ 
public static function addSubmenu($vName) 
{ 
    JHtmlSidebar::addEntry(
     JText::_('JGLOBAL_ARTICLES'), 
     'index.php?option=com_content&view=articles', 
     $vName == 'articles' 
    ); 
    JHtmlSidebar::addEntry(
     JText::_('COM_CONTENT_SUBMENU_CATEGORIES'), 
     'index.php?option=com_categories&extension=com_content', 
     $vName == 'categories'); 
    JHtmlSidebar::addEntry(
     JText::_('COM_CONTENT_SUBMENU_FEATURED'), 
     'index.php?option=com_content&view=featured', 
     $vName == 'featured' 
    ); 
} 

에 정의 된 ContentHelper 클래스의 addSubmenu() 방법 ~ com_content).

그래서 당신은 아마 onAfterRoute를 발생하고 구성 요소가 extension=com_myextension처럼, 적절한 매개 변수를 제공했는지 여부를 귀하의 하위 메뉴 항목을 기반으로 추가하는 시스템 플러그인을 만들어야합니다 com_users에 그런 어떤 지원도 없다. 약간의 변화가있을 수 있지만 작동해야합니다. 구성 요소가 전달되기 전에 하위 메뉴 항목을 추가하는 것만 큼 새로운 하위 메뉴 항목은 항상 com_users 하위 메뉴의 첫 번째 항목이되고 싶습니다. com_categories와 같은 완벽한 대체품이 아닙니다.

불행히도 com_users에는 전체 사이드 바 메뉴를 뒤집는 데 도움이 될만한 트리거가 없습니다.

다음 옵션은 자신의 대체 버전을 생성하여 Donald Gilbert's gist to create a system plugin that allows you to override any core class과 같은 것을 사용하는 것입니다. 중요한 업데이트에는 문제가 있지만 분명히 특정 상황에 맞게 재정의를 제한 할 수 있습니다.

/충분하지 그게 과잉는 지적이 자사의 브라우저에 반환하고 HTML을 해킹하기 전에 페이지를했을있는 onAfterDispatch에 응답하는 시스템 플러그인을 시도 할 수 있지만, 그게 아주 추하고하는 경향이있을 경우 사용자가 관리자 템플릿을 변경하면 문제가 발생합니다.

물론 나는 완전히 잘못 될 수 있으며 3.x에서 더 좋은 방법이 될 수 있습니다. 어쩌면 다른 사람이 전화를 걸 수도 있습니다.

+0

그 이유는 내 구성 요소가 사용자와 직접 통합되므로 구성 요소와 사용자간에 이동할 수있는 능력이 필요하다는 것입니다. 이것은 아마도 내 상황에 도움이되지는 않지만 확장 기능의 기능에 대한 아주 명확한 설명이므로 엄지 손가락을 올려주세요! –

+0

사용자가 확장 프로그램의 탭으로 광고를 보려고하는 다른 확장 프로그램의보기가있는 탭을 추가하기 만하면됩니까? 나는 당신이 원하는 것을 조금 혼란 스럽다. – Elin

+0

사용자 관리자에게 가서 내 사용자 정의 내에서 사용하고자하는 "보기"를 클릭하면, 많은 사용자 부가 기능을 처리한다. 그것을 합리화하는 것이 매우 편리 할 것입니다. 나는 이미 일종의 재정의 (override)를했는데 작동하지만, 저장시 (내 "사용자"보기만을 "사용자"목록보기로 라우팅하지 않기 때문에) 내 구성 요소로 다시 라우팅하는 데 문제가 있습니다. –

관련 문제