NewsFeed、SkyDrive、Sites などのスイート バーに表示されるデフォルトのリンクを削除または非表示にする必要があるという要件があります。独自のリンクを追加して、このセクションをメニューとして使用したいと考えています。
そのため、追加する際に、コンテンツ エディターが項目を簡単に構成できるようにしたいと考えています。表示する必要があるリンクを編集し、順序を制御できます。リンクのハードコーディングはありません。
誰かがこれを手伝ってくれるなら。
よろしく、ナビッシュ
NewsFeed、SkyDrive、Sites などのスイート バーに表示されるデフォルトのリンクを削除または非表示にする必要があるという要件があります。独自のリンクを追加して、このセクションをメニューとして使用したいと考えています。
そのため、追加する際に、コンテンツ エディターが項目を簡単に構成できるようにしたいと考えています。表示する必要があるリンクを編集し、順序を制御できます。リンクのハードコーディングはありません。
誰かがこれを手伝ってくれるなら。
よろしく、ナビッシュ
これは、これらのリンクを表示する Delegate コントロールをオーバーライドすることによって実行できます。以下のリンクが役立ちます
SuiteLinksDelegate ControlId を対象とするカスタム デリゲート コントロールを作成する必要があります。これをファーム スコープの機能に追加して、カスタム デリゲート コントロールをファーム全体でアクティブにします。ハードコーディングされたリンクが気に入らない場合は、構成可能なリンクを格納するカスタム 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);
}
}
以下のリンクで説明されているように、JavaScript アプローチを使用してこのリンクを非表示にすることができます。
http://www.tuyrcorp.com/sharepoint-2013-top-links-name-id-and-how-to-hide-them/
この同じ JavaScript を使用してドロップダウンに新しい項目を追加することもできます
お役に立てれば
ありがとう