承接 lowbase/yii2-lowbase 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

lowbase/yii2-lowbase

Composer 安装命令:

composer create-project lowbase/yii2-lowbase

包简介

Yii 2 CMS

README 文档

README

lowBase - низкоуровневая CMS, включающая в себя готовую универсальную систему администрирования сайта и Yii2 основу для самостоятельной разработки клиентского приложения. По организации контента похожа на CMS ModX

Составлена на основе независимых модулей:

Модуль пользователей

Модуль документов

Каждый из модулей может быть заменен в CMS на собственный. Взаимодействия друг с другом минимальны.

Демо панели администрирования

Сайт-источник

Доступ к админ. панели по адресу /admin

Пример: Добавлене товара

Установка lowBase

  • composer create-project lowbase/yii2-cms project-name dev-master
  • Создаем пустую базу данных и настраиваем соединение с базой в файле config/db.php
'db' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=имя_базы_данных',
    'username' => 'пользватель',
    'password' => 'пароль',
    'charset' => 'utf8',
],
  • Запускаем миграции коммандой php yii migrate
  • Для работы EAUTH-авторизации необходимо зарегитсрировать приложение/сайт в соответствующих социальных сетях. В файле config/web.php прописываем полученные ключи и id приложения:
  'authClientCollection' => [
            'class' => 'yii\authclient\Collection',
            'clients' => [
                'vkontakte' => [
                    // https://vk.com/editapp?act=create
                    'class' => 'lowbase\user\components\oauth\VKontakte',
                    'clientId' => '?',
                    'clientSecret' => '?',
                    'scope' => 'email'
                ],
                ...
            ]
        ]

##Основы проектирования сайта на lowBase

Разработка сайта ведется по принципу "Программирование от содержимого". Т.е. создаем структуру на основе документов в панели администрирования, а затем переходим к Frontend части, делая самостоятельно вывод и пользовательский ввод, используя готовые модели. Либо производим эти действия параллельно: программист или верстальщик занимается пользовательским интерфейсом, а контент-менеджеры заполняют содержимое документов.

####Документ - универсальная сущность. Основа всего содержания

Документ - это:

  • новость
  • статья
  • отзыв
  • категория
  • товар
  • заказ магазина
  • характеристка товара
  • список со способами оплаты или доставки магазина
  • сам способ оплаты или доставки
  • тег для новости или статьи
  • фотогалерея (основная страница вывода)
  • альбом фотогалереи
  • меню сайта
  • пункт меню сайта
  • ...

####Дополнительные поля

К каждому документу с помощью шаблона можно прикрепить дополнительные поля (различных типов). Допускаются мультизначения дополнительных полей с заданием минимального и максимального количества возможных значений. Например:

  • Цена товара (число)
  • Сумма заказа (число)
  • Рейтинг отзыва (список или число)
  • Вариант ответа опроса (список)
  • Фотография альбома (файл с сервера)
  • Теги (строка (мультиполе))
  • ...

Как работать с CMS lowBase

В административной части формируется структура сайта на основе документов (меню, разделы, категории, статьи, различные списки) в древовидной иерархии.

Основные модели, с которыми придется взаимодействовать в клиентской части сайта: пользователи app/models/User и документыapp/models/Document через контроллеры app/contollers/UserController и app/controllers/DocumentController, которые являются пустыми заготовками, унаследованные от соответствующих классов модулей системы.

Как альтернативный вариант можно создать модульную структуру, унаследовав ваши модули от соответствующих модулей \lowbase\document\Module и \lowbase\user\Module. Возможности модулей и вызов виджетов смотрите в документации модулей.

####Работа с документами и с дополнительными полями

Значения дополнительных полей документа хранятся в массиве $document->fields

После получения самого документа массив не заполняется:

$document = app\models\Document::findOne($id);
print_r($document->fields);     //Array() - массив пуст

Для заполнения дополнительных полей документа используйте метод fillFields()

$document = app\models\Document::findOne($id);
$document->fillFields();
print_r($document->fields);     //Array([1] => ['name' => 'Теги', 'type' => 4, 'param' => '', 'min' => 0, 'max' => 2, 'data' => [[1] => ['value' => 'Тег_1', 'position' => ''], [2] => ...]], [2] => ...)

    /**
     * Значения дополнительных полей
     * Массив имеет следующую структуру:
     *
     * [$field_id] => [
     *                  'name' => 'Название дополнительного поля',
     *                  'type' => 'Тип дополнительного поля',
     *                  'param' => 'Параметр дополнительного поля',
     *                  'min' => 'Минимум значений',
     *                  'max' => 'Максимум значений',
     *                  'data' => [ $data_id => [
     *                                            'value' => 'Значение дополнительного поля'
     *                                            'position' => 'Позиция дополнительного поля'
     *                                             ],
     *                                           ...
     *                          ]
     *              ],
     * ...
     *
     * $field_id - ID дополнительного поля из БД, $data_id - ID записи значения дополнительного поля из БД
     * Если необходимо прикрепить новое значение 'data' к документу, то в качестве ключа используем 'new_'.$i, где
     * $i - идентификатор нового значения
     */

После сохранения документа

$document->save();

значения дополнительных полей будут сохранены в соответствующие таблицы.

Можно также получить значения дополнительных полей запросами к соответствующим таблицам (в зависимости от типа поля) БД напрямую

$data_values = \lowbase\document\models\ValueString::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // Получение значений дополнительного поля $field_id строкового типа
$data_values = \lowbase\document\models\ValueNumeric::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // Получение значений дополнительного поля $field_id числового типа
$data_values = \lowbase\document\models\ValueText::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // Получение значений дополнительного поля $field_id типа Текст
$data_values = \lowbase\document\models\ValueDate::find()->where(['field_id' => $field_id, 'document_id' => $document_id])->all() // Получение значений дополнительного поля $field_id типа Дата

lowbase/yii2-lowbase 适用场景与选型建议

lowbase/yii2-lowbase 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 185 次下载、GitHub Stars 达 44, 最近一次更新时间为 2015 年 11 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「framework」 「cms」 「yii2」 「lowbase」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 lowbase/yii2-lowbase 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 lowbase/yii2-lowbase 我们能提供哪些服务?
定制开发 / 二次开发

基于 lowbase/yii2-lowbase 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

  • Stars: 44
  • Watchers: 16
  • Forks: 17
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2015-11-27