Silverstripe 页面类型缺失

Silverstripe Page Type Missing

我最近开始了一份新工作,作为其中的一部分,我继承了一个 silverstripe 网站,我对它的工作还比较陌生。他们雇来构建网站的前任开发人员有 19 种不同的页面类型,我需要直接编辑其中一种。

我导航到 themes/default/templates/layout 并找到了 15 个 .ss 模板,但我需要的那个不在那里,目录结构中是否有其他地方可以放置 .ss silverstripe 中的文件?

如果您熟悉 PHP,请遵循 class 层次结构的名称直至页面,因为模板是继承的,就像 class 继承属性一样。

如果您不熟悉 PHP(或根本不熟悉基于 class 的继承编程),那么长话短说:它将默认使用另一个确实存在的模板,可能会查看Page.ss

https://docs.silverstripe.org/en/3.3/developer_guides/templates/template_inheritance/

您可能会在其他几个地方找到 .ss 个模板文件。

第一(你提到的地方):themes/default/templates/layout

第二: themes/default/templates/

第三: mysite/code/... - 有时开发人员可能会在此处创建一个 'templates' 文件夹,因此它将是 mysite/code/templates

第四个:可能在您正在使用的模块中...

您可以做的另一件事是在您的代码 editor/IDE 中进行项目搜索,仅搜索 .ss 个文件,这应该会找到您尚未找到的文件。希望这有帮助:)

快速而肮脏的解决方案:

  1. 实际 使用的主题是什么? (在 CMS 的 "Settings" 区域查找)
  2. 武装起来(说真的是"default")然后打开:themes/default/templates/Page.ss
  3. 在最上面编辑它并写下:<h1>$ClassName</h1>
  4. 鉴于所有的页面类型都使用 Page.ss,那么无论你去哪个 URL 都没有关系,顶部将显示在

    标记中,包含页面类型的名称class.

从那里开始,正如其他发帖者所指出的那样,使用您 O/S 的原生 "find" 或 "search" 功能(find + grep 是您在 OS X 上的朋友/Unix/Linux) 并查找 $ClassName 打印的内容。例如。如果 $ClassName 打印:"HomePage" 那么您将搜索 "HomePage.ss".

正如其他发布者也指出的那样,如果您没有找到匹配的 .ss 模板文件,那么您的神秘页面类型将默认使用 themes/default/templates/Layout/Page.ss。您可以通过创建一个完全根据您的神秘 class ala: themes/default/templates/Layout/MyMysteryClass.ss 命名的新文件来覆盖它,瞧,如果您愿意,您可以完全重新设计此页面类型的布局和设计。