jellygnite / silverstripe-enhance
对 SilverStripe 安装的各项改进。
Requires
- dnadesign/silverstripe-elemental: ^4.0
- silverstripe/admin: ^1.0
- silverstripe/framework: ^4.0
README
简介
此包包含对 Silverstripe 安装的各项改进。
需求
- SilverStripe ^4.0
安装
composer require jellygnite/silverstripe-enhance
注意
获取类基本名称
可用于模板中获取 PageClass 的简化版本。例如:
<html class="$ClassBasename">
图片亮度
偶尔当你使用图片作为幻灯片背景或类似情况,并且你想在图片上叠加文字时,了解图片是亮是暗可以让你选择相应的文字颜色。
此扩展向图片表中添加了一个新的列 亮度
,用于存储图片的亮度。
你可以在模板中调用 $IsDark 或 $IsLight 函数。例如:
<li class="slide<% if $Image.IsDark %> invert<% end_if %>">
SVG 文件
使用 File::class 创建对象而不是 Image::class,因为 SVG 文件与二进制数据图像文件不同。
private static $has_one = [
"Logo" => File::class
];
然后,当向 FieldsList 添加上传字段时,仅允许普通图片和新的类别 'image/unsupported'。这将允许用户上传标准图像文件和 SVG 文件。
$uploadField->setAllowedFileCategories(['image/supported','image/unsupported']);
然后你可以在模板中使用所有图像处理函数来引用该图片。你不需要先检查它是否是 SVG。任何图像处理函数都将被忽略,并将原始 SVG 返回在 标签中。
如果你允许 SVG 上传,为了避免恶意 SVG 文件中的脚本执行,最好在模板中使用。最好限制上传只允许管理员,即不要在前端启用 SVG 上传。
$Logo.ScaleWidth(250)
<img src="$Logo.ScaleWidth(250).URL" alt="$Logo.Title.ATT">
检查一个图像是否是 SVG。
<% if $Logo.IsSVG() %>do something<% end_if %>
SiteConfig 扩展
以下字段被添加到设置中。
private static $db = [
"AdministratorEmail" => "Varchar(254)",
"Phone" => "Varchar(50)",
"Fax" => "Varchar(50)",
"Email" => "Varchar(254)",
"Company" => "Text",
"ABN" => "Varchar(50)",
"Address" => "Text",
"Postal" => "Text",
"OpeningHours" => "Text",
"MapAddress" => "Varchar(254)",
"Latitude" => "Decimal(9,5)",
"Longitude" => "Decimal(9,5)",
"Zoom" => "Int",
"FacebookURL" => "Varchar(255)",
"TwitterURL" => "Varchar(255)",
"LinkedInURL" => "Varchar(255)",
"InstagramURL" => "Varchar(255)",
"MapURL" => "Varchar(255)",
];
private static $has_one = [
"Logo" => File::class,
"ExtraLogo" => File::class,
"DefaultBanner" => Image::class
]
映射嵌入代码方法允许你使用 Google Maps API 而不是嵌入简单的 Google 地图 iframe。大多数情况下这已经足够,因此可以节省为客户设置账户的麻烦。
地图基于 MapAddress 中输入的数据创建。或者可以使用经纬度添加精确位置。
<div id="gmap">
$SiteConfig.MapEmbedCode
</div>
WebP 支持
添加了对 WebP 图像的支持。这仅在 GD 或 ImageMagick 中可用 WebP 函数时才有效。
检查一个图像是否是 WebP。
<% if $Logo.IsWebP() %>do something<% end_if %>
TODO:CMS 中的缩略图。我认为它在 asset-admin/client/dist/js/bundle.js 中。