【開発コミュニティの人気Tipsをご紹介⑥】リンクを知っている人だけ閲覧できる商品を作ってみる

[4,192 views]

thum2

こんにちは、EC-CUBEエバンジェリスト 足立智広です。

EC-CUBEでは、ご利用者同士が問題解決方法を投稿・共有できる「開発コミュニティ」を開設し、多くの方にお使いいただいています。この連載では、開発コミュニティで話題のカスタマイズや、よく質問にあがる「これってどうやるの?」について解説を行っていきます。

※過去の記事はこちらからご覧いただけます。
【開発コミュニティの人気Tipsをご紹介①】「すぐに購入する」ボタンを追加してみる
【開発コミュニティの人気Tipsをご紹介②】EC-CUBEで会員制サイトを作ってみよう
【開発コミュニティの人気Tipsをご紹介③】コントローラ付きのブロックを追加してみよう
【開発コミュニティの人気Tipsをご紹介④】ログインブロックを作成してみよう
【開発コミュニティの人気Tipsをご紹介⑤】カートに入れるボタンを作ってみる

今回のテーマについて

今回は、リンクを知っている人だけ閲覧できる商品、のカスタマイズを紹介したいと思います。
商品の検索結果には表示されませんが、直接URLを入力すると、商品詳細画面が表示されます。

簡易的ではありますが、これにより、一部のお客様にだけ購入できる商品を作ることができます。

1. 仕様

本来はdtb_orderに表示用のカラムを追加して、そのカラムで制御する方が良いですが、今回は簡易的な実装のため、商品情報のショップ用メモ欄に”[隠し商品]”が登録されていれば制御するようにしてみます。

2. カスタマイズ

src/Eccube/Repository/ProductRepository.php の93行目付近に以下を追記します。


    public function getQueryBuilderBySearchData($searchData)
    {
        $qb = $this->createQueryBuilder('p')
            ->andWhere('p.Status = 1');

        // ★↓を追記
        $qb->andWhere("p.note IS NULL OR p.note <> '[隠し商品]'");
        // ★↑を追記

        // category
        $categoryJoin = false;
        ...

修正はこの1行だけです。

3. 動作確認

動作確認をしてみましょう。
商品編集画面で、パーコレータに[隠し商品]を入力します。

隠し商品を登録

次に、商品一覧画面を表示します。
パーコレータが表示されていない状態です。

パーコレータは表示されない

次は、直接URLを入力してアクセスしてみます。
パーコレータが表示されました。

パーコレータが表示される

最後に

リンクを知っている人だけ閲覧できる商品の作成については以上です!

変更したソースコードの差分は以下でご覧いただけます。ぜひ参考にしてみてください。
https://github.com/EC-CUBE/ec-cube/compare/3.0.15...chihiro-adachi:sample/hyde-product

いかがでしたでしょうか?

開発コミュニティでは、「EC-CUBE」 をより快適で便利なものにしていくために、エンジニアの方はもちろんのこと、ショップ運営者の方、デザイナーの方など、 EC構築・運営に関わる多くの方々のご参加をお待ちしています。

▼ EC-CUBE開発コミュニティ
http://xoops.ec-cube.net/

「どうか教えてください!」「バグ見つけましたよ」「こんな機能あったらなぁ」といったテーマごとにスレッドが分かれていますので、気になるキーワードがあれば開発コミュニティへ訪れてみてください。

このEC記事につけられたタグ