zpearl/yii2-shop 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zpearl/yii2-shop

Composer 安装命令:

composer require zpearl/yii2-shop

包简介

yii2-shop it's a module for site shop backend, fork pistol88/yii2-shop

README 文档

README

Модуль представляет из себя бекенд для Интернет-магазина.

yii2-shop

В состав входит возможность управлять (CRUD):

  • Категориями
  • Производителями
  • Товарами
  • Ценами
  • Фильтрами (опциями)
  • Дополнительными полями

Если есть необходимость, можно также подтянуть мои другие модули:

Установка

Рекомендую устанавливать в common/modules/pistol88:

git clone https://github.com/pistol88/yii2-shop.git

И подключать через psr-4 секцию composer.json:

"autoload": {
    "psr-4": {
        "pistol88\\shop\\": "common/modules/pistol88/yii2-shop"
    }
}

Модуль зависит от многих других пакетов, скопируйте их из моего в свой composer.json в секцию require. После этого не забудьте выполнить composer update и миграции каждого модуля.

Если хотите установить в папку vendor через composer и ничего не менять потом, устанавливайте стандартно: 'php composer require pistol88/yii2-shop' и 'php composer update' в командной строке.

Миграция:

php yii migrate --migrationPath=vendor/pistol88/yii2-shop/migrations

Настройка

В конфиг (скорее всего, bootstrap.php) добавить:

Yii::setAlias('@storageUrl','/frontend/web/images');

В секцию modules конфига добавить:

    'modules' => [
        //..
        'shop' => [
            'class' => 'zpearl\shop\Module',
            'adminRoles' => ['administrator'],
        ],
        'filter' => [
            'class' => 'pistol88\filter\Module',
            'adminRoles' => ['administrator'],
            'relationModel' => 'zpearl\shop\models\Product',
            'relationFieldName' => 'category_id',
            'relationFieldValues' =>
                function() {
                    return \zpearl\shop\models\buldTextTree();
                },
        ],
        'field' => [
            'class' => 'pistol88\field\Module',
            'relationModels' => [
                'zpearl\shop\models\Product' => 'Продукты',
                'zpearl\shop\models\Category' => 'Категории',
                'zpearl\shop\models\Producer' => 'Производители',
            ],
            'adminRoles' => ['administrator'],
        ],
        'relations' => [
            'class' => 'pistol88\relations\Module',
            'fields' => ['code'],
        ],
        'gallery' => [
            'class' => 'pistol88\gallery\Module',
            'imagesStorePath' => dirname(dirname(__DIR__)).'/storage/web/images/store',
            'imagesCachePath' => dirname(dirname(__DIR__)).'/storage/web/images/cache',
            'graphicsLibrary' => 'GD',
            'placeHolderPath' => dirname(dirname(__DIR__)).'/storage/web/images/placeHolder.png',
        ],
        //..
    ]

В shop можно передать modelMap, где указать нужные вам модели. Также можно указать стандартные yiiшные controllerMap, viewPath, чтобы подменить контроллеры и вьюхи своими в процессе развития вашего магазина.

В секцию components:

    'components' => [
        //..
        'fileStorage' => [
            'class' => '\trntv\filekit\Storage',
            'baseUrl' => '@storageUrl/source',
            'filesystem'=> function() {
                $adapter = new \League\Flysystem\Adapter\Local(dirname(dirname(__DIR__)).'/frontend/web/images/source');
                return new League\Flysystem\Filesystem($adapter);
            },
        ],
        //..
    ]

Использование

  • ?r=shop/product - продукты
  • ?r=shop/category - категории
  • ?r=shop/producer - производители
  • ?r=filter/filter - фильтры (опции)
  • ?r=field/field - доп. поля

Виджеты

  • zpearl\shop\widgets\ShowPrice - передается 'model', выводит цену. Связан с pistol88\cart\widgets\ChangeOptions через jQuery триггер и может определять, какая модификация выбрана и динамически менять цену.

Пример карточки товара со всеми виджетами магазина и корзины, которые работают сообща и динамически меняют данные друг-друга.

<?php
use zpearl\shop\widgets\ShowPrice;
use pistol88\cart\widgets\BuyButton;
use pistol88\cart\widgets\TruncateButton;
use pistol88\cart\widgets\CartInformer;
use pistol88\cart\widgets\ElementsList;
use pistol88\cart\widgets\ChangeCount;
use pistol88\cart\widgets\ChangeOptions;

$product = \zpearl\shop\models\Product::findOne(1); //from controller
?>
<div class="site-index">
    <h1><?=$product->name;?></h1>
    
    <h2>Shop</h2>
    <div class="block row">
        <h3>ShowPrice</h3>
        <?=ShowPrice::widget(['model' => $product]);?>
    </div>
    
    <h2>Cart</h2>
    <div class="block row">
        <div class="col-md-3">
            <h3>ChangeCount</h3>
            <?=ChangeCount::widget(['model' => $product]);?>
        </div>
        <div class="col-md-3">
            <h3>ChangeOptions</h3>
            <?=ChangeOptions::widget(['model' => $product]);?>
        </div>
        <div class="col-md-3">
            <h3>BuyButton</h3>
            <?=BuyButton::widget(['model' => $product]);?>
        </div>
        <div class="col-md-3">
            <h3>TruncateButton</h3>
            <?=TruncateButton::widget();?>
        </div>
        <div class="col-md-3">
            <h3>CartInformer</h3>
            <?=CartInformer::widget();?>
        </div>
        <div class="col-md-3">
            <h3>ElementsList</h3>
            <?=ElementsList::widget(['type' => 'dropdown']);?>
        </div>
    </div>
    
    <style>
        .block {
            border: 2px solid blue;
        }
    </style>
    
</div>

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 15
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2016-10-31

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固