rate数による表示
そのページを開いた時点でのRate数に応じて表示内容を変更する。ページを開いた後にUVもしくはDVをしても即座に反映される訳ではない(ページをリロードする必要あり)。
構文
本来htmlブロックにListPagesモジュールの内容を組み込む事はできないが%%content{0}%%によってその規制を回避する(これはWikidot構文からhtml構文に変化される際の順序を利用したバグであるが、詳細は割愛)。
ListPagesの設定にseparate="yes"の設定は必須(このバグの仕組みに関係するが割愛)。
ListPagesの設定を変更すると自分の著作したページに対してhal_aki氏の実績を自動付与構文も作成可能。
ListPagesは検索でヒットしたページに応じて構文で設定したフォーマットに則った文章を生成するが、この場合検索したページ数分のhtmlブロックを生成する。つまり、この構文においては、複数ページがヒットした時、その全てのページの情報を1つのhtmlブロックに集約する事は不可能。集約する場合はiframe通信等の技術が必須。
[[module ListPages range="." separate="yes"]] [[%%content{0}%%html]] <style type="text/css"> @import url(http://scp-jp.wdfiles.com/local--files/japanese-syntax/scp-WikidotCss.css); #ratingarea{ height:300px; width:100%; } </style> <script type="text/javascript"> //ここでRate数を変数に格納する var thisrate = %%rating%%; //ページ読み込み後の動作 document.addEventListener("DOMContentLoaded",function(){ //Rate数によって変化するエリアの背景色と文字色 var backgroundC = "#FFF"; var fontC = "#000"; //表示する文字 var innerMessage = "今何のVoteがない"; //Rate数による表示変化 if(thisrate > 0){ //Rate数によって変化するエリアの背景色と文字色 backgroundC = "#AAF"; fontC = "#000"; //表示する文字 innerMessage = "+やで"; }else if(thisrate < 0){ //Rate数によって変化するエリアの背景色と文字色 backgroundC = "#000"; fontC = "#FFF"; //表示する文字 innerMessage = "-やで"; } //Rate数により変化する要素を取得 var displayA = document.getElementById("ratingarea"); //上記の設定を反映 displayA.style.backgroundColor = backgroundC; displayA.style.color = fontC; displayA.innerHTML = innerMessage; }); </script> <!- rate数によって変化するエリア --> <div id="ratingarea"> </div> [[/html]] [[/module]]
page revision: 9, last edited: 04 Feb 2018 07:05