SilverStripe 3:在CMS外部加载/创建页面

时间:2013-03-05 07:59:34

标签: silverstripe

是否可以在cms之外创建一个页面?

例如:

我想使用jquery .load()将段加载到当前页面。

是否可以在主题文件夹中的某处创建一个html或.ss文件,例如:self-contained-page.html所以如果我访问www.domain.com/self-contained-paged.html我将能够访问此页面。

3 个答案:

答案 0 :(得分:2)

虽然您当然可以提供静态文件,但您也可以“ajaxify”部分页面。不确定这是不是你想做什么,但是如果其他人试图做类似的事情。

虽然您可以使用某些精美的工具,例如pjaxhistory.js,但您也可以手动执行此操作。我最近用SS 2.4完成了这个,但SS 3应该非常相似:

在您的控制器中,添加一个公共功能,以便您可以通过/ yourpage / load(或任何您想要的名称)访问它:

   public function load(){
       return $this->renderWith(array('AjaxLoad'));
   }

在您的模板/布局中添加一个文件AjaxLoad.ss。

  • 如果您只想通过jQuery .load()提供该页面,只需在文件内添加内容即可。
  • 如果您想在常规页面上使用这段内容并希望将其替换为ajaxified版本,请在常规页面和ajaxified页面上使用<% include PageSnippet %>。然后只需在 templates / Include / PageSnippet.ss 中定义您的内容。

您可以在http://www.contentaward.at/content-lab-vienna/608#details看到它的实际效果(点击页面底部的小图片)。希望这说清楚。

答案 1 :(得分:1)

从silverstripe安装中的任何位置提供静态html文件都没有问题,只需注意始终将文件扩展名添加到您的URL,否则silverstripe的url路由(使用mod_rewrite,请参阅.htaccess文件)将启动。

还要注意始终使用文件的完整路径,因此如果您将文件放在'themes / mytheme / test.html'中,则网址将为“http://www.domain.com/themes/mytheme/test.html

答案 2 :(得分:0)

您当然可以像在css文件中一样引用主题文件夹中的html文件,例如: :

  

www.domain.com/themes/yourtheme/self-contained-paged.html

如果您不介意在主题文件夹中没有它,您也可以将它放入根目录 或者您可以修改.htaccess并应用一些mod_rewrite或重定向规则来指向主题文件夹。

如果您想使用.ss文件,则可能必须使用CMS页面。