Wikipedia:井戸端/subj/ポータルでスタイルシートを使えないか?

ポータルでスタイルシートを使えないか?[編集]

ポータル名前空間でページごとに個別にスタイルシートを使う方法はないでしょうか? または、どこかでスタイルシートについて既に話し合われていますか? 何も無かったら、検討して頂けると良いなと思いましたので。--草薙 2009年2月12日 (木) 02:53 (UTC)[返信]

たとえばPortal:漫画なら、bodyタグに以下のようなクラス指定がされています。
<body class="mediawiki ltr ns-100 ns-subject page-Portal_漫画 skin-monobook">
ポータル名前空間で共通のCSSを使用する場合は .ns-100 が使えますし、特定のページのみCSSを適用したいなら .page-Portal_漫画 に対しスタイル指定すればOKです。ただ、各自ユーザCSSを編集する分には大丈夫ですが、MediaWiki:Common.css などを特定のページのために編集することはあまり現実的とは言えないかも知れません。--cpro 2009年2月12日 (木) 04:50 (UTC)[返信]
どういう意図で使いたいかって言うと、ポータルのデザインに使いたいって事で、スタイルシートだけのページを別に作成してそれをポータルに読み込ませる形で使えればベストだなと思っています。ユーザースタイルシートにクラスを書き入れてプロパティを指定するのとは違って、見る人全員に適用されるもの――結局、ポータルで現在行なわれているタグ+style(<h2 style="font-size:~~">タイトル</h2>のような)というページの構成から、マークアップはタグのみで、各種スタイルについては外部スタイルシートの読み込みに変更できないかなって言う話です。MediaWikiが絡むのでやはり難しいところでしょうか。Common.cssみたいな大規模に適用されるものじゃなくて、ポータル1ページ単位で適用されるCSSが使えれば、それで良いんですけれど。ポータルについては所定の方法でCSSのページを作成してポータルに関連付ければ、適用できるような実装があれば、デザイン系のテンプレートも要らなくなると思います。--草薙 2009年2月12日 (木) 05:32 (UTC)[返信]
あまりお勧めというわけではありませんが、技術的情報提供です。
ウィキペディア日本語版のシステムで用意されているimportStylesheetというJavaScriptの関数があり、例えば「Portal:○○/common.css」というページを用意して、MediaWiki:Common.jsで「if(wgPageName == 'Portal:○○'){importStylesheet('Portal:○○/Common.css');}」というようにすれば、ご希望のことが実現できます。
ただし、この方法は、(1)あまり厳密な検証はしていませんが、「Portal:○○/Common.css」の読み込みが少し遅れるため、ページが表示されてから「Portal:○○/Common.css」が適用されるまでにタイムラグがあり、表示が乱れる、(2)CSSが有効であってもJavaScriptが有効でない環境だと、「Portal:○○/Common.css」が適用されない、といった問題があります。この二つの問題点を分かった上でそれでもやりたいというのであれば、MediaWiki:Common.jsにこのコードを埋め込んでも良いように思います。--mizusumashi月間感謝賞を応援します) 2009年2月12日 (木) 10:37 (UTC)[返信]
崩れるという問題点は、タグの構成がしっかりしていればそんなに問題にはならないはずです。common.cssが邪魔になりそうではありますが。ただ、埋め込む場合は使うページの名前をcommon.jsに毎回個別に組み込む必要があるんでしょうか? だとしたらかなり面倒ですよね。そうではなく、Portalと名のつくページならどこでも特定の名前を持つスタイルシートを作成すればそれが適用されるように設定できるなら、やってもらう価値はあるだろうと思います。JavaScriptを使って複数のスタイルを切り替えられるサイトもありますし、JavaScriptで使う方法しか考えられないならそれでも構わないという考えでいます。本格的にやるならやはりPortal名前空間の機能の見直しを図ってもらった方が良さそうな話ではありますけど、回答ありがとうございました。--草薙 2009年2月13日 (金) 05:07 (UTC)[返信]
(追記)利用者の登録をした後特定名のcssページを作るとそれが適用されるように、Portal名前空間にもcommon.cssとは別に特定名のcssファイルを読み込む設定を追加しておき(これをJSでやるのが上述の方法でしょうけど)、それが作成されると読み込まれるようにしてもらえれば、それが一番だと思います。具体的にはPortalページのheadタグ内に<link rel="stylesheet" href="./portal.css">の一文がJavaScript無しで自動挿入される設定になれば一番ですね。--草薙 2009年2月13日 (金) 05:17 (UTC)[返信]
JavaScriptを使うのではなく、現在のMediaWiki自体の機能としてできるのかどうか、私はとくに情報を持っていません。できない場合、そのような機能拡張は開発者・サーバー管理者の作業になるので、Bugzillaか、メーリングリストwikitech-l@lists.wikimedia.orgに依頼することになるでしょう。また、もし、そういった機能がすでにあるならば、すぐに教えてもらえると思います(「JavaScript使え」といわれるかも知れませんが… それはそれで、開発者の考えが分かるので、よしとすべきでしょうか)。
(なお、JavaScriptを使う方法でも、「Portalと名のつくページならどこでも特定の名前を持つスタイルシートを作成すればそれが適用される」ということを実現するコードを書くこともできます。)--mizusumashi月間感謝賞を応援します) 2009年2月13日 (金) 09:37 (UTC)[返信]
お手数ですが機能拡張の面でも問い合わせてもらえるでしょうか。よろしくお願いします。コードでもできるんですね。--草薙 2009年2月13日 (金) 10:23 (UTC)[返信]
申し訳ありませんが、草薙さんご自身で依頼されるか、私以外の方に依頼してもらうことはできないでしょうか。Bugzillaやメーリングリストwikitech-l@lists.wikimedia.orgで、開発者・サーバー管理者に依頼したり、提案したりということには、権限や資格は必要ないので誰にでもできます(ただ、たぶん建前では言語を問わないのだと思いますが、現実的には英語で依頼・提案・交渉などを行うことになります)。--mizusumashi月間感謝賞を応援します) 2009年2月13日 (金) 11:03 (UTC)[返信]
mizusumashiさんの利用者ページを見てなるほどなと思いましたけど、管理者の権限を持っている事を理由に頼んだ訳ではないので、そこは誤解なさらないでください。報告してくれる親切な人が他にいなければ、日本語と併記して頼む形でもとろうかと思います。--草薙 2009年2月14日 (土) 17:15 (UTC)[返信]