bcairns / silverstripe-htmleditorfolder
允许您通过“插入媒体”和“插入链接”对话框指定HtmlEditorField上传/选择的文件所在的文件夹。
Requires
- silverstripe/framework: >=3.1.0
This package is auto-updated.
Last update: 2024-09-11 14:48:06 UTC
README
描述
UploadField提供了setFolderName()和setDisplayFolderName()方法,允许您控制文件的上传位置和选择位置,但是HtmlEditorField没有提供此类功能来处理通过“插入媒体”和“插入链接”对话框上传的文件;所有内容最终都放在Uploads中,对于大量使用HtmlEditorField的网站来说,这可能会变得难以管理。
HtmlEditorFolder允许在每个页面/控制器的基础上指定一个文件夹(目前不支持按字段指定)。这个位置将在媒体和链接对话框中同时使用,无论是上传位置还是从CMS中选择时的默认文件夹。
结合UploadField的setFolderName()和setDisplayFolderName()方法,可以为您的CMS用户提供优秀的默认文件位置管理。
使用方法
安装模块后,任何Controller或SiteTree子类(控制器具有优先级)都可以定义一个getHtmlEditorFolder()方法
class Article extends Page
{
public function getHtmlEditorFolder()
{
return 'Articles';
}
}
这将作为CMS中当前编辑页面的所有通过“插入媒体/链接”对话框上传/选择的文件的存储位置。
作为扩展
您可以在扩展中定义getHtmlEditorFolder(),例如,使用HtmlEditorFolder与核心或第三方代码结合使用
class BlogPost_Extension extends DataExtension
{
public function getHtmlEditorFolder()
{
return 'Blog';
}
}
class CMSSettingsController_Extension extends Extension
{
public function getHtmlEditorFolder()
{
return 'SiteConfig';
}
}
并在config.yml中应用它
BlogPost:
extensions:
- BlogPost_Extension
CMSSettingsController:
extensions:
- CMSSettingsController_Extension
数据对象
此模块根据当前页面或控制器设置文件夹。因此,数据对象将使用其父页面或控制器设置的文件夹。
特别说明
SilverStripe通常只加载一次“插入媒体”和“插入链接”对话框,然后使用DOM中存储的副本,即使切换到编辑新页面(通过AJAX加载新面板且不是完整页面刷新)也不例外。
此模块故意破坏这种行为,并在CMS状态更改时从DOM中删除对话框,这强制对话框(如果已调用)在您切换页面后从服务器重新加载。
这可能是有用的功能,其他扩展希望修改HtmlEditorField的媒体和链接对话框。
