Php SilverStripe检索DataObject上的元标记(param)作为页面

Php SilverStripe检索DataObject上的元标记(param)作为页面,php,silverstripe,Php,Silverstripe,当使用数据对象作为页面时,元标记(false | true)将失去其功能。你怎么能让它工作 用于检索数据对象的控制器操作 public function article(SS_HTTPRequest $request) { $article = NewsArticle::get()->find("URL", $request->param('ID')); if(!$article) { return $this->httpError(404);

当使用数据对象作为页面时,
元标记(false | true)
将失去其功能。你怎么能让它工作

用于检索数据对象的控制器操作

public function article(SS_HTTPRequest $request) {
    $article = NewsArticle::get()->find("URL", $request->param('ID'));

    if(!$article) {
        return $this->httpError(404);
    }

    return array (
        'Article' => $article,
        'Title' => $article->Title,
        'MetaDescription' => $article->MetaDescription
    );
}

MetaTags函数位于SilverStripes中

只需将其复制到您的newsarticle数据对象,并根据您的需要进行调整

如果您想将更多的数据对象显示为一个页面,那么应该考虑打包所有基本内容,如URLSEMENT、元标记、链接。。。在一个类中,而不仅仅是扩展这个类


还有一个模块,它的功能比想象的要简单。我将MetaTags函数复制到我的DO中,并将其添加到页面控制器操作中,该操作将dataobject作为页面处理:
'MetaTags'=>$article->MetaTags(false)
。我在这里硬编码include title参数,因为我看不到其他方法。有什么建议吗?在理想情况下,它将从ss文件中的函数调用中读取参数
$MetaTags(False)