No.2509

てがろぐCGIには「続きを読む」ボタンのラベルを変更する設定機能がありますが、すべての「続きを読む」ボタンのラベルが一括で変わります。そのため、そのままでは『普段は「続きを読む」という設定にしておいて、ある記事だけ「ネタバレ」などに個別に変更する』といったことはできません。しかし、「続きを読む」ボタンそのものを文字装飾の範囲内に含められる仕様がありますから、これとJavaScriptを併用すれば、「続きを読む」ボタンのラベルのバリエーションを複数用意することもできそうです。
長いので折りたたんでおきます。➡
▼投稿時の工夫
まず、「続きを読む」ボタンを、何らかの文字装飾の内側に書きます。
例えば、 [B:太字の[H:内側を隠す]感じです。]
このようにすると、<b class="decorationB">太字の<a class="readmorebutton readmoreopen" ……>続きを読む</a>~ のような感じでHTMLが出力されます。
▼ラベルを変えるJavaScript
なので、JavaScriptを以下のように書けば、『太字装飾の内側にある「続きを読む」ボタン』に限定して、ラベルを変更できます。
const readMoreBtn1 = document.querySelectorAll(".decorationB .readmoreopen");
readMoreBtn1.forEach(function(oneItem) {
oneItem.innerHTML = 'ネタバレ';
});
上記のJavaScriptソースを、外側スキンの末尾(</body>タグの直前あたり)に書いておけば、『太字装飾の内側にある「続きを読む」ボタン』はすべて「ネタバレ」というラベルに変わると思います。
※上記のJavaScriptソースの記述位置は、必ず「ページの末尾」でないとうまくいかない点にご注意下さい。(対象のHTMLをすべて読んだ後に実行しないと意味がないからです。)
▼ラベルのバリエーションを追加する場合は
デフォルトの「続きを読む」、バリエーション1「ネタバレ」以外にもいくつかのバリエーションを用意したい場合は、『斜体装飾の内側』とか『下線装飾の内側』などの装飾を使うと良いでしょう。
『斜体装飾の内側』を使う場合は、
const readMoreBtn2 = document.querySelectorAll(".decorationI .readmoreopen");
readMoreBtn2.forEach(function(oneItem) {
oneItem.innerHTML = 'つぼやき';
});
などのように書くと良いでしょう。
▼たぶんこれが一番良い?
ボタンのラベルや隠された範囲全体が太字や斜体などに装飾されてしまうのを避けたい場合は(たいてい避けたいでしょうね^^;)、既定の文字装飾ではなく自由装飾機能 [F:hogehoge:~] を使うと良いと思います。
例えば、[F:netabare:[H:ここにネタバレ]~] のように投稿するなら、ここの「続きを読む」ボタンのラベルだけを「ネタバレ」に変更するには、以下のJavaScriptソースを書いておけば良いでしょう。
const readMoreBtn3 = document.querySelectorAll(".deco-netabare .readmoreopen");
readMoreBtn3.forEach(function(oneItem) {
oneItem.innerHTML = 'ねたばれ';
});
※自由装飾でclass名を「netabare」と指定した場合、実際のHTMLに出力されるclass名は「deco-netabare」になる点にご注意下さい。
#🌱豆知識 畳む 3年以上前(土 23:44:27) 情報
- ユーザ「にしし」の投稿だけを見る (※時系列順で見る)
- この投稿と同じカテゴリに属する投稿:
- この投稿日時に関連する投稿:
- この投稿に隣接する前後3件ずつをまとめて見る
- この投稿を再編集または削除する