php - 如何以编程方式向 Silverstripe 添加新页面?

标签 php silverstripe

我正在尝试使用调用外部 API 的后台进程将页面添加到 Silverstripe 站点树。

我只是想获取正确创建新程序页面的代码。目前我有:

$mySiteTree = new SiteTree();
$mySiteTree->ClassName = "Programme";
$mySiteTree->URLSegment = $newurl;
$mySiteTree->URLSegment = 'testurl';
$mySiteTree->Title = 'testing title';
$mySiteTree->ShowInMenus = '1';
$mySiteTree->ParentID = '86';
$mySiteTree->write();

这似乎没有创建任何页面。关于我做错了什么或者我可以尝试做些什么来调试它有什么建议吗?

最佳答案

您的代码中缺少一些东西,还有一些东西需要修复:

  • 创建新页面时调用 new Programme() 而不是 new SiteTree()
  • 你不应该设置ClassName,上面的改变会 照顾好这个
  • 无需设置URLSegment。 Silverstripe 将根据您设置的标题自动执行此操作
  • 确保存在 ID 为 86 的页面
  • 您需要调用 ->publish('Stage', 'Live')->flushCache()

下面的代码应该可以工作:

$mySiteTree = new Programme();
$mySiteTree->Title = 'testing title';
$mySiteTree->ShowInMenus = '1';
$mySiteTree->ParentID = '86';
$mySiteTree->write();
$mySiteTree->publish('Stage', 'Live');
$mySiteTree->flushCache();

关于php - 如何以编程方式向 Silverstripe 添加新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21780380/

相关文章:

php - 使用 PHP 从 Linux 服务器连接到远程 MS Access 数据库

php - PDO如何在MySQL数据库中获取INSERT的重复键列名称?

php - 使用 SQL Select 语句更新临时表的问题

php - Silverstripe:按作者过滤博客文章

silverstripe - 扩展 SilverStripe 模块扩展

php - class_exists 正在调用 spl_autoload_register

php - Docker 中的 nginx 和 php-fpm

caching - 更新: Updating manifest cache version and date in SilverStripe on upload

php - 无法使文件/目录可由 php 写入

php - Silverstripe上传文件到根文件夹