alex290/yii2-widget-content

小部件内容

安装: 148

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 0

语言:JavaScript

类型:yii2-extension

2.0.3 2024-07-18 08:07 UTC

This package is auto-updated.

Last update: 2024-09-18 08:36:51 UTC


README

小部件内容

安装

通过composer安装此扩展是首选方式。

运行以下命令之一

php composer.phar require --prefer-dist alex290/yii2-widget-content "*"

或在您的composer.json文件的require部分添加

"alex290/yii2-widget-content": "*"

使用

安装扩展后,只需在代码中通过以下方式使用它

连接外部Ckeditor 5 classic

<script src="https://cdn.ckeditor.com/ckeditor5/39.0.1/classic/ckeditor.js"></script>

或下载安装包,并按照Ckeditor文档https://ckeditor.npmjs.net.cn/docs/中的说明进行连接

在web.php配置中添加

'modules' => [
    'widget-content' => [
        'class' => 'alex290\widgetContent\Module',
        'path' => 'upload', //path to files
    ],
],

运行迁移

php yii migrate/up --migrationPath=@vendor/alex290/yii2-widget-content/migrations

将行为附加到您的模型上(确保您的模型有"id"属性)

public function behaviors()
{
    return [
        'widget' => [
            'class' => 'alex290\widgetContent\behaviors\Behave',
        ]
    ];
}

在管理后台显示小部件

$widget = [
    'text' => [
        'name' => 'Текст',
        'preview' => '/web/images/widget/header.png',
        'fields' => [
            'name' => ['string', 'max' => 255],
            'text' => ['string'],
            'image' => ['image'],
        ]
    ],
	...
    'galery' => [ // Ключ уникальный поля 
        'name' => 'Галерея', // Название виджета
        'preview' => '/web/images/widget/textImageTwo.png', // Путь к превьюшке
        'fields' => [
            'name' => ['string', 'max' => 255],  // Тип поля
            'text' => ['string'], // Тип поля
        ],
        'item' => [ // Дополнительные поля (Например в галлереи несколько картинок)
            'name' => ['string', 'max' => 255], 
            'image' => ['image'],
        ]
    ],
];

字段类型

['string', 'max' => 255] - 文本字段

['string'] - 文本区域

['integer'] - 整数

['image'] - 图片

['file'] - 文件

['select'] - 列表

...
'category' => ['select', [
    '44' => 'News',
    '55' => 'Information',
]], 
<?php if (!$model->isNewRecord) : ?>
		<?= $model->getWidget($widget) ?>
<?php endif ?>

获取该模型的 widgets 对象数组

$model->getContent();

删除 widgets

$model->removeWidgetAll();

$model->removeWidget($id);

在页面上显示记录

<?php if ($model->getContent() != null) : ?>
    <?php foreach ($model->getContent() as $widget) : ?>
        <div class="row">
            <?php
            $element = $widget['model']; // Основной виджет
	$element->type // Тип виджета для разделения секций
            $elementItem = $widget['item']; // Элементы виджета
            $data = Json::decode($element->data); // Поля виджета
            ?>
            <?php if ($element->getImage()->getPrimaryKey() > 0) : // Вывод изображения ?>
                <img src="/web/<?= $element->getImage()->getPath() ?>" alt="">
            <?php endif ?>
            <?php if (!empty($elementItem)) : ?>
                <?php foreach ($elementItem as $widgetItem) : ?>
                    <?php $dataItem = Json::decode($widgetItem->data); // Поля элемента виджета  ?>
                    <?php if ($widgetItem->getImage()->getPrimaryKey() > 0) : // Вывод изображения ?>
                        <img src="/web/<?= $widgetItem->getImage()->getPath() ?>" alt="">
                    <?php endif ?>
                <?php endforeach ?>
            <?php endif ?>
        </div>
    <?php endforeach ?>
<?php endif ?>

显示文件

<a href="/web/<?= $data['file']['patch'] ?>" download="<?= $data['file']['filename'] ?>">Поле с названием</a>