まいった。
必須タグ
商品ページ内の必須タグは2つ。
{ItemAttentionTag}
{IllegalReportTag}
こんな感じで出力される
<p class="attention"> ※この商品は定期便です。毎月1回のお届け予定です。 </p>
<p class="attention"> ※価格は1回分の価格になります。 </p>
<p id="currencyWarning" class="attention"> </p>
<p class="attention">※こちらの価格には消費税が含まれています。</p>
<p></p>
<p class="attention free">※この商品は<span class="free__text">送料無料</span>です。</p>
<p class="attention">※この商品は海外への発送は行なえません。</p>
<a id="openIllegalReport" href="javascript:void(0);" data-url="/illegal_reports/report/****">通報する</a> <div id="irBG" class="irBG"></div> <div id="irContainer" class="irContainer"> <link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css?1666333892">
<script type="text/javascript" src="/js/jcap/md5.js?1666333892"></script>
<script type="text/javascript" src="/js/jcap/jcap.js?1666333892"></script>
<script type="text/javascript" src="/js/jcap/f_jcap.js?1666333892"></script>
<script>
($=>{
var errorFlg = false;
var jcaps = sjcap();
var jfldid = jcaps['jfldid'];
var jfldcls = jcaps['jfldcls'];
var jfldsz = jcaps['jfldsz'];
var imgdir = jcaps['imgdir'];
var imdid = jcaps['imgid'];
$( "#jcap_text" ).attr( 'class',jfldid );
$( "#jcap_text" ).attr( 'name',jfldid );
$( "#jcap_text" ).attr( 'size',jfldsz );
$( "#jcap_text" ).attr( 'id',jfldid );
$( "#jcap_img" ).attr( 'src','/js/jcap/'+decodeURIComponent( imgdir ) + imgid + ".jpg" );
})(__BASE_JQUERY__);
</script>
<style type="text/css">
#colorbox {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
#cap_form{
display: none;
}
.ErrorMessages{
color:#f00;
font-size:10.5px;
}
</style>
<div id="inline_content" style="padding:10px 30px;background:#fff;">
<form action="/items/****" id="x_illegalReportForm" method="post" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST"><input type="hidden" name="data[_Token][key]" value="98d66c35980a7489a36523b5e2651a9d9a0ca01cb7de4e8a8a25bee0865c47b25bbd45eca83191a77d754b68ad965e2621c0345cecefbb434ff9bd505e665c87" id="Token2089672070" autocomplete="off"></div> <input type="hidden" value="****" id="item_id">
<legend>違反商品の通報</legend>
<input type="hidden" name="data[IllegalReport][item_id]" value="****" id="IllegalReportItemId"><div class="input select"><select name="data[IllegalReport][title]" required="required" id="IllegalReportTitle">
<option value="0">商品が法律に違反している</option>
<option value="1">金額が不正</option>
<option value="2">その他</option>
</select></div><div class="input textarea"><textarea name="data[IllegalReport][message]" placeholder="内容をご記入ください。" required="required" id="x_illegalReportMessage" cols="30" rows="6"></textarea></div><a class="btn btn-danger" id="checkSubmit">通報する</a><div style="display:none;"><input type="hidden" name="data[_Token][fields]" value="e1374aa857fc255e71f387b4a23f01ad53423177%3AIllegalReport.item_id" id="TokenFields595836144" autocomplete="off"><input type="hidden" name="data[_Token][unlocked]" value="" id="TokenUnlocked800083496" autocomplete="off"></div></form> <div id="cap_form">
<p class="ErrorMessages">error</p>
<p><input type="text" id="uword" name="uword" class="uword" size="20"></p>
<p><img id="jcap_img" src="/js/jcap/cimg/173.jpg" width="220" height="60" alt="/"></p>
<input class="btn btn-danger" type="submit" onclick="jcap_c();" value="通報する">
</div>
</div>
</div> <style> .irBG{
display:none;
background:rgba(255,255,255,0.85);
width:100%;
height:100%;
position:fixed;
top:0;
left:0;
z-index:10000;
}
.irContainer{
display:none;
background-color:#fff;
border:1px solid #eee;
border-radius:5px;
box-shadow:rgba(179, 179, 179, 0.701961) 0px 0px 6px 4px;
-webkit-box-shadow:rgba(179, 179, 179, 0.701961) 0px 0px 6px 4px;
-moz-box-shadow:rgba(179, 179, 179, 0.701961) 0px 0px 6px 4px;
height: auto;
min-height:310px;
margin:auto;
position: absolute;
right:0; left:0;
width:285px;
z-index:20000;
}
#irContainer #inline_content{
text-align: left;
}
#irContainer select{
margin:0 0 10px 0 !important;
}
#irContainer .btn.btn-danger{
box-sizing: border-box;
color:#fff !important;
font-size:16px;
text-align: center;
text-shadow:none;
text-decoration: none;
margin:10px 0 0 0;
width: 220px !important;
}
#reportMessage{
display: none;
background-color:#fff;
border:1px solid #eee;
border-radius:5px;
box-shadow:rgba(179, 179, 179, 0.701961) 0px 0px 6px 4px;
-webkit-box-shadow:rgba(179, 179, 179, 0.701961) 0px 0px 6px 4px;
-moz-box-shadow:rgba(179, 179, 179, 0.701961) 0px 0px 6px 4px;
font-size: 16px;
font-weight: bold;
height:100px;
line-height: 100px;
text-align: center;
margin:auto;
position: absolute;
top:0; right:0; bottom:0; left:0;
width:700px;
z-index:20000;
} </style> <script> ($=>$(()=>{
if($('#reportMessage').length){
$('#irBG').show();
$('#reportMessage').show();
setTimeout(function(){
$('#reportMessage').fadeOut(300);
$('#irBG').fadeOut(400);
}, 3000);
}
var reportPage = "";
var url = $('#openIllegalReport').data('url');
$.ajax({
type: 'GET',
url: url,
dataType: 'html'
}).done(function(data){
reportPage = data;
}).always(function(){
if (reportPage.includes('<html')) {
// かなしきかな後方互換のための仕様です
// SPの場合は別窓で通報を開きますが、それをこの時点で判別できないので帰ってきた内容がページっぽかったら別窓で開くようにします
// このページを append してしまうと、強い css やらがくっついてくるのでデザインが崩れてしまいます
$('#openIllegalReport').off('click').attr('target', '_blank').attr('href', url)
return
}
$('#irContainer').append(reportPage);
});
$('#openIllegalReport').on('click',function(){
$('#irContainer').css('top',$(this).offset().top-300);
$('#irBG').fadeIn(100,function(){
$('#irContainer').fadeIn(300);
});
});
$('#irBG').on('click',function(){
$('#irContainer').fadeOut(100,function(){
$('#irBG').fadeOut(100);
});
});
}))(__BASE_JQUERY__); </script>
遊び心なのか何なのか、BASEはコメントアウトでお気持ちの入った記述があったりしますね。
要するに注意文の<p>、通報用の<a>が表示される。
あって困るものじゃないのでちょうどいい場所に設置する。
商品URL
なぜかBASEは管理画面上で商品のURLが確認できない。WEB上で商品一覧を設置してないと、個別の商品URLが拾えない。でもまあURLにはルールがあるのでちょっと手を入れたら分かるようになってる。
https://【ドメイン】/items/【商品ID】
【商品ID】は管理画面上の商品編集画面のURLを見たら把握できる。
https://admin.thebase.in/shop_admin/items/edit/【商品ID】
動的なものじゃなく、特定商品へのバナーとかリンクを設置したい場合はこんな感じで。
商品画像の注意点
商品画像は20点まで設置できる。書出はループじゃなく、個別にblockで指定するのでとんでもなくダルい。
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide"><a href="{block:ItemImage1}{ItemImage1URL-origin}{/block:ItemImage1}{block:NoItemImage1}{ItemNoImageURL}{/block:NoItemImage1}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{block:ItemImage1}{ItemImage1URL-origin}{/block:ItemImage1}{block:NoItemImage1}{ItemNoImageURL}{/block:NoItemImage1}" alt=""></a></div>
{block:ItemImage2}<div class="swiper-slide"><a href="{ItemImage2URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage2URL-origin}" alt=""></a></div>{/block:ItemImage2}
{block:ItemImage3}<div class="swiper-slide"><a href="{ItemImage3URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage3URL-origin}" alt=""></a></div>{/block:ItemImage3}
{block:ItemImage4}<div class="swiper-slide"><a href="{ItemImage4URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage4URL-origin}" alt=""></a></div>{/block:ItemImage4}
{block:ItemImage5}<div class="swiper-slide"><a href="{ItemImage5URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage5URL-origin}" alt=""></a></div>{/block:ItemImage5}
{block:ItemImage6}<div class="swiper-slide"><a href="{ItemImage6URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage6URL-origin}" alt=""></a></div>{/block:ItemImage6}
{block:ItemImage7}<div class="swiper-slide"><a href="{ItemImage7URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage7URL-origin}" alt=""></a></div>{/block:ItemImage7}
{block:ItemImage8}<div class="swiper-slide"><a href="{ItemImage8URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage8URL-origin}" alt=""></a></div>{/block:ItemImage8}
{block:ItemImage9}<div class="swiper-slide"><a href="{ItemImage9URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage9URL-origin}" alt=""></a></div>{/block:ItemImage9}
{block:ItemImage10}<div class="swiper-slide"><a href="{ItemImage10URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage10URL-origin}" alt=""></a></div>{/block:ItemImage10}
{block:ItemImage11}<div class="swiper-slide"><a href="{ItemImage11URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage11URL-origin}" alt=""></a></div>{/block:ItemImage11}
{block:ItemImage12}<div class="swiper-slide"><a href="{ItemImage12URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage12URL-origin}" alt=""></a></div>{/block:ItemImage12}
{block:ItemImage13}<div class="swiper-slide"><a href="{ItemImage13URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage13URL-origin}" alt=""></a></div>{/block:ItemImage13}
{block:ItemImage14}<div class="swiper-slide"><a href="{ItemImage14URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage14URL-origin}" alt=""></a></div>{/block:ItemImage14}
{block:ItemImage15}<div class="swiper-slide"><a href="{ItemImage15URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage15URL-origin}" alt=""></a></div>{/block:ItemImage15}
{block:ItemImage16}<div class="swiper-slide"><a href="{ItemImage16URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage16URL-origin}" alt=""></a></div>{/block:ItemImage16}
{block:ItemImage17}<div class="swiper-slide"><a href="{ItemImage17URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage17URL-origin}" alt=""></a></div>{/block:ItemImage17}
{block:ItemImage18}<div class="swiper-slide"><a href="{ItemImage18URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage18URL-origin}" alt=""></a></div>{/block:ItemImage18}
{block:ItemImage19}<div class="swiper-slide"><a href="{ItemImage19URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage19URL-origin}" alt=""></a></div>{/block:ItemImage19}
{block:ItemImage20}<div class="swiper-slide"><a href="{ItemImage20URL-origin}" data-lightbox="simple-group" data-title="" data-alt=""><img src="{ItemImage20URL-origin}" alt=""></a></div>{/block:ItemImage20}
</div>
</div>
登録した画像の枚数を出力できるタグがある。
{ItemImageCount}
出力できるのは良いんだけど、BASEには条件分岐がない。
つまりどういうことか。
「1枚だったら普通に表示、2枚以上だったらスライドを設置」ができない。
1枚だけ設置しても耐えられるスライダーを設置するしかない。
条件分岐で動作させるならjsと組み合わせるしかない。
swiperはサムネを設置するにはサムネ用のスライダーを作らなきゃいけないし、そのあたりのケアなんて考えただけでもめんどくさすぎる。
諦めるか、ガッツで乗り越えるか、試される。
コメント