Content management system Silverstripe:LinkingMode与自定义控制器

Content management system Silverstripe:LinkingMode与自定义控制器,content-management-system,silverstripe,Content Management System,Silverstripe,我有以下问题: 菜单中显示的某些链接(“公文包”的子项)是指向自定义控制器的链接。当然,现在链接模式不适用于该链接。这是菜单的图像: 因此,公文包的子项(网站、应用程序等)实际上是类别数据对象,没有SiteTree表示。公文包的子菜单是通过检查和循环数据库中找到的所有类别来创建的 菜单创建如下所示: <ul> <% loop Menu(1) %> <li class="$LinkingMode"> <a href="$L

我有以下问题: 菜单中显示的某些链接(“公文包”的子项)是指向自定义控制器的链接。当然,现在链接模式不适用于该链接。这是菜单的图像:

因此,公文包的子项(网站、应用程序等)实际上是类别数据对象,没有SiteTree表示。公文包的子菜单是通过检查和循环数据库中找到的所有类别来创建的

菜单创建如下所示:

<ul>
    <% loop Menu(1) %>
    <li class="$LinkingMode">
        <a href="$Link">[$LinkingMode] $MenuTitle.XML</a>             
        <% if Children %>
        <ul class="secondary">         
            <% if ClassName == 'ProjectsPage' %>
                <% loop $Top.Categories %> <!-- loop all found categories, every found item links to the custom category controller -->
                    <li class="$LinkingMode"><a href="category/show/$Slug">$Name</a></li>
                <% end_loop %>
            <% else %>    
                <% loop Children %>
                    <li class="$LinkingMode"><a href="$Link"><span class="text">$MenuTitle.XML</span></a></li>
                <% end_loop %> 
            <% end_if %>
        </ul>
        <% end_if %>                
    </li>
    <% end_loop %>
</ul>
class Category_Controller extends Page_Controller {
    public function show($arguments) {
        return $this; //there will be more code to display all projects of a category
    }
}
我希望我必须为Category_控制器添加一些自定义代码,告诉Portfolio页面它具有哪种链接模式

许多thx,
Florian

我在这里找到了一些好的建议:

这是Category_Controller.php(此处设置了公共var CategoryID):

DataObject类别(LinkingMode函数检查控制器中设置的当前类别ID是否等于类别DateObject的ID):

在模板中,您可以像往常一样检查链接模式:

<% loop $Categories %>
    <li class="$LinkingMode">$Name</li>
<% end_loop %>

  • $Name
  • 干杯,
    Florian

    那么您有
    类类别扩展数据对象
    ?您如何确定类别?凭身份证?正如在mysite.com/category/show/1中一样,ja确切地说:class category扩展了DataObject,每个category都有一个slug/id,我用它来标识。所以url看起来像这样:mysite.com/category/show/mobile
    class Category extends DataObject {  
        public function LinkingMode(){
            $categoryID = Controller::curr()->CategoryID;
            return ($categoryID == $this->ID) ? 'current' : 'link';
    }
    }
    
    <% loop $Categories %>
        <li class="$LinkingMode">$Name</li>
    <% end_loop %>