No.2160

🌽Re:2158◆補足ですが、複数のスキンを並行して利用しているなど、「適用中のスキン名を維持したリンクを出力する必要がある場合もある」なら、>>2159 で示したように『一時適用中のスキンを維持できるリンクを出力する』項目のチェックを外す方法だと困りますね。その際は、JavaScriptを使って動的にURLを書き換える方法があります。要はリンク先URLの中からスキンを指定している記述(例では skin=skin-twitter )を削除できれば良いのですから、HTMLソースの中で『SSIで埋め込んだ部分』よりも後(重要)に以下のようなJavaScriptソースを書いておくと良いです。
<script>
var targets = document.querySelectorAll("a");
targets.forEach(function(oneTarget) {
var oldHref = oneTarget.getAttribute('href');
var newHref = oldHref.replace('skin=skin-twitter', '');
oneTarget.setAttribute('href', newHref);
});
</script>
このJavaScriptが実行されると、ページ内のすべてのa要素にあるhref属性値の中から「skin=skin-twitter」の文字列が削除されます。その結果、スキン指定を無視してデフォルトスキンで表示されるリンクになります。スキン名の部分(赤色文字)は適宜書き換えて下さい。#🌱豆知識
🌽補足1:
なお、すべてのa要素を対象にするのはちょっと無駄な処理が多いのではないか? と思われる場合には、上記ソースの2行目を、以下のように「class名で対象を限定する記述」に書き換えると良いです。
●ハッシュタグリンクだけを対象にする場合:var targets = document.querySelectorAll(".taglink");
●指定No.へのリンクだけを対象にする場合:var targets = document.querySelectorAll(".postidlink");
🌽補足2:
もしくは、SSIで埋め込んでいる領域を例えば<div class="umekomi">~</div>で囲んでいるなら、この範囲に含まれるa要素だけを対象にするよう以下のように書く方法もあります。
var targets = document.querySelectorAll(".umekomi a");
この方がすべてのリンクを1行で対象にできて、分かりやすくて楽な気もします。
🍿蛇足:
補足というか蛇足ですが、もし「別のスキンを適用した状態」にリンクを書き換えたいなら、5行目のoldHref.replace('skin=skin-twitter', '');部分を、oldHref.replace('skin=skin-twitter', 'skin=skin-sakuratan');のように書き換えれば、skin-sakuratanが適用されたリンクに差し替わります。
4年以上前(水 22:14:09) 回答/返信
- ユーザ「にしし」の投稿だけを見る (※時系列順で見る)
- この投稿と同じカテゴリに属する投稿:
- この投稿日時に関連する投稿:
- この投稿に隣接する前後3件ずつをまとめて見る
- この投稿を再編集または削除する