sunnysideup / dashboard
为 SilverStripe CMS 添加一个可定制的仪表板(Unclecheese 模块的分支)
Requires
- silverstripe/framework: ^4.0 || ^5.0
Replaces
This package is auto-updated.
Last update: 2024-08-27 03:49:08 UTC
README
注意:这是从 UncleCheese 的原始模块分支出来的,在 SilverStripe 4 中没有受到太多关注。目的是让这个模块更贴近最新版本,并保持 SilverStripe 4 的工作副本
仪表板模块为 SilverStripe 4 的 CMS 提供了一个启动页面,带有可配置的小部件,显示相关信息。面板可以轻松创建和扩展。仪表板模块的目的是为用户提供一个启动平台,以执行常见的 CMS 操作,如创建特定页面类型或浏览新内容。
截图 & 视频
有关此模块的图片和视频可以在这篇博客文章中找到。
包含的面板
目前没有包含任何面板。这些面板可以被升级并从 SS3 版本的此模块中恢复
- 最近编辑的页面
- 最近上传的文件
- RSS Feed
- 快速链接
- 部分编辑器
- Google Analytics
- 天气
安装
- 将此存储库的内容安装到您的 SilverStripe 项目的根目录中,目录名为 "dashboard"。
- 运行 /dev/build?flush=1
创建自定义仪表板面板
仪表板面板有自己的 MVC 架构,并且很容易创建。在这个例子中,我们将创建一个面板,显示一个假设网站的最近订单。用户可以选择配置面板,只显示已发货的订单。
创建模型
首先,创建一个类作为 DashboardPanel 的子类来表示面板。我们将包括定义可配置属性的数据库字段,并在 getConfiguration() 方法中创建配置字段。
mysite/code/RecentOrders.php
<?php use SilverStripe\Forms\TextField; use SilverStripe\Forms\CheckboxField; use Sunnysideup\Dashboard\DashboardPanel; class DashboardRecentOrdersPanel extends DashboardPanel { private static $db = [ 'Count' => 'Int', 'OnlyShowShipped' => 'Boolean' ]; private static $icon = "mysite/images/dashboard-recent-orders.png"; public function getLabel() { return _t('Mysite.RECENTORDERS','Recent Orders'); } public function getDescription() { return _t('Mysite.RECENTORDERSDESCRIPTION','Shows recent orders for this fake website.'); } public function getConfigurationFields() { $fields = parent::getConfigurationFields(); $fields->push(TextField::create("Count", "Number of orders to show")); $fields->push(CheckboxField::create("OnlyShowShipped","Only show shipped orders")); return $fields; } public function Orders() { $orders = Order::get()->sort("Created DESC")->limit($this->Count); return $this->OnlyShowShipped ? $orders->filter(['Shipped' => true]) : $orders; } }
创建模板
面板对象将寻找与其类名匹配的模板。
mysite/templates/Includes/DashboardRecentOrdersPanel.ss
<div class="dashboard-recent-orders"> <ul> <% loop Orders %> <li><a href="$Link">$OrderNumber ($Customer.Name)</a></li> <% end_loop %> </ul> </div>
运行 /dev/build?flush=1,您现在可以在 CMS 中创建此仪表板面板。
使用 CSS 自定义
在 DashboardPanel 子类的继承的 PanelHolder() 方法中注入 CSS 和 JavaScript 要求是最好的位置。
mysite/code/DashboardRecentOrdersPanel.php
<?php public function getPanelHolder() { Requirements::css("mysite/css/dashboard-recent-orders.css"); return parent::getPanelHolder(); }
添加图表来可视化数据
仪表板模块提供了一个使用 Google API 创建图表的 API。
mysite/code/DashboardRecentOrdersPanel.php
<?php public function Chart() { $chart = DashboardChart::create("Order history, last 30 days", "Date", "Number of orders"); $result = DB::query("SELECT COUNT(*) AS OrderCount, DATE_FORMAT(Date,'%d %b %Y') AS Date FROM \"Order\" GROUP BY Date"); if($result) { while($row = $result->nextRecord()) { $chart->addData($row['Date'], $row['OrderCount']); } } return $chart; }
mysite/code/DashboardRecentOrdersPanel.ss
$Chart
为 ModelAdmin / GridField 面板创建自定义模板
您可以创建自己的模板来覆盖这些面板类型的默认模板。由于命名结构,自定义模板将特定于该面板,因此您可以为每个 ModelAdmin / GridField 面板使用单独的模板。
您可以在模板中像通常一样访问您模型的属性,以及一个 EditLink 方法,其中包含该项目的 CMS 编辑链接。
对于模型管理面板,创建一个名为 DashboardModelAdminPanel_ModelAdminClass_ModelAdminModel.ss 的模板,并将其放置在您的 mysite/templates/Includes 文件夹 中。例如:DashboardModelAdminPanel_MyAdmin_Product.ss
Gridfield 面板使用类似约定,DashboardGridFieldPanel_PageClassName_GridFieldName.ss
例如:DashboardGridFieldPanel_ContactPage_Submissions.ss
关于 Google Analytics 面板的说明
您需要将 Google Analytics 配置信息添加到项目配置.yml 中
DashboardGoogleAnalyticsPanel: email: [XXXXX]@developer.gserviceaccount.com profile: 123456 key_file_path: google_oauth.p12
要定位您的配置文件ID,请访问Google Analytics网站,登录并选择网站。URL末尾将有一个类似于以下的片段
#report/visitors-overview/a5559982w55599512p12345678
/a[6 digits]w[8 digits]p[8 digits]
紧跟在“p”后面的8位数字就是您的配置文件ID。在上面的例子中,这将是指12345678。
注意:要使用Google Analytics面板,您必须在https://www.google.com/settings/security的账户权限部分启用对不安全应用的访问。
有关设置开发者账户和获取密钥文件的更多信息,请访问https://github.com/erebusnz/gapi-google-analytics-php-interface#instructions-for-setting-up-a-google-service-account-for-use-with-gapi