0

ベクターに基づいて、mediawiki 用のカスタム スキンを作成しました。記事、編集、履歴、およびアクションを表示する VIEWS タブが上部にあります。このタブとは別に、ページの右上隅に表示する新しい「この記事を編集」ボタンを追加しようとしています。このボタンに編集 URL を追加する方法がわかりません。現時点では、次のようにハードコーディングしました。

<a class="edit_article_button" href="?action=edit" title="Edit This Article">Edit Article</a>

上記のハードコードされた方法は良くなく、すべてのページで適切に機能するとは限りません。また、編集ボタンをセマンティック フォーム拡張のフォーム ボタンで編集するように変更すると、互換性がなくなります。関連する mediawiki 記事で機能するこの編集ボタンにデフォルトのリンクを追加する方法はありますか? スキンを見てみると、renderNavigation 関数の一部として編集ボタンが表示されていますが、履歴などを含むすべてのリストが表示されるため、これは適切ではありません..:

<?php $this->renderNavigation( array( 'VIEWS' ) ); ?>

これは私が問題を抱えており、それを行う方法に関する情報を見つけることができない場所です. 別の [記事を編集] ボタンを作成する方法について誰か助けてもらえますか?

編集と進行状況の更新:

わかりました...これは、どのように追加できたかに関する最新情報です。renderNavigation 関数に以下を追加したところ、機能しました。

    case 'EDIT':
            $navTemp = $this->data['content_actions']['edit'];
            if ($navTemp) { ?>
                    <a href="<?php echo $navTemp['href']; ?>" class="custom_edit_button" title="Edit This Article"><?php echo $navTemp['text']; ?></a>
            <?php } 
            break;

そして、htmlテンプレート内でこれを使用して呼び出しています:

         <?php $this->renderNavigation( array('EDIT')); ?>

また、「custom_edit_button」の css を追加して、ボタンのスタイルをさらに設定しました。

セマンティック フォームを使用する場合の次のハードル:上記の方法は機能しますが、[フォームで編集] ボタンの代わりに [ソースを編集] ボタンが表示されます。ソースの編集オプションではなく、その記事にフォームが存在する場合、実際には「フォームで編集」オプションを表示したいと思います。私はすでにLocalSettings.phpにこれを持っています

 //The following settings are to edit the edit with form options and removing the default edit option.
 $sfgRenameEditTabs = true;

$wgGroupPermissions['*']['viewedittab'] = false; // Hiding the regular edit tab for all users
$wgGroupPermissions['sysop']['viewedittab'] = true; //Showing the regular edit tab (renamed to edit source) to sysops only.

さて、フォームが存在するときに「フォームで編集」ページにリンクするように上記のphpコードを変更するにはどうすればよいですか?

4

1 に答える 1

0

https://www.mediawiki.org/wiki/Extension:Semantic_Forms/The_%22edit_with_form%22_tabには、編集タブを希望どおりに表示する方法に関する多くの情報があります。

それでも、SemanticForms 拡張機能は、SkinTemplate::buildContentNavigationUrls() で呼び出される SkinTemplateNavigation フックを使用しているように見えるので、その関数をオーバーライドしていないことを確認してください。

于 2013-08-26T19:57:21.237 に答える