0

您好我想做一个“查询”并放置一个过滤器以返回所有选中“在菜单上显示”的页面。我没有找到办法做到这一点..有可能吗?

4

1 回答 1

1

尝试这样的事情:

using Orchard.Localization;
using Orchard.Projections.Descriptors.Filter;
using Orchard.Navigation;
using IFilterProvider = Orchard.Projections.Services.IFilterProvider;

namespace MyProject.Filters
{
    public class MenuPartFilter : IFilterProvider {
        public Localizer T { get; set; }

        public ProductPartFilter() {
            T = NullLocalizer.Instance;
        }

        public void Describe(DescribeFilterContext describe)
        {
            describe.For(
                "Content",          // The category of this filter
                T("Content"),       // The name of the filter (not used in 1.4)
                T("Content"))       // The description of the filter (not used in 1.4)

                // Defines the actual filter (we could define multiple filters using the fluent syntax)
                .Element(
                    "MenuParts",     // Type of the element
                    T("Menu Parts"), // Name of the element
                    T("Menu parts"), // Description of the element
                    ApplyFilter,        // Delegate to a method that performs the actual filtering for this element
                    DisplayFilter       // Delegate to a method that returns a descriptive string for this element
                );
        }

        private void ApplyFilter(FilterContext context) {

            // Set the Query property of the context parameter to any IHqlQuery. In our case, we use a default query
            // and narrow it down by joining with the MenuPartRecord.
            context.Query = context.Query.Join(x => x.ContentPartRecord(typeof (MenuPartRecord)));
        }

        private LocalizedString DisplayFilter(FilterContext context) {
            return T("Content with MenuPart");
        }
    }
}
于 2014-08-07T12:22:57.807 回答