我需要删除或隐藏Suite Bar中显示的默认链接,例如NewsFeed,SkyDrive,Sites等。我想添加自己的链接并将此部分用作我的菜单。
因此,在添加时,我希望内容编辑者可以轻松配置项目。他们可以编辑需要显示的链接并控制订单。没有链接的硬编码。
如果有人可以提供帮助。
此致 navish
答案 0 :(得分:2)
这可以通过显示这些链接的代理控件来完成。以下链接将有所帮助
答案 1 :(得分:2)
您应该创建一个以SuiteLinksDelegate ControlId为目标的自定义委托控件。 将其添加到Farm-scoped功能,以使整个服务器场中的自定义委托控件处于活动状态。 如果您不喜欢硬编码链接,则可以针对存储可配置链接的自定义SharePoint列表进行编程。
要添加自定义链接,您可以使用此处描述的方法:http://zimmergren.net/technical/sp-2013-some-new-delegatecontrol-additions-to-the-sharepoint-2013-master-pages
如果您需要删除某些内置链接,同时保留其他链接(我有此要求),您可以使用以下代码:
public partial class SuiteLinksDelegate : MySuiteLinksUserControl
{
protected override void Render(HtmlTextWriter writer)
{
// save for later
var httpwriter = (writer.InnerWriter as HttpWriter);
// hijack the innerwriter
var sb = new StringBuilder();
var sw = new StringWriter(sb);
var tw = new HtmlTextWriter(sw);
writer.InnerWriter = tw;
// call base
base.Render(writer);
// get the html
var currentHtml = sb.ToString();
XElement element = XElement.Parse(currentHtml);
// remove SkyDrive link
var suiteLinkNodes = element.Elements("li").ToArray();
var remainingNodes = suiteLinkNodes.Where(node => !(node.ToString().Contains("ShellDocuments")));
element.ReplaceNodes(remainingNodes);
var modifiedHTML = element.ToString();
// set back the old innerwriter
writer.InnerWriter = httpwriter;
// write delegate control html
httpwriter.Write(modifiedHTML);
}
}
答案 2 :(得分:1)
您可以使用javascript方法隐藏此链接,如下面的链接
所述http://www.tuyrcorp.com/sharepoint-2013-top-links-name-id-and-how-to-hide-them/
你也可以使用同样的javascript在下拉列表中添加新项目
希望这有帮助
由于