Open2

slickを用いてShopifyでスライドショーを作成する

Eiji Saito | UnReact Inc.Eiji Saito | UnReact Inc.

【Shiopify】スライドショーセクションを作成する

コーディングしたくない人はこんなアプリもあるみたいですね。。
https://apps.shopify.com/shopify-application-339?locale=ja&from=scrap

複数スライドが表示されて、1つずつ入れ替わるスライドショーを作成したい ↓

参考記事

https://coco-factory.jp/ugokuweb/move01/6-1-6/

作成の流れ

  • テーマにjQueryを追加
  • テーマにslickを追加
    • CSSファイル作成
    • HTML作成
    • JSファイル作成

jQueryの追加

Shopifyのtheme.liquidファイルの<head>タグ内に<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>を追記します。

theme.liquid
<head>
  ...
  <!--jqueryを追加 -->  
  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
</head>

slickの追加

HTML、CSS、JSファイルを作成していきます。

CSSの追加

headの終了タグの直前に自作のCSSファイルとslickのCSSのファイルを読み込みます。

theme.liquid
<head>
  ...
  <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css">
  <!--AssetsディレクトリにあるCSSファイルのlinkタグを生成する-->
  {{ '○○○○.css' | asset_url | stylesheet_tag }}
</head>

CSSの中身

.css
/*==================================================
スライダーのためのcss
===================================*/
.slider {/*横幅94%で左右に余白を持たせて中央寄せ*/
   width:94%;
    margin:0 auto;
}

.slider img {
    width:100%;/*スライダー内の画像を横幅100%に*/
    height:auto;
}

/*slickのJSで書かれるタグ内、スライド左右の余白調整*/

.slider .slick-slide {
    margin:0 10px;
}

/*矢印の設定*/

/*戻る、次へ矢印の位置*/
.slick-prev, 
.slick-next {
    position: absolute;/*絶対配置にする*/
    top: 42%;
    cursor: pointer;/*マウスカーソルを指マークに*/
    outline: none;/*クリックをしたら出てくる枠線を消す*/
    border-top: 2px solid #666;/*矢印の色*/
    border-right: 2px solid #666;/*矢印の色*/
    height: 15px;
    width: 15px;
}

.slick-prev {/*戻る矢印の位置と形状*/
    left: -1.5%;
    transform: rotate(-135deg);
}

.slick-next {/*次へ矢印の位置と形状*/
    right: -1.5%;
    transform: rotate(45deg);
}

/*ドットナビゲーションの設定*/

.slick-dots {
    text-align:center;
	margin:20px 0 0 0;
}

.slick-dots li {
    display:inline-block;
	margin:0 5px;
}

.slick-dots button {
    color: transparent;
    outline: none;
    width:8px;/*ドットボタンのサイズ*/
    height:8px;/*ドットボタンのサイズ*/
    display:block;
    border-radius:50%;
    background:#ccc;/*ドットボタンの色*/
}

.slick-dots .slick-active button{
    background:#333;/*ドットボタンの現在地表示の色*/
}

HTMLの追加

セクションファイルにスライドとなるHTMLを記載します。

slideshow.liquid
<ul class="slider">
  <li><img src="img/img_01.jpg" alt=""></li>
  <li><img src="img/img_02.jpg" alt=""></li>
  <li><img src="img/img_03.jpg" alt=""></li>
  <li><img src="img/img_04.jpg" alt=""></li>
  <li><img src="img/img_05.jpg" alt=""></li>
  <li><img src="img/img_06.jpg" alt=""></li>
<!--/slider--></ul>

JSの追加

theme.liquid
<head>
  ...
  <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script>
  <!--AssetsディレクトリにあるJSファイルのscriptタグを生成する-->
  {{ '○○○○.js' | asset_url | script_tag }}
</head>

JSの中身

○○○○.js
$('.slider').slick({
  autoplay: true,//自動的に動き出すか。初期値はfalse。
  infinite: true,//スライドをループさせるかどうか。初期値はtrue。
  slidesToShow: 3,//スライドを画面に3枚見せる
  slidesToScroll: 3,//1回のスクロールで3枚の写真を移動して見せる
  prevArrow: '<div class="slick-prev"></div>',//矢印部分PreviewのHTMLを変更
  nextArrow: '<div class="slick-next"></div>',//矢印部分NextのHTMLを変更
  dots: true,//下部ドットナビゲーションの表示
  responsive: [
    {
      breakpoint: 769,//モニターの横幅が769px以下の見せ方
      settings: {
        slidesToShow: 2,//スライドを画面に2枚見せる
        slidesToScroll: 2,//1回のスクロールで2枚の写真を移動して見せる
      }
    },
    {
      breakpoint: 426,//モニターの横幅が426px以下の見せ方
      settings: {
        slidesToShow: 1,//スライドを画面に1枚見せる
        slidesToScroll: 1,//1回のスクロールで1枚の写真を移動して見せる
      }
    }
  ]
});
Eiji Saito | UnReact Inc.Eiji Saito | UnReact Inc.

日本対応のスライドショーアプリについて

https://apps.shopify.com/shopify-application-339?locale=ja&from=scrap

デモサイト

アプリの挙動↓
https://s19.aconvert.com/convert/p3r68-cdx67/p5pzg-dhu9u.gif

初見結構良さそうではある。

日本語の導入説明

とても詳しい説明があるので導入は簡単にできる感じ。
https://www.re-terior.com/shopify-apps/reterior-slideshow/guide

Slickでやるより簡単ですね。。。
ぜひ導入してみてください。

https://apps.shopify.com/shopify-application-339?locale=ja&from=scrap