wiki-chan / ModernSkylight

Modern skin for Mediawiki Engine
BSD 2-Clause "Simplified" License
11 stars 7 forks source link

대문에서 사이드바 없애는 법이요 #12

Closed korea787s closed 7 years ago

korea787s commented 7 years ago

hook이란 것을 어떻게 하는 지 알려주세요...

wiki-chan-server commented 7 years ago

Hook에 대한 것은 미디어위키 Hook 매뉴얼을 참조하시기 바랍니다. 대문에서 사이드바를 없애려면, 대략 다음과 같은 코드로 가능할 것입니다. (주의: 테스트되지 않은 코드입니다)

public static function onRightSidebar( $c_page, $c_namespace, $c_mainpage, &$use_sidebar ) {
    if ($c_page === $c_mainpage) $use_sidebar = false;
    return true;
}
$wgHooks['ModernSkylightUseRightSidebar'][] = 'MyExtensionHooks::onRightSidebar';
korea787s commented 7 years ago

답변해주셔서 감사합니다. 그 코드를 modernskyligth.php에 넣는건가요?

wiki-chan-server commented 7 years ago

아니요. 직접 익스텐션을 만드는 경우의 코드입니다.

혹시 익스텐션을 새로 만드는 것이 부담이 된다면, LocalSettings.php에 넣는 방법도 있습니다. 이 경우에는 익스텐션이 아니므로 함수를 public function으로 선언해야 하고, 클래스 선언이 없으므로 $wgHooks에 추가하는 문자열도 단순히 onRightSidebar 처럼 앞에 :: 연산자를 제거한 채로 넣어야 하겠지요. 특히, onRightSidebar 라는 함수명은 다른 곳에서 중복되어 사용될 가능성이 있으니 필요한 대로 함수명을 변경해야 할 것입니다.

Hook을 이용한 설정은 Mediawiki 프로그래밍에 익숙하지 않은 경우에는 불편한 것이 사실입니다. 필요하시다면 주변에 프로그래밍이 가능한 분들에게 조언을 구하는 것을 추천합니다. 또한, 차기 버전에서는 LocalSettings.php 파일에 설정값을 통해 간단하게 설정할 수 있도록 하는 것을 고려해 보겠습니다.

korea787s commented 7 years ago

귀찮게 해서 정말 죄송하고, 답변에 정말로 감사드립니다!! 모던스카이라이트 스킨은 정말 최고입니다.