[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))")]
            ]);

[Shopify]テーマに画像設定項目を設置

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 %}

[Shopify]コレクション内商品をタグでフィルタ

パターン1
URLが「/collections/new/」のコレクションがある時、下記のURLでは「タグ」が付与された商品のみが一覧に表示される

/collections/new/タグ

 
パターン2
下記のURLでは「タグ1」「タグ2」両方付与された商品のみが一覧に表示される

/collections/new/タグ1+タグ2

[Liquid]会員登録、ログイン

{%- 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 -%}

[Laravel]AES_DECRYPT

$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();

[Shopify]セクションに可変長カスタム入力欄を設置

対象セクションの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 -%}

[Liquid]ブログ記事一覧を表示する

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 %}

[Liquid]商品ハンドルから商品オブジェクト取得

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 -%}

[PHP]idiorm #6 select_expr + AES_DECRYPT

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>";
}

[Liquid]在庫チェック

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 -%}