youtube等をiframeで入れ込んだ時にレスポンシブ対応にする方法
参考:http://mae.chab.in/archives/2527
youtubeでなくてもいいけど、基本iframeタグは幅と高さを指定する。
<iframe width="500" height="300" ...></iframe
ただしこのままだと、500px×300pxがスマホでも確保されるため、横スクロールが発生することになる。
その対応。
HTML
<div class="wrap_youtube"> <iframe width="560" height="315" src="https://www.youtube.com/embed/HIOooL-vXeQ" frameborder="0" allowfullscreen></iframe> </div>
@media screen and (max-width: 560px) { .wrap_youtube { position: relative; width: 100%; padding: calc(315 / 560 * 100%) 0px 0px 0px; } .wrap_youtube iframe { position: absolute; top: 0px; left: 0px; width: 100%!important; height: 100%!important; } }
paddingの算出にcalcを使うので、CSS3限定になるけれど、まぁ対応ブラウザは最新だけでいいや、という人ならこれで問題ないかと。
アメブロにiframeタグを入れる
禁止タグとして設定されているため、記事本文等にiframeタグは使えない。それを使えるようにする方法。
参照 http://ameblo.jp/wazameba/entry-10736090264.html
1.フリープラグインに以下のソースを記述する。
<script src="http://www.google.com/jsapi"></script> <script>google.load('jquery','1')</script> <script>!function(e){e(function(){e(".createTag").each(function(a,c){var r=e(c).html();r=r.replace(/[\r\n]/g,""),r=r.replace(/(^.*?\<\!\-\-\s*|\s*\-\-\>.*?$)/g,""),r=r.replace(/\{\}/g,""),r=r.replace(/\{.\}/g,""),r=r.replace(/\{[^\*].*?[^\*]\}/g,""),r=r.replace(/\{\*/g,"{").replace(/\*\}/g,"}"),r=r.replace(/\<\[/g,"<").replace(/\]\>/g,">"),e(c).empty(),e(c).append(r)})})}(jQuery);</script>
2.本文に以下のようにタグを入れる
<div class="createTag"><!--<[iframe src="http://www.yahoo.co.jp" width="420" height="500" frameborder="0" style="border:none;"]><[/iframe]>--></div>
要は、タグを別の形に変換して、それをスクリプトで書き換えるという方法。
使用テンプレートによってはjQueryを使用しておらず、スクリプトが動かないという罠。jQueryへのリンクをはっているテンプレートだと上2行は不要です。
なんで動かないかわからず、半日潰した…。
税込み価格と税抜き価格を並列表記する(v2.13)
/data/class/SC_Product.phpの293行目以降
// 価格 // TODO: ここでprice01,price02を税込みにしてよいのか? _inctax を付けるべき?要検証 $arrClassCats2['price01'] = strlen($arrProductsClass['price01']) ? number_format(SC_Helper_TaxRule_Ex::sfCalcIncTax($arrProductsClass['price01'], $productId, $arrProductsClass['product_class_id'])) : ''; $arrClassCats2['price02'] = strlen($arrProductsClass['price02']) ? number_format(SC_Helper_TaxRule_Ex::sfCalcIncTax($arrProductsClass['price02'], $productId, $arrProductsClass['product_class_id'])) : '';
の部分に
// 税抜価格を表示させるために追加 $arrClassCats2['price011'] = strlen($arrProductsClass['price01']) ? number_format($arrProductsClass['price01']) : ''; $arrClassCats2['price021'] = strlen($arrProductsClass['price02']) ? number_format($arrProductsClass['price02']) : '';
を追加。
次に、js/eccube.jsの502行目、販売価格のところを
var $price02_default = $form.find('[id^=price02_default]'); var $price02_dynamic = $form.find('[id^=price02_dynamic]'); var $price021_default = $form.find('[id^=price021_default]'); var $price021_dynamic = $form.find('[id^=price021_dynamic]'); if (classcat2 && typeof classcat2.price02 !== 'undefined' && String(classcat2.price02).length >= 1) { $price02_dynamic.text(classcat2.price02).show(); $price021_dynamic.text(classcat2.price021).show(); $price02_default.hide(); $price021_default.hide(); } else { $price02_dynamic.hide(); $price02_default.show(); $price021_dynamic.hide(); $price021_default.show(); }
に変更。
最後に、/data/Smarty/templates/default/products/detail.tplを
<!--★販売価格★--> <dl class="sale_price"> <dt><!--{$smarty.const.SALE_PRICE_TITLE}-->(税込):</dt> <dd class="price"> <span id="price02_default"><!--{strip}--> <!--{if $arrProduct.price02_min_inctax == $arrProduct.price02_max_inctax}--> <!--{$arrProduct.price02_min_inctax|number_format}--> <!--{else}--> <!--{$arrProduct.price02_min_inctax|number_format}-->〜<!--{$arrProduct.price02_max_inctax|number_format}--> <!--{/if}--> <!--{/strip}--></span><span id="price02_dynamic"></span> 円(税抜:<span id="price021_default"><!--{$arrProduct.price02_min|number_format}--></span><span id="price021_dynamic"></span>円) </dd> </dl>
みたいな感じで。
管理画面での会員検索カスタマイズ(2.13)
A)検索条件設定で検索条件を非表示にする(職業での検索を非表示にする場合)
1.data/class/helper/SC_Helper_Customer.phpの565行目以降、会員検索パラメーター(管理画面用)内の
$objFormParam->addParam('職業', 'search_job', INT_LEN, 'n', array('MAX_LENGTH_CHECK'));
をコメントアウトする
2.data/class/SC_CustomerList.php内
if (!isset($this->arrSql['search_job'])) $this->arrSql['search_job'] = '';
から始まる職業による検索部分をコメントアウトする。
非表示にする項目によっては、この後のエラーチェック部分も非表示にする。
3.data/Smarty/templates/admin/adminparts/form_customer_search.php内が実際に表示される部分なので
<!--{if false}--> <!--{/if}-->
でコメントアウトする。
B)検索条件設定に検索条件を追加する(会社名での検索を追加する場合)
1.data/class/helper/SC_Helper_Customer.phpの565行目以降、会員検索パラメーター(管理画面用)内に
$objFormParam->addParam('会社名', 'search_company_name', STEXT_LEN, 'aKV', array('SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
を追加する。
2.data/class/SC_CustomerList.php内に
if (!isset($this->arrSql['search_company_name'])) $this->arrSql['search_company_name'] = ''; if (strlen($this->arrSql['search_company_name']) > 0) { $this->setWhere('company_name LIKE ?'); $searchCompany = $this->addSearchStr($this->arrSql['search_company_name']); $this->arrVal[] = preg_replace('/[ ]+/u','',$searchCompany); }
を追加する。最後のreplaceは正直いらないと思うけれども、部分一致用に名前での検索を参考にしたのでこうなった。
3.data/Smarty/templates/admin/adminparts/form_customer_search.phpに
<tr> <th>会社名</th> <td colspan="3"> <!--{assign var=key value="search_company_name"}--> <!--{if $arrErr[$key]}--><span class="attention"><!--{$arrErr[$key]}--></span><!--{/if}--> <input type="text" name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" value="<!--{$arrForm[$key].value|h}-->" size="30" class="box30" <!--{if $arrErr[$key]}--><!--{sfSetErrorStyle}--><!--{/if}--> /> </td> </tr>
追加。
メールテンプレートを増やす
会員登録フォームのカスタマイズ(2.13)
参考:http://www.s-oj.com/ec-business/ec-cube-membership-distributor/
1.項目を新規追加の場合、PHPMyAdminのSQL文に以下を追加、実行する
ALTER TABLE dtb_customer ADD shop_name text; -- 店舗名
店舗名(shop_name)を追加する場合。
2.テンプレートファイルを修正する
・data/Smarty/templates/default/frontparts/form_personal_input.tpl
・data/Smarty/templates/default/frontparts/form_personal_confirm.tpl
・data/Smarty/templates/sphone/frontparts/form_personal_input.tpl
・data/Smarty/templates/sphone/frontparts/form_personal_confirm.tpl
・data/Smarty/templates/default/admin/customer/edit.tpl
・data/Smarty/templates/default/admin/customer/edit_confirm.tpl
・data/Smarty/templates/default/shopping/confirm.tpl
・data/Smarty/templates/sphone/shopping/confirm.tpl
・data/Smarty/templates/default/mail_templates/order_mail.tpl
・data/Smarty/templates/sphone/mail_templates/order_mail.tpl
テンプレートは基本PCとスマートフォン両方を修正すると想定。
なお、テンプレートファイルから項目を削除する場合は、
<!--{if false}--> <!--{/if}-->
で囲ってコメントアウトする。
3.クラスファイルを修正する
data/class/helper/SC_Helper_Customer.phpの386行目以降
public function sfCustomerCommonParam(&$objFormParam, $prefix = '')
から始まる付近を修正。
おおむねこんな感じですかねー。