2013-10-20 39 views
0

如何更改數據對象的url? 我可以通過這個函數獲得下面的url下的數據對象。定義Dataobject的URL - Silverstripe 3.1

是www.domain.tld /用品/藝術?= 1234

public function ArticleByID() { 
    $articleID = isset($_GET['art']) ? $_GET['art'] : false; 
    return $articleID ? Articles::get()->filter(array('ShortNumber' => $articleID))->First() : false; 
} 

但我要的是例如這 是www.domain.tld /用品/ 1234www.domain .TLD /會員/會員名

回答

4

您可以創建一個show()功能,你會打電話對你ArticleHolder獲得並與URL升回到你想要的Articles頁IKE 是www.domain.tld /用品/顯示/ 1234

ArticleHolder.php

... 

class ArticleHolder_Controller extends Page_Controller { 

    ... 

    public function show(SS_HTTPRequest $request) { 

     if ($request->param('ID') && $article = Articles::get()->filter(array('ShortNumber' => $page->param('ID')))->First()) { 

      return $this->customise(array(
       'Title' => $article->Title, 
       'Content' => $article->Content, 
       'MetaTitle' => $article->MetaTitle, 
       'MetaDescription' => $article->MetaDescription, 
       'MetaKeywords' => $article->MetaKeywords 
      ))->renderWith(
       array('ArticlesPage', 'Page') 
      ); 
     } 

     return $this->httpError(404); 
    } 

    ... 

} 

或者,更好的是,使用URLSegment讓你的文章。爲此,您需要Article課程中的URLSegment

有這個極好的教程在ssbits.com: http://www.ssbits.com/tutorials/2010/dataobjects-as-pages-part-2-using-model-admin-and-url-segments-to-create-a-product-catalogue/

的教程是Silverstripe 2.4,但代碼應Silverstripe 3.1小的調整工作。

還有基於關閉此教程叫DataObjectAsPage模塊:https://github.com/arambalakjian/DataObjects-as-Pages

您可以使用此爲您的代碼基礎。

+0

嗨3dgoo,我試過這個教程。這是一個很好的提示! :)但我遇到了一些問題。也許你可以幫助我。我爲這個http://stackoverflow.com/questions/19560804/dataobjects-as-pages-ssbits-tutorial-sivlerstripe-3提出了一個新問題 – invictus

相關問題