icybee / module-images
管理Icybee CMS用户上传的图片。
Requires
- php: >=5.5
- icanboogie/module-installer: ^1.2
- icybee/module-files: ^3.0
- icybee/module-registry: ^3.0
- icybee/module-thumbnailer: ^3.0
Requires (Dev)
- icanboogie/icanboogie: ^3.0
- icybee/core: ^3.0
This package is auto-updated.
Last update: 2024-09-20 03:03:27 UTC
README
图像模块(images
)管理CMS Icybee 用户上传的图片。
渲染图像记录
图像活动记录以字符串形式渲染
<?php $image = $app->models['images']->one; echo $image;
将生成类似以下的内容
<img src="/repository/files/image/140-porte-verre-blanc.jpeg" alt="Porte verre" width="484" height="518" data-nid="140" />
缩略图
使用 icybee/module-thumbnailer 包从图片创建缩略图。使用 thumbnail()
方法获取一个表示图像缩略图的 Thumbnail 实例
<?php $thumbnail = $image->thumbnail([ 'w' => 64, 'h' => 64 ]); # or $thumbnail = $image->thumbnail('w:64;h:64'); echo $thumbnail->url; // /api/images/123/64x64 echo $thumbnail; // <img src="/api/images/123/64x64" …
缩略图版本
当模块安装时,创建以下缩略图版本
-
$icon
:表示图像或分配给记录的图像。它是一个24×24的图像,通常用于manage
视图(管理员中模块的索引)。 -
$icon-m
:一个更大的图标,通常由 AdjustImage 元素用于在网格中显示可用的图像。 -
$popimage
:表示 PopImage 元素中的图像预览。 -
$popover
:表示当鼠标悬停在$icon
图像上时出现的弹出预览图像。 -
$gallery
:表示在相册中显示的图像。
使用版本创建缩略图非常简单
<?php $thumbnail = $image->thumbnail('$popover'); echo $thumbnbail->url; // /api/images/thumbnails/$popover echo $thumbnail; // <img src="/api/images/thumbnails/$popover" …
将图像分配给内容记录
该模块提供将图像分配给内容记录的能力,例如新闻或文章,以说明它们。使用 Thumbnailer 模块通过流畅的API提供缩略图。
<?php echo $app->models['images']->one->thumbnail; echo $app->models['images']->one->thumbnail('news-list'); echo $app->models['news']->one->image->thumbnail('news-list'); # or echo $app->models['news']->one->image->thumbnail(':list'); echo $app->models['news']->one->image->thumbnail('news-view'); # or echo $app->models['news']->one->image->thumbnail;
配置分配
在所有扩展 Contents 模块的模块中注入了一个启用关联的选项。当选项启用时,可以指定以下内容
- 是否需要分配。
- 如果不需要关联,则默认使用的图像。
- 注入图像控件的标题和描述。
这些设置存储在全局注册表中
images.inject.<flat_module_id>
:(bool|null) 如果启用则为true
,否则为未定义。images.inject.<flat_module_id>.required
:(bool) 如果关联是必需的则为true
,否则为false
。images.inject.<flat_module_id>.default
:(int) 当没有关联到记录的图像时使用的默认图像的标识符。这仅适用于不需要关联的情况。images.inject.<flat_module_id>.title
:(string) 注入到记录编辑表单中的图像控件的标签。images.inject.<flat_module_id>.description
:(string) 注入到记录编辑表单中的图像控件的描述。
额外的控件指定了用于记录不同视图的缩略图选项,通常是 home
、list
和 view
。缩略图版本名称根据以下模式创建:<module>-<view>
,其中 <module>
是模块的正常化标识符,<view>
是视图的正常化标识符。
编辑控件
目标模块的编辑块被修改以提供允许用户选择与正在编辑的记录关联的图像的控件。
所选图像的标识符记录在记录的 image_id
元属性中。
获取与记录关联的图片
与记录关联的图片通过 image
魔法属性获取
<?php $app->models['articles']->one->image;
注意,获取的不是 Image
实例,而是 NodeRelation
实例。因为所有调用都会被转发,所以 NodeRelation
实例可以像 Image
实例一样使用,尽管 set 会抛出 PropertyNotWritable 异常。
NodeRelation
实例使得使用缩略图变得可能。例如,可以使用 ":list" 而不是 "article-list" 来获取用于文章 列表 视图的缩略图
<?php $app->models['articles']->one->image->thumbnail(':list');
魔法属性 thumbnail
返回 视图 缩略图
<?php $app->models['articles']->one->image->thumbnail(':view'); // or $app->models['articles']->one->image->thumbnail;
缩略图装饰器
可以使用 ThumbnailDecorator
实例轻松地对组件进行缩略图装饰
<?php use Icybee\Modules\Images\ThumbnailDecorator; echo new ThumbnailDecorator($record->title, $record->image);
前面的代码将生成类似的内容
<a href="/repository/files/image/140-porte-verre-blanc.jpeg" rel="lightbox[thumbnail-decorator]"><img width="24" height="24" data-popover-image="/api/images/140/thumbnails/$popover" class="thumbnail thumbnail--icon" alt="" src="/api/images/140/thumbnails/$icon"></a> My record title
事件钩子
以下事件钩子被使用
Icybee\Modules\Views\View::alter_records
:如果有的话,将分配的图片包含到记录中。
需求
该包需要 PHP 5.5 或更高版本。
安装
安装此包的推荐方式是通过 Composer。创建一个 composer.json
文件并运行 php composer.phar install
命令来安装
$ composer require icybee/module-images
注意:此模块是 Icybee 所需模块之一。
克隆仓库
该包可在 GitHub 上找到,其仓库可以通过以下命令行克隆
$ git clone git://github.com/Icybee/module-images.git images
测试
测试套件通过 make test
命令运行。Composer 会自动安装以及运行套件所需的所有依赖。可以使用 make clean
命令来清理包目录。
该包通过 Travis CI 持续进行测试。
文档
该包作为 Icybee CMS 文档 的一部分进行文档编制。可以使用 make doc
命令生成包及其依赖的文档。文档使用 ApiGen 在 docs
目录中生成。可以使用 make clean
命令来清理包目录。
许可
该包根据新的 BSD 许可证授权 - 详细内容请参阅 LICENSE 文件。