gpt4 book ai didi

orchardcms - 从“设置”菜单隐藏项目

转载 作者:行者123 更新时间:2023-12-02 12:16:23 24 4
gpt4 key购买 nike

我创建了一个自定义部件,并通过部件处理程序中的 ActivatingFilter 将其附加到站点部件/内容项(类似于 here 中描述的内容)。我还添加了一个“设置”菜单项,通过重写处理程序的 GetItemMetadata 方法并为其添加一个 GroupInfo 对象来编辑该部分。这有效,我可以按预期编辑我的部分。

这是我的部分处理程序的样子:

public class ProductSettingsPartHandler : ContentHandler {
public ProductSettingsPartHandler() {
T = NullLocalizer.Instance;
Filters.Add(new ActivatingFilter<ProductSettingsPart>("Site"));
}

public Localizer T { get; set; }

protected override void GetItemMetadata(GetContentItemMetadataContext context) {
if (context.ContentItem.ContentType != "Site")
return;
base.GetItemMetadata(context);

// If I remove the following call, I can't use the site settings AdminController anymore.
// But if I make this call, a menu item will be added to the Settings section - which I don't want.
context.Metadata.EditorGroupInfo.Add(new GroupInfo(T("Pricing")) {
Id = "Pricing",
Position = "4.2"
});
}
}

现在我想将菜单项移动到另一个部分。我可以通过实现 INavigationProvider 并为其提供到设置 AdminController 的路径来创建新的菜单项。对我来说。但是,当我尝试从“设置”菜单中删除原始菜单项(通过不再添加 GroupInfo 对象)时,我的新菜单项链接不再起作用。

根据我的研究,它看起来像设置 AdminController正在执行显式检查以确保已为该部件添加 GroupInfo 对象,否则它将不会返回用于编辑它的 View 。这似乎使得无法使用设置 AdminController 来编辑附加到站点内容部分的部分,但不能在“设置”菜单部分中显示它们。

关于如何解决这个问题有什么建议或想法吗?我的最终目标是像对待其他任何部分一样对待此网站设置部分,但将用于更新它的菜单项显示在管理菜单的另一部分中。

如果有什么区别的话,我正在 Orchard 1.x 分支上进行开发。

谢谢!

最佳答案

为了仅在特定组上显示给定的零件编辑器,请替换

ContentShape("<your editor name>", () => ...);

ContentShape("<your editor name>", () => ...).OnGroup("Pricing");

在驱动程序的编辑器方法中。除了您已经使用上面的处理程序完成的操作之外。

更新:

再次重新阅读您的问题两次后,我想我最初误解了这个问题。您希望 AdminController 继续工作,但提供的组不应出现在“设置”下。

如果不覆盖默认的 Orchard 行为,这是不可能的。默认设置 AdminController 要求该组存在,这又使其始终出现在菜单中。

最简单的解决方案是创建您自己的 Controller ,您可以将管理链接指向该 Controller 。复制并粘贴当前的 AdminController 并从中删除所有与 GroupInfo 相关的检查应该可以解决问题。

关于orchardcms - 从“设置”菜单隐藏项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com