crevillo/ezplatform-tinymce-html-fieldtype

提供TinyMCE与eZ Platform的集成,以便能够直接使用html代码

1.0.3 2021-06-01 12:17 UTC

This package is auto-updated.

Last update: 2024-08-29 05:15:38 UTC


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进行玩耍!

演示

tinymce html fieldtype in action

待办事项

  • 安装过程能否得到改进?
  • 翻译

自定义

在为配置按钮或插件添加适当的设置之前,有一种快速的方法可以从你的包中完成此操作。

  • 如果没有创建,请创建一个名为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,以及所有相关的含义。

无论如何,我们可以考虑添加这些功能。如果您想贡献,非常欢迎!