[Laravel]AES_ENCRYPT
$result = DB::table('users')->insert([ ['email' => \DB::raw("AES_ENCRYPT('{$xxx}',SHA2('".env('DB_ENCRYPT_KEY')."',512))"), 'token' => \DB::raw("AES_ENCRYPT('{$yyy}',SHA2('".env('DB_ENCRYPT_KEY')."',512))")] ]);
$result = DB::table('users')->insert([ ['email' => \DB::raw("AES_ENCRYPT('{$xxx}',SHA2('".env('DB_ENCRYPT_KEY')."',512))"), 'token' => \DB::raw("AES_ENCRYPT('{$yyy}',SHA2('".env('DB_ENCRYPT_KEY')."',512))")] ]);
config/settings_schema.jsonへ下記を追記
[ { "name": "xxx", "theme_name": "xxx", "theme_version": "xxx", "theme_author": "xxx", "theme_documentation_url": "https:\/\xxx", "theme_support_url": "https:\/\/yyy" } //---------ここから--------- ,{ "name": "トップページ", "settings": [ { "type": "image_picker", "id": "main_image", "label": "メイン画像", "info": "メイン画像です" } ] } //--------ここまでを追記----------- ]
画像を表示したい場所へ下記コードを追記
{% if settings.main_image != blank %}<img src="{{ settings.main_image.src | image_url: width: 1040, format: 'pjpg' }}">{% endif %}
パターン1
URLが「/collections/new/」のコレクションがある時、下記のURLでは「タグ」が付与された商品のみが一覧に表示される
/collections/new/タグ
パターン2
下記のURLでは「タグ1」「タグ2」両方付与された商品のみが一覧に表示される
/collections/new/タグ1+タグ2
{%- if shop.customer_accounts_enabled -%} {%- if customer -%} <a href="{{ routes.account_url }}">会員情報</a> <a href="{{ routes.account_logout_url }}">ログアウト</a> {%- else -%} <a href="{{ routes.account_register_url }}">会員登録</a> <a href="{{ routes.account_login_url }}">ログイン</a> {%- endif -%} {%- endif -%}
$record = DB::table('xxx') ->selectRaw("id,AES_DECRYPT(`yyy`,SHA2(:key1,512)) AS shop,AES_DECRYPT(`zzz`,SHA2(:key2,512)) AS token",['key1'=>env('DB_ENCRYPT_KEY'),'key2'=>env('DB_ENCRYPT_KEY')]) ->whereRaw("AES_DECRYPT(`yyy`,SHA2(:key,512)) = :yyy", ['key'=>env('DB_ENCRYPT_KEY'),'yyy'=>$yyy]) ->first();
対象セクションのschemaを設定
{% schema %} { "name": "商品詳細", "tag": "div", "class": "product", "settings": [], //---------ここから--------- "blocks": [ { "type": "userlinks", "name": "リンク", "settings": [ { "type": "text", "id": "linktext", "label": "リンクテキスト" }, { "type": "url", "id": "linkurl", "label": "リンクURL" } ] } ] //--------ここまでを追記----------- } {% endschema %}
対象セクションの表示したい場所へ下記コードを追記
{%- for block in section.blocks -%} {%- case block.type -%} {%- when 'userlinks' -%} <h3>{{ block.name }}</h3> {%- if block.settings.linktext != blank -%} {%- if block.settings.linkurl != blank -%} <a href="{{ block.settings.linkurl }}">{{ block.settings.linktext | escape }}</a><br> {%- endif -%} {%- endif -%} {%- endcase -%} {%- endfor -%}
snippets/pagination.liquidを下記の内容で作成
{% if 1 < paginate.pages %} <ul> {%- if paginate.previous.is_link -%} <li><a href="{{ paginate.previous.url | replace:'paeg=1','' }}">前へ</a></li> {%- endif -%} {%- for part in paginate.parts -%} {%- if part.is_link -%} <li><a href="{{ part.url | replace:'paeg=1','' }}">{{ part.title }}</a></li> {%- else -%} {%- if part.title == paginate.current_page -%} <li><a>{{ part.title }}</a></li> {%- else -%} <li><span style="pointer-events: none;">{{ part.title }}</span></li> {%- endif -%} {%- endif -%} {%- endfor -%} {%- if paginate.next.is_link -%} <li><a href="{{ paginate.next.url }}">次へ</a></li> {%- endif -%} </ul> {%- endif -%}
blog.jsonで指定しているセクションへ下記コードを追記
{% paginate blog.articles by 5 %} <h2>{{ blog.title | escape }}</h2> {% for article in blog.articles %} <a href="{{ article.url }}">{{ article.title | escape }}</a><br> {% endfor %} {% render "pagination" paginate:paginate %} {% endpaginate %}
all_productsは最大20件の商品情報しか保持しないため、コレクションを使用する必要がある。
予め全商品を含みコレクションハンドル「created-descending」のコレクションを作成しておく
function_get_product_by_handle.liquid
{%- assign get_product_by_handle = nil -%} {%- paginate collections['created-descending'].products by collections['created-descending'].all_products_count -%} {%- for model_product in collections['created-descending'].products -%} {%- if model_product.handle == target_handle -%} {%- assign product = model_product -%} {%- break -%} {%- endif -%} {%- endfor -%} {%- endpaginate -%}
define('DB_ENCRYPT_KEY','aabbccddeeff'); require_once __DIR__ . '/idiorm.php'; ORM::configure('mysql:host=localhost;dbname=xxxx'); ORM::configure('username', 'yyy'); ORM::configure('password', 'zzz'); ORM::configure('driver_options', [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ]); $email = "xxxx@gmail.com"; ORM::configure('logging', true); try{ $orm = ORM::for_table('users')->select("id")->select_expr("AES_DECRYPT(`email`,'".DB_ENCRYPT_KEY."')","email")->select_expr("AES_DECRYPT(`name`,'".DB_ENCRYPT_KEY."')","name"); $orm->where_raw("AES_DECRYPT(`email`,?) = ?",array(DB_ENCRYPT_KEY,$email)); $record = $orm->find_one(); }catch (PDOException $e){ return null; } echo "<pre>"; var_dump(ORM::get_last_query()); echo "</pre>"; if(!empty($record)) { echo "<pre>"; echo $record->id; echo $record->email; echo $record->name; echo "</pre>"; }
function_get_variant_status.liquid
{%- comment -%}在庫チェック{%- endcomment -%} {%- assign is_in_stock = false -%} {%- if 0 < variant.inventory_quantity -%} {%- assign is_in_stock = true -%} {%- endif -%} {%- comment -%}在庫あり カートに入れる{%- endcomment -%} {%- if is_in_stock -%} {%- assign get_variant_status = 1 -%} {%- comment -%}在庫なし 「在庫切れの場合でも販売を続ける」がチェックされている カートに入れる{%- endcomment -%} {%- elsif is_in_stock == false and variant.inventory_policy == 'continue' -%} {%- assign get_variant_status = 2 -%} {%- comment -%}在庫なし 再入荷待ち{%- endcomment -%} {%- elsif is_in_stock == false and variant.incoming -%} {%- assign get_variant_status = 3 -%} {%- comment -%}在庫なし 完売しました{%- endcomment -%} {%- elsif is_in_stock == false -%} {%- assign get_variant_status = 4 -%} {%- comment -%}不明{%- endcomment -%} {%- else -%} {%- assign get_variant_status = 99 -%} {%- endif -%}