crevillo / ezplatform-tinymce-html-fieldtype
提供TinyMCE与eZ Platform的集成,以便能够直接使用html代码
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.15.0
README
本包通过TinyMCE 编辑器提供了一种在eZ中直接输入html的方法。
这个想法来自我们客户的一些请求,他们希望有这样的可能性。
尽管我们试图解释这不是最好的想法(可能会出现安全问题,即使输入html不当,外观和感觉也可能被破坏...),但我们这里有一个明显的“客户需要这个”的情况。仅此而已。
虽然这已经可以通过使用TextBlock 字段来实现(没有人阻止你将html代码粘贴到那里...),但你仍然需要在模板中进行一些修改,以便html标签不会被“转义”。
因此,我想到了创建一个专门用于此的字段类型。同时,由于编辑器可能根本不了解html,我认为我们可以添加一个编辑器来帮助解决这个问题。
安装
为了让整个系统工作,需要一些手动步骤。由于我不是webpack专家,所以我非常欢迎这方面的建议。
无论如何,以下是步骤:
-
执行
yarn add tinymce
添加tinymce作为依赖项 -
使用
composer require crevillo/ezplatform-tinymce-html-fieldtype
安装此包 -
在
AppKernel.php
中启用该包,添加new Crevillo\EzTinyMCEHtmlBundle\CrevilloEzTinyMCEHtmlBundle(),
通常在AppBundle
之上进行此操作 -
使用
php ./bin/console cache:clear
清除缓存 -
使用
php ./bin/console ezplatform:encore:compile
重新编译你的资产
用法
要使用它,只需创建一个新的内容类型(或编辑现有的类型)并添加一个eztinymcehtmlblock.name
字段即可(抱歉,翻译将在以后进行,但通常你会在可用的字段类型列表中看到这个最后)
创建此类型的内容并使用TinyMCE进行玩耍!
演示
待办事项
- 安装过程能否得到改进?
- 翻译
自定义
在为配置按钮或插件添加适当的设置之前,有一种快速的方法可以从你的包中完成此操作。
- 如果没有创建,请创建一个名为
Resources/public/js/scripts/fieldType
的文件夹 - 将
vendor/crevillo/ezplatform-tinymce-html-fieldtype/src/bundle/Resources/public/js/scripts/fieldType/eztinymcehtmlblock.js
复制到该文件夹 - 在你的包中创建一个名为
Resources/encore
的文件夹(假设这里为AppBundle)。 - 将名为
ez.config.manager.js
的文件添加到此文件夹,并包含以下内容
const path = require('path'); module.exports = (eZConfig, eZConfigManager) => { eZConfigManager.replace({ eZConfig, entryName: 'ezplatform-admin-ui-content-edit-parts-js', itemToReplace: path.resolve(__dirname, '../../../../vendor/crevillo/ezplatform-tinymce-html-fieldtype/src/bundle/Resources/public/js/scripts/fieldType/eztinymcehtmlblock.js'), newItem: path.resolve(__dirname, '../public/js/scripts/fieldType/eztinymcehtmlblock.js'), }); };
我们正在告诉webpack,对于该entryName
,用此包提供的文件替换文件。
现在您只需修改src/AppBundle/Resources/public/js/scripts/fieldType/eztinymcehtmlblock.js
。您可以为tinyMCE定义按钮、工具栏或任何其他支持配置。
对于任何更改,您都需要使用./bin/console ezplatform:encore:compile
重新编译您的资产
请注意,此配置将应用于该类型的所有字段。将来可能会有改进:)
从tinymce上传图片
从0.7.0版本开始,可以从tinymce编辑器上传图片。该包提供了一个控制器来处理所有操作。
eZ将为ID为51的位置创建一个类型为图片的内容作为子项。这是eZ Platform常规安装中的媒体 > 图片
文件夹。
要启用此功能,您必须修改 app/config/routing.yml
以加载该软件包提供的路由。示例
_ez_tinymce_html_fieldtype_routes: resource: '@CrevilloEzTinyMCEHtmlBundle/Resources/config/routing.yml'
此外,您还可以配置将创建的图像的父位置。为此,修改您的 app/config/configy.yml
并添加以下内容
crevillo_ez_tiny_mce_html: images_parent_location_id: 51 # media > images folder. change to whatever you want
控制器将返回上传图像的 original
变体。这将在未来可配置。
未来的想法
- 配置按钮、菜单等的能力。
- 我们在这里可以使用 CKEditor 吗?或者它会与在富文本中使用的 alloy editor 冲突?我们能将它们结合起来吗?
免责声明
请注意,此字段类型无意取代 eZ 附加的 ezrichtext。实际上,使用此软件包,您可以将任何类型的页面添加到其中,但您将错过富文本提供的所有优点。例如,没有与浏览窗口的连接来选择用于链接的内容。您也无法使用自定义标签。纯 HTML,以及所有相关的含义。
无论如何,我们可以考虑添加这些功能。如果您想贡献,非常欢迎!