包含一个小部件而不是排除所有其他小部件

时间:2017-10-19 21:36:43

标签: ejs hexo

我在侧边栏中有几个小部件。 我不希望这些小部件中的某些小部件显示在我的某些页面上。

我不知道如何写它比这更简单?我有许多排除,所以这样写它将是一本充满线条的书籍。 我只想编写简单的“在此页面上只包含这个或这些小部件”(而不是“在此页面上排除这个和这些小部件”)。

<%if( !(page.layout=="alpha" && (name=="w1" || name=="w2" || name=="links" || name=="w3") ) && !(page.layout=="beta" && (name=="w400" || name=="w500" || name=="w600") ) ){ %>

所以问题是如何简化页面“alpha”仅显示widget895?

1 个答案:

答案 0 :(得分:0)

我假设您在小部件上有某种循环,name对应于该循环中的当前小部件名称。

<%
    var pageWidgets = {
        alpha: ['widget895'],
        beta: ['widget900', 'widget123']
    };

    var allowedWidgets = pageWidgets[page.layout];

    // Loop over the widgets and grab the name, I assume
    // you're already doing something similar.
    widgets.forEach(function(widget) {
        var name = widget.name;

        // This is the equivalent of the 'if' in your
        // original code. Note that I've allowed all
        // widgets by default.
        if (!allowedWidgets || allowedWidgets.includes(name)) {
            %>
            ...widget rendering here...
            <%
        }
    });
%>