モジュール・トーク:Infobox

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

9行目の「labelstyle = 'text-align:left;'..labelstyle」のところに「white-space:nowrap」をデフォルトで入れたほうがいいんじゃないかなぁ、と思ったり。多くの記事で崩れているんですよね....。例えばこの記事だと「市場情報」「本社所在地」「外部リンク」が折れ曲がってしまっています。

他に、気になったこと2点。

  • {{基礎情報 会社}} では、引数「labelstyle」に「text-align: right;」が指定されているのですが、結果として各記事に出力されるソースは「text-align: left; text-align: right;」という凄いものになっていますね。。。ま、これはこれで完成された設計といえるかもしれませんが。
  • 基礎情報系テンプレートは、{{Infobox}} を使ったものと {{Sidebar}} を使っているものが混在しているんですね。。。。ややこしい。。。---謎の管理者もどき BadEditor 2023-04-08T18:59:41 (JST)
    • nowrap については賛成。
    • Infobox と Sidebar 問題について。少し前はこの2テンプレートに加えて table を使ったのも結構ありましたね。今もサッカー関連テンプレートには結構残ってます(ex.{{サッカー選手}})。本来ならメンテナンス性を考えて {{Navbox}} のように早い段階で絞っておくべきだったのでしょうが、ここまで広がってしまうともうやり直すのもなかなか厳しい...。--Written By 360度 (Talk) 2023-04-08T19:17:23 (JST)
      • 「それもまたEnpedia性」とでも嘯くしかないですな....---謎の管理者もどき BadEditor 2023-04-09T23:30:54 (JST)

【@かにふとんさん、悼む人さん】nowrap についてどう思われますか。ご意見頂戴できれば幸いです。---謎の管理者もどき BadEditor 2023-04-09T23:30:54 (JST)

  • まず前提として、手を入れるならインラインスタイルじゃなくてcommon.css移行とセットでお願いします(テンプレートのスタイルをcommon.cssに書かない縛りが解除されたので)。んで、一律nowrapにしてしまうとlabelに長文書かれた際に収拾つかなくなるので、width指定で制御したいような気もします。--かにふとん (トーク) 2023-04-09T23:46:42 (JST)
    • すいません、common.cssとセットにする場合、モジュールはどういう風にいじればいいんでしょうか?
    • label に長文が書かれること自体が望ましくない設計だと思いますが........デフォルトは nowrap にしておいて、どうしても長文を書きたい場合(あるの?)だけ、個別テンプレートの設定で「打ち消す」というのがいいんじゃないかと思いました。---謎の管理者もどき BadEditor 2023-04-10T00:17:14 (JST)
      • 1点目についてはインラインでstyle=""と書いてるところを全部class=""に変えればおkです。--かにふとん (トーク) 2023-04-10T08:12:07 (JST)

かなり悩みましたが、最終的にはかにふとんさん言及のように、ラベルに一定のwidthを与える方法が良いと思いました。

ぺちゃんこラベルを押し潰す勢いの長文データラベルを押し潰す勢いの長文データラベルを押し潰す勢いの長文データ

解放されたラベルを押し潰す勢いの長文データラベルを押し潰す勢いの長文データラベルを押し潰す勢いの長文データ
データを押し潰す勢いの長文ラベルデータを押し潰すこの場合も対応可能

white-space:nowrap;を打ち消すには、white-space:normal;に上書きするような指示を、Infobox継承テンプレ内に書いて回らなければなりません。それはちょっと手間かな~というのと、個人的に長いラベルもEnpediaっぽくてアリかなと感じたので。まあ、nowrapでも私は全然止めやしません。--悼む人 (トーク) 2023-04-11T00:02:45 (JST)

とりあえず th に width:7em を設定しました。これでおかしかったらまた考えましょう。Common.css に移す必要はないんじゃないですかね。誰でもいじれた方が便利だと思いますし、いま設定されている多くのインラインスタイルのうち、どこからどこまでを移管すればいいのかもよく分かりませんし...。{{Highlighter}} は JS で事後的にスタイルを変える都合でクラスを設定した方が便利なので設定しましたが、Infobox のような静的な表示はクラス化するメリットが特にないと思います。---謎の管理者もどき BadEditor 2023-04-11T09:43:32 (JST)
ん?待てよ。これってモジュールに width を与えるんじゃなくて、個別のテンプレに width を与えればいいんじゃねーの、って話ですかね。---謎の管理者もどき BadEditor 2023-04-11T12:15:58 (JST)
私はモジュールにwidthを与えるものだと思ってました。--悼む人 (トーク) 2023-04-11T19:17:36 (JST)

修正できる人求む[編集]

名前が不必要に繰り返して表示されるのを直せる方はいらっしゃいませんか?

例えば「石塚瑶季」の記事でいうと、枠外に「いしづか たまき/石塚瑶季」という表記があり、さらに枠内にもう一度「石塚瑶季」という表記があります。この3番目の名前の表示は不要でしょう。

このモジュールの12~15行目あたり(下記)が悪さをしていると思うのですが、私がLuaモジュールに詳しくない、および、このモジュールの影響範囲が大きすぎることもあり、どう直していいものか分かりかねます。

else
	datastyle = 'text-align:center;'..datastyle
	return '<tr><td colspan="2" style="'..datastyle..'">'..data..'</td></tr>'
end

どなたかよろしくお願いします。-- BadEditor 2024-10-02T21:24:47 (JST)

  • の「石塚瑶季」は画像キャプションだと思います。試しに{{女性アイドル}}の以下の行――{{Infobox}}に投げているcaption引数
 |caption = {{ #if: {{{画像コメント|}}} | {{{画像コメント}}} | {{ #if: {{{アイドル名|}}} | {{{アイドル名}}} | {{PAGENAME}} }} }}
を消してプレビューすると、枠の名前だけ消えます。当初、私は↑行を
|caption = {{ #if: {{{画像ファイル|}}} | {{ ifempty | {{{画像コメント|}}} | {{{アイドル名|}}} | {{PAGENAME}} }} |}}
のように修正しようと考えましたが、これだと{{女性アイドル}}のみの名前重複の解消となるため、根本解決とは言えない気がします。
真の原因は、このモジュール内の下記コード部分です。ここでは、画像キャプションが指定されていたら必ず表示されるロジックになっています――画像ファイルが指定されていなくてもです。
local data = args['caption'] or args['caption1'] or ''
local datastyle = args['captionstyle'] or ''
line = line..row('', '', data, '', '', datastyle)
流石に画像なしに画像キャプションだけ書きたい人は居ないと思うので(というかただのdatan引数を使えばいいので)、上記コードを
if (args['image'] or args['image1'] or '') ~= '' then -- 画像ファイルが指定された場合のみ、画像キャプション行追加
  local data = args['caption'] or args['caption1'] or ''
  local datastyle = args['captionstyle'] or ''
  line = line..row('', '', data, '', '', datastyle)
end
で上書き、また2個目の画像キャプションも同様に
local data = args['caption2'] or ''
local datastyle = args['captionstyle'] or ''
line = line..row('', '', data, '', '', datastyle)
if (args['image2'] or '') ~= '' then -- 2番目の画像ファイルが指定された場合のみ、2番目の画像キャプション行追加
  local data = args['caption2'] or ''
  local datastyle = args['captionstyle'] or ''
  line = line..row('', '', data, '', '', datastyle)
end
で上書きして解決でいいかと思います。これでcaptionに何か投げられても、imageへの指定がないとキャプションも非表示になります。{{Sidebar}}もそのようなロジックで運用されています。
画像&キャプション両方指定あるSidebar
画像募集中.png
キャプションキャプションキャプションキャプションキャプション
画像はないけどキャプションが指定されたSidebar
また、{{女性アイドル}}などを個別に修正する必要はなくなります。
あと「row関数を呼び出しても、第7引数にfalseが渡されたら行は生成されない」みたいに実装する方法もありますが、分かりやすさを考えるとrow関数内はノータッチでいいかと思います。
以上提案に何かミスがあれば再考、問題があれば改案別案も良いとは思いますが、どうでしょうか。
--悼む人 (トーク) 2024-11-18T07:00:25 (JST)
ありがとうございます!!! これで解決できそうですね。(にしても、Infobox と Sidebox の混合状態は紛らわしい・・・・)-- BadEditor 2024-11-18T10:29:33 (JST)