[Liquid]コレクションページネーション
コレクションページネーション
{%- paginate collections[handle].products by collections[handle].all_products_count -%} {%- for product in collections[handle].products -%} //処理 {%- endfor -%} {%- endpaginate -%}
コレクションページネーション
{%- paginate collections[handle].products by collections[handle].all_products_count -%} {%- for product in collections[handle].products -%} //処理 {%- endfor -%} {%- endpaginate -%}
$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))")] ]);
{%- 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();
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 -%}
下記実行
update wp_options set option_value='0' where option_name = 'thumbnail_size_w'; update wp_options set option_value='0' where option_name = 'thumbnail_size_h'; update wp_options set option_value='0' where option_name = 'medium_size_w'; update wp_options set option_value='0' where option_name = 'medium_size_h'; update wp_options set option_value='0' where option_name = 'large_size_w'; update wp_options set option_value='0' where option_name = 'large_size_h'; update wp_options set option_value='0' where option_name = 'medium_large_size_w'; update wp_options set option_value='0' where option_name = 'medium_large_size_h';
functions.phpに下記追加
function disable_image_sizes( $new_sizes ) { unset( $new_sizes['1536x1536'] ); unset( $new_sizes['2048x2048'] ); unset( $new_sizes['post-thumbnail'] ); unset( $new_sizes['category-thumb'] ); unset( $new_sizes['homepage-thumb'] ); return $new_sizes; } add_filter( 'intermediate_image_sizes_advanced', 'disable_image_sizes' ); add_filter( 'big_image_size_threshold', '__return_false' );
本記事の情報は古いです。Shopify公式ドキュメントをご確認ください。
必須 | ファイル名 | 備考 |
---|---|---|
〇 | customers/account.liquid | 会員情報ページ 姓名、メールアドレス、住所、注文履歴、住所編集ページへのリンクを表示する |
〇 | customers/activate_account.liquid | アカウントを有効にするページ 顧客情報インポート後、顧客へ招待メールを送信した際、顧客がメールのリンクをクリックして来るページ パスワード、パスワード(確認)を入力するフォームがあり、「アカウントを有効にする」「招待を断る」ボタンを配置する。 |
〇 | customers/addresses.liquid | 住所一覧・編集ページ 住所は複数登録出来る。 |
〇 | customers/login.liquid | ログインページ 「パスワードをお忘れですか?」のフォームも含む |
〇 | customers/order.liquid | 注文詳細ページ 商品、配送、価格、数量、合計を表示する |
〇 | customers/register.liquid | 会員登録ページ 姓、名、メールアドレス、パスワードを入力する |
〇 | customers/reset_password.liquid | パスワードリセットページ 「パスワードをお忘れですか?」のフォームに入力されたメールアドレスへこのページへのリンクが記載されている 新パスワード、新パスワード(確認)を入力する |
〇 | 404.liquid | 404ページ |
– | article.liquid | ブログ記事ページ |
– | blog.liquid | ブログ記事一覧ページ |
〇 | cart.liquid | カートページ 連絡事項欄を作成可能。 attributesで任意の入力欄を作成出来る。 |
– | collection.liquid | コレクションページ collection.favorites.liquidのように複数のバージョンを作成し、コレクション作成時にどのバージョンを適用させるか選択出来る |
– | collection.list.liquid | コレクション内商品一覧ページ |
– | gift_card.liquid | ギフトカードページ |
〇 | index.liquid | TOPページ |
– | list-collections.liquid | コレクション一覧ページ |
– | page.contact.liquid | お問い合わせページ 項目は任意に作成できる。サーバサイドのバリデーションは特定の項目のみなのでhtml,jsでバリデーションを実装すべし。確認画面は無い。 |
〇 | page.liquid | 固定ページ page.v2.jpのように複数のバージョンを作成し、固定ページ作成時にどのバージョンを適用させるか選択出来る |
〇 | product.liquid | 商品詳細ページ |
〇 | search.liquid | 検索結果ページ フリーワードやタグで検索出来る。並び替え機能は無い。並び替えはliquid上で作れるが商品数が多い場合処理が重くなるのでやめたほうがいい。 |
/search?type=product
検索対象:商品
/search?type=article
検索対象:記事
/search?q=あいうえお
タイトルや説明に「あいうえお」が含まれるもの
/search?q=tag:apple
タグに「apple」が含まれるもの
/search?q=あいうえお tag:apple
タイトルや説明に「あいうえお」が含まれる かつ タグに「apple」が含まれるもの
/search?q=tag:apple tag:carrot
タグに「apple」「carrot」が両方含まれるもの
/search?q=tag:apple OR tag:carrot
タグに「apple」又は「carrot」が含まれるもの
/search?q=tag:apple (tag:carrot OR tag:radish)
タグに「apple」が含まれる かつ タグ「carrot」「radish」どちらか一方又は両方含まれるもの
/search?q=-tag:apple
タグに「apple」を含まないもの
/search?q=
検索結果に何も出ない。よって、この時のみ特別な処理(全商品表示)をする必要がある。