arsthanea / page-media-set-bundle
2.0
2018-06-18 10:16 UTC
Requires
- kunstmaan/bundles-cms: ~4.0 | ~5.0
This package is not auto-updated.
Last update: 2024-09-21 12:09:55 UTC
README
此包提供了一种简单的方法,可以将媒体集合添加到Kunstmaan Bundles CMS中每个页面类型。
主要目标是跨多个页面类型共享一组媒体附件,无需每次升级数据库模式。例如,考虑为每个页面添加具有相同尺寸的顶部页面横幅,而无需将关系本身添加到实体中。
安装
composer require arsthanea/page-media-set-bundle
安装后,将 PageMediaSetBundle
添加到您的内核中,并更新您的数据库模式/创建迁移。
使用方法
有三个主要步骤
- 在您的实体上实现
HasMediaSetInterface
。这告诉包每个页面将使用哪种类型的媒体。 - 在symfony配置中配置您的媒体类型(见下文)
- 现在,当编辑页面时,您将有一个额外的“媒体集”选项卡,可以设置媒体
设置后,有两种访问它们的方式
Twig函数
在twig模板中有一个简单的辅助函数
{% block header %} {% set banner = page_media(page, "banner") %} {% if banner %}<img src="{{ banner }}" alt="page banner">{% endif %} {% endblock %}
容器中的服务
例如,在您的控制器中
/** @var HasMediaSetInterface $page */ $mediaUrl = $this->get('page_media_set.page_media_set_service')->getPageMedia($page, "banner");
配置
可用格式
将其添加到您的 config.yml
或类似文件中
page_media_set: formats: banner: min_width: 1920 min_height: 420 max_width: 1920 max_height: 460 teaser: ~
您需要配置所有媒体类型,但约束是可选的。
预定义媒体集类型
您可以使用symfony配置配置媒体集定义,而不是使用 getMediaSetDefinition
方法返回它们。
# app/config/config.yml page_media_set: types: 'Acme\Foo\Bar\BazEntity': [ 'foo', 'bar' ]
在这种情况下,不会调用 Acme\Foo\Bar\BazEntity::getMediaSetDefinition()
,将使用 foo
和 bar
格式。
格式名称
格式名称来自翻译,使用 messages
字典中的 page_media_set.format.%s
键。例如
# messages.yml page_media_set: format: banner: Top page banner
索引器
如果您正在使用搜索包,则可以启用索引页面缩略图。第一个定义的媒体将被存储在Elasticsearch文档的 'photo' 键下,然后您可以直接在搜索结果页面上使用它。
# config.yml page_media_set: indexer: true