2013-03-05 74 views
0

是否可以在cms之外創建頁面?SilverStripe 3:在CMS之外加載/創建頁面

例如:

我想使用jquery .load()到段加載到當前頁面。

是否可以在主題文件夾中的某個位置創建html或.ss文件,例如:self-contained-page.html,如果我然後訪問www.domain.com/self-contained-paged.html我將能夠訪問此頁面。

回答

1

從銀河系安裝中的任何地方提供靜態html文件都沒有問題,只需要注意總是將文件擴展名添加到您的網址,否則銀河系的URL路由(使用mod_rewrite,請參閱.htaccess文件)將啓動。

也注意到一直使用的完整路徑的文件,所以如果你放置你的文件「主題/ mytheme的/ test.html文件」的網址爲「http://www.domain.com/themes/mytheme/test.html

0

你當然也可以參考主題文件夾中的html文件就像使用css文件fe做的一樣:

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

如果你不介意不擁有它的主題文件夾你也可以把它放到根目錄。
或者您可以修改.htaccess並應用一些mod_rewrite或重定向規則指向主題文件夾。

如果您想使用.ss文件,您可能必須使用CMS頁面。

2

儘管您當然可以提供靜態文件,但您也可以「調整」頁面的某些部分。不知道這是你想做什麼,但如果別人正在嘗試做類似的事情。

雖然您可以使用一些奇特的工具,如pjaxhistory.js,但您也可以手動執行此操作。我最近用SS 2.4做了這個,但是SS 3應該是非常類似的:

在你的控制器中添加一個公共函數,以便你可以通過/ yourpage/load(或者你想調用它的任何東西)來訪問它:

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

在您的templates/Layout中添加一個文件AjaxLoad.ss。

  • 如果您只想通過jQuery​​提供該頁面,只需在文件內添加內容。
  • 如果您想要在常規頁面上使用這段內容,並且想要將其替換爲ajaxified版本,請在常規頁面和ajax化頁面上使用<% include PageSnippet %>。然後簡單地在模板/ Include/PageSnippet.ss中定義您的內容。

你可以看到它在行動http://www.contentaward.at/content-lab-vienna/608#details(點擊頁面底部的小圖像)。希望這個清楚。

+0

漂亮的工具提示懸停效果在你的例子;) – schellmax 2013-03-06 07:02:11

+1

它總是最不重要的東西,得到最多的關注;) – xeraa 2013-03-06 13:05:23

+0

...因爲它_does_有所作爲! – schellmax 2013-03-06 13:12:31