lowbase/yii2-cms

Yii 2 CMS

安装: 1,072

依赖项: 0

建议者: 0

安全: 0

星标: 44

关注者: 17

分支: 19

开放问题: 5

类型:项目

1.0.0 2016-05-08 20:00 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:13:44 UTC


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 上设计网站的基础

网站开发遵循“从内容开始编程”的原则。即根据管理面板中的文档结构创建结构,然后进入前端部分,使用准备好的模型进行输出和用户输入。

####文档 - 通用实体。所有内容的基石

文档是

  • 新闻
  • 文章
  • 评论
  • 分类
  • 商品
  • 商店订单
  • 商品描述
  • 商店支付或配送方式列表
  • 支付或配送方式
  • 新闻或文章标签
  • 照片画廊(主要输出页面)
  • 照片画廊专辑
  • 网站菜单
  • 网站菜单项
  • ...

####额外字段

可以使用模板将额外的字段(不同类型)附加到每个文档上。允许设置额外字段的多值,并指定可能值的最低和最高数量。例如

  • 商品价格(数字)
  • 订单总额(数字)
  • 评论评分(列表或数字)
  • 调查回答选项(列表)
  • 相册照片(服务器上的文件)
  • 标签(字符串(多字段))
  • ...

如何使用 CMS lowBase

在管理部分,根据文档(菜单、部分、分类、文章、各种列表)在树形结构中构建网站结构。

客户端部分需要与之交互的主要模型:用户 app/models/User 和文档 app/models/Document 通过控制器 app/controllers/UserControllerapp/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 типа Дата