webbuilders-group / silverstripe-kapost-bridge
为Kapost驱动的内容创作提供桥接,支持基本内容页面。同时还提供了一个灵活的API,允许自定义内容类型。
Requires
- composer/installers: *
- phpxmlrpc/phpxmlrpc: ~4.0
- silverstripe/framework: ~3.1
Suggests
- webbuilders-group/silverstripe-kapost-bridge-logger: Adds support for logging of all information going to and from Kapost
README
为Kapost驱动的内容创作提供桥接,支持基本内容页面。同时还提供了一个灵活的API,允许自定义内容类型。
维护者联系方式
- Ed Chipman (UndefinedOffset)
需求
- SilverStripe 框架 3.1+
- phpxmlrpc ~4.0
安装
Composer(推荐)
composer require webbuilders-group/silverstripe-kapost-bridge
如果您愿意,也可以手动安装
- 从这里下载模块 https://github.com/webbuilders-group/silverstripe-kapost-bridge/archive/master.zip
- 将下载的压缩文件解压到网站根目录,以便目标文件夹命名为kapost-bridge,解压后的文件夹应包含根目录中的 _config.php 文件以及其他文件/文件夹
- 运行 dev/build?flush=all 以重新生成清单
- 下载 phpxmlrpc 的最新 ~4.0 版本,并将其包含在您的 SilverStripe 安装中,请注意,由于您是手动安装,可能会遇到一些问题。
文档
模块的文档(包括如何添加自定义类型和扩展点)可以在这里找到。
发布两次规则(Kapost 分析)
为了使 Kapost 分析正常工作,您需要具有完整的 URL。不幸的是,由于在 Kapost 对象转换之前我们无法知道最终发布的 URL(或由于 Kapost 的更改而更改了 URL),我们需要在您在 SilverStripe 中转换对象后在 Kapost 中再次发布。这将允许 SilverStripe 在 Kapost 尝试发布时告知 Kapost 实际发布的 URL 是来自 SilverStripe 的 URL 而不是 CMS URL。技术上,您也可以简单地更新 Kapost 中的 URL,而不是在转换后再次发布,但如果这样做,则下一次发布时不会自动更改。
配置选项
KapostAdmin: extra_conversion_modes: (empty) #Array of name's for extra conversion modes (see documentation for information on how to define these) kapost_base_url: null #Set this to a string of the base url for your Kapost account for example https://example.kapost.com/ KapostService: check_user_agent: true #If set to true when the service is called the user agent of the request is checked to see if it is Kapost's XML-RPC user agent authenticator_class: "MemberAuthenticator" #Authenticator to be used for authenticating the Kapost account authenticator_username_field: "Email" #Field the authenticator is expecting the username to be in kapost_media_folder: "kapost-media" #Assets folder to place the Kapost attached media assets duplicate_assets: "snart_rename" #What to do with duplicate assets valid options smart_rename, rename, overwrite, ignore see bellow for more information preview_token_expiry: 10 #Preview token expiry window in minutes, once this time elapses the Kapost content author must click preview again or they will receive a 404 message on the site. preview_data_expiry: 20 #Preview data expiry window, time in minutes that the preview's data lasts in the database. This time window is approximate as data can live past this point as the clean up happens when a conversion completes or when a new object arrives. database_charset: "UTF-8" #This should be set to the encoding for the database connection you are using. Matching this to your database connection character set will give the best chance of no encoding issues. By default it is set to the default MySQLDatabase.connection_charset value which is UTF-8. filter_kapost_threads: false #The default HTML content field in Kapost allows for inline commenting, this flag allows for toggling of filtering out the html flag for Kapost's WYSIWYG. KapostConversionHistory: expires_days: 30 #Number of days that conversion history records are kept
使通过 Kapost 管理的页面为只读
在某些情况下,您可能希望当内容来自 Kapost 时,在 CMS 的页面编辑部分将页面标记为只读。默认情况下有几个字段被设置为可编辑的,即 URL 段和额外元数据。您可以将希望 CMS 管理员可编辑的字段添加到配置选项 YourPageType.non_readonly_fields
中。此外,Kapost 在任何 WYSIWYG 字段中包含一个脚本标签,以避免在 Kapost 的分析中造成混淆,并避免与 CMS 的 UI 发生冲突,您应该通过配置选项 YourPageType.make_safe_wysiwyg_fields
使任何 HTML 字段安全,默认情况下内容字段包含在内。要启用 CMS 页面编辑部分的只读转换,您需要将以下内容添加到您的配置中。请注意,这仅适用于内容选项卡,设置选项卡不受影响。
CMSPageEditController: extensions: - "KapostPageEditControllerExtension"
此外,您还可以通过将 KapostPageSettingsControllerExtension
扩展添加到 CMSPageSettingsController
来使页面的设置为只读。默认情况下,如果应用此扩展,则只有 CanViewType、ViewerGroups、CanEditType 和 EditorGroups 可编辑。如果您想在 CMS 中将更多字段列为可编辑,请将字段的名称添加到您页面类型的 YourPageType.non_readonly_settings_fields
配置选项中。
CMSPageSettingsController: extensions: - "KapostPageSettingsControllerExtension"
处理重复资产
Kapost 在每次发布页面时都会发送一个附件资产,因此 KapostService.duplicate_assets 配置选项下有三种处理具有重复名称的文件的方法。
smart_rename
验证文件是否与现有文件相同,然后使用传入和现有文件的 sha1 哈希值来使用该文件,否则将该文件重命名以使其唯一。rename
重新命名资产,直到找到唯一的名称。overwrite
用新文件覆盖现有文件,_请注意,您可能最终会覆盖不想覆盖的资产。ignore
服务简单地忽略该资产,并告知 Kapost 出现错误,解释需要重命名文件并再次尝试。