MediaWiki Расширение вопрос / предложение - PullRequest
2 голосов
/ 04 октября 2010

Полный новичок здесь.Я хочу создать новую вкладку на каждой странице, которая имеет настраиваемое действие.При нажатии вы переходите на новую страницу, на которой есть собственный HTML-код вместе с текстом или оригинальной статьей.

До сих пор я мог создать новую вкладку и мог назначить ей пользовательское действие mycustomaction,Я вставляю то, что я сделал здесь до сих пор.Пожалуйста, дайте мне знать, если я использую правильные хуки и т. Д. И какой лучший способ добиться этой основной функциональности.

Пока что с их документами я сделал это:

#Hook for Tab
$wgHooks['SkinTemplateContentActions'][] = 'myTab';

#Callback
function myTab( $content_actions) {
      global $wgTitle;
      $content_actions['0'] = array(
          'text' => 'my custom label',
          'href' => $wgTitle->getFullURL( 'action=mycustomaction' ),
      );      
      return true;
 }

#new action hook
$wgHooks['UnknownAction'][] = 'mycustomaction';

#callback
function mycustomaction($action, $article) {
    echo $action;                                                                                                
    return true;
}

Это дает мне ошибку:

Нет такого действия

Действие, указанное в URL, недействительно.Возможно, вы неправильно набрали URL-адрес или перешли по неверной ссылке.Это также может указывать на ошибку в программном обеспечении, используемом yourplugin

1 Ответ

1 голос
/ 13 октября 2010

Что я делал не так:

$content_actions[‘0’] должно быть просто $content_actions[] (незначительный придирки)

$content_actions передается по ссылке, это должна быть функция myTab( &$content_actions ) {}

mycustomaction() должен что-то сделать в соответствии с

if ( $action == ‘mycustomaction’ ) { 
  do stuff; return false; 
} 
else { 
  return true; 
}

Следует использовать $wgOut->addHTML() вместо echo

Большое спасибо всем за помощь!

...