firegento / magento2-content-provisioning
N/A
Requires
- ext-dom: *
- magento/framework: >=100.1
- magento/module-backend: >=100
- magento/module-cms: >=101.0
- magento/module-store: >=100
- magento/module-ui: >=100
- magento/module-widget: >=100.1
Requires (Dev)
- mikey179/vfsstream: ^1.6
This package is auto-updated.
Last update: 2024-09-04 23:56:47 UTC
README
此模块是在FireGento e.V.(https://firegento.com/)组织的Magento Hackathon期间开发的。
ℹ️ 维护
此模块由TechDivision维护(TechDivision)。因此,我们在那里创建了一个镜像仓库,这使得我们能够在内部基础设施上对此模块运行自动化的质量检查。有关详细信息,请参阅 https://gitlab.met.tdintern.de/techdivision-public/m2-content-provisioning。如果您对仓库结构或镜像有任何问题,请随时联系我们。
构建状态(develop
分支)
此模块背后的想法
通常,内容的一些部分(如CMS页面或块)需要在发布中部署。有一些内容条目,应该始终由代码维护,而有些内容只需将一次交付给每个系统。
在大多数情况下,此类需求将通过设置脚本(或设置修补程序)来解决,这是在没有机会声明每个内容实体责任的情况下可行的方法。
此模块允许您通过XML文件声明此类内容条目,并确保在每次运行setup:upgrade
时将此声明应用于数据库。
使用composer安装
composer require firegento/magento2-content-provisioning
如何工作
安装此模块后,您可以在每个模块中创建自己的content_provisioning.xml
。
示例配置
页面最小配置
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Firegento_ContentProvisioning:etc/content_provisioning.xsd"> <page key="your-module.page.an-identifier.all" identifier="an-identifier" maintained="true" active="true"> <title>Page Title</title> <content type="file">Your_Module::path/to/content.html</content> </page> ... </config>
页面完整配置
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Firegento_ContentProvisioning:etc/content_provisioning.xsd"> <page key="your-module.page.an-identifier.german" identifier="an-identifier" maintained="true" active="true"> <title>Page Title</title> <content heading="New Page Heading" type="file">Your_Module::path/to/content.html</content> <media_directory>Your_Module::path/to/media</media_directory> <stores> <store code="germany_german"/> <store code="swiss_german"/> <store code="austria_german"/> </stores> <seo> <title>SEO Page Title</title> <keywords>Some, SEO, keywords</keywords> <description>SEO description</description> </seo> <design> <layout>3columns</layout> <layout_xml><![CDATA[<foo>bar</foo>]]></layout_xml> </design> <custom_design> <from>2019-03-03</from> <to>2019-03-29</to> <layout>3columns</layout> <theme_id>3</theme_id> </custom_design> </page> ... </config>
块最小配置
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Firegento_ContentProvisioning:etc/content_provisioning.xsd"> <block key="your-module.block.lorem-ipsum-1.all" identifier="lorem-ipsum-1" maintained="true" active="true"> <title>Test Block 1</title> <content><![CDATA[<h2>test foobar Aenean commodo ligula eget dolor aenean massa</h2>]]></content> </block> ... </config>
块完整配置
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Firegento_ContentProvisioning:etc/content_provisioning.xsd"> <block key="your-module.block.lorem-ipsum-2.german" identifier="lorem-ipsum-2" maintained="false" active="true"> <title>Test Block 2</title> <content type="file">Your_Module::path/to/content.html</content> <media_directory>Your_Module::path/to/media</media_directory> <stores> <store code="germany_german"/> <store code="swiss_german"/> <store code="austria_german"/> </stores> </block> ... </config>
一些解释
key
属性
此属性是必需的,以便合并所有模块之间的内容提供配置。它类似于布局块的name
属性...
您可以使用 identifier
吗?
不,identifier 不是唯一的,因为同一个identifier可以被用于多个商店视图。
maintained
属性
使用此属性,您定义此内容是否应该每次都应用,甚至只应用一次。如果值为 false
,则只有当数据库中不存在为定义的商店指定的 identifier
时,内容才会被持久化。
content
节点
此节点提供页面或块的 THE 内容。它可以作为CDATA块的节点值添加,或作为相对于您的Magento实例的文件路径,或以模块命名空间前缀。为了使用文件,您需要在内容节点上添加 type="file"
属性。
stores
节点
此节点是可选的。如果未定义,则块或页面将应用于所有商店。一个 "maintained" 条目也将应用于在重新运行 setup:upgrade
命令后创建的未来商店。您还可以使用 'wildcard' *
来定义内容应应用于所有商店。
media_directory
节点(自版本 1.2.0 以来)
指定媒体文件的目录。内容中使用的每个媒体文件,如果存在于媒体源目录中,将被复制到 Magento 的 pub/media
目录。子目录结构应与在 pub/media
中查看的结构相同。只有现有和使用的媒体文件将被复制。
在本地环境中执行集成测试
# Create a new Magento instance composer create-project --repository=https://repo.magento.com/ magento/project-community-edition magento # Install content provisioning extension cd magento composer require firegento/magento2-content-provisioning # Update database configuration for integration tests mv dev/tests/integration/etc/install-config-mysql.php.dist dev/tests/integration/etc/install-config-mysql.php vi dev/tests/integration/etc/install-config-mysql.php # Execute tests php vendor/bin/phpunit -c $(pwd)/vendor/firegento/magento2-content-provisioning/Test/Integration/phpunit.xml
控制台命令
# reset a CMS block (all localizations) by its key bin/magento content-provisioning:block:reset --key "myKey" bin/magento content-provisioning:block:reset -k "myKey" # reset a CMS blocks by its identifier bin/magento content-provisioning:block:reset --identifier "myIdentifier" bin/magento content-provisioning:block:reset -i "myIdentifier" # add a CMS block by key bin/magento content-provisioning:block:apply "myKey" # add a CMS page by key bin/magento content-provisioning:page:apply "myKey" # list all configured CMS block entries bin/magento content-provisioning:block:list # list all configured CMS page entries bin/magento content-provisioning:page:list
问题和计划中的功能
查看问题以了解接下来计划什么: https://github.com/magento-hackathon/m2-content-provisioning/issues 欢迎您在那里添加您的想法。
变更日志
查看 变更日志文件
此扩展的扩展;)
对于 magenerds/pagedesigner
,有一个模块扩展了此内容提供模块: techdivision/pagedesigner-content-provisioning
.