---
title: "一般的なリンクフィールドへのアクセス"
slug: "access-general-link-fields"
abstract: "Sitecoreを使って一般的なリンクフィールドにアクセスする方法。Data.Fields.LinkFieldクラス。"
---
# 一般的なリンクフィールドへのアクセス

Sitecore.Data.Fields.LinkFieldクラスを使って型*General Link*のデータテンプレートフィールドにアクセスできます。フィールド内のリンクの種類に応じて、Sitecore.Data.Fields.LinkFieldクラスの以下のプロパティを使用できます。

財産

価値

Anchor

HTML要素の名前属性 で、先頭のハッシュ文字(「#」)を含まない。

Class

HTML要素のクラス属性 です。

IsInternal

内部リンクは真、メディアやその他の種類のリンクは偽です。

IsMediaLink

メディア関連のリンクも同様です。

LinkType

リンクの種類(内部リンク、メディアリンク、外部リンク、Mailto、アンカー、またはJavaScript)を識別するトークンです。

QueryString

URLに追加するクエリ文字列パラメータ。

Target

HTML要素のターゲット属性 です。

TargetID

内部リンクまたはメディアリンクによって指定されたアイテムのID。

TargetItem

Sitecore。Data.Items.Item。内部またはメディアリンクによって指定されるアイテム。

Text

HTML要素のテキスト内容 。

Title

HTML要素のタイトル属性 。

Url

リンクのURLは、メディア項目を除き、Urlプロパティが/Sitecore/Media Libraryに対するメディアアイテムへのパスを含みます。

*Master*データベースの/Sitecore/Content/Home項目の*General Link*フィールドのURLをGeneralLinkFieldで判定するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

string url = String.Empty;

switch(linkField.LinkType)
{
 case "internal":
 case "external":
 case "mailto":
 case "anchor":
 case "javascript":
 url = linkField.Url;
 break;
 case "media":
 Sitecore.Data.Items.MediaItem media = new Sitecore.Data.Items.MediaIte(linkField.TargetItem);
 url = Sitecore.StringUtil.EnsurePrefix('/',
 Sitecore.Resources.Media.MediaManager.GetMediaUrl(media));
 break;
 case "":
 break;
 default:
 string message = String.Format("{0} : Unknown link type {1} in {2}", this.GetType(), linkField.LinkType, home.Paths.FullPath); Sitecore.Diagnostics.Log.Error(message,this);
 break;
}

Sitecore.Data.Fields.LinkField.Clearメソッドを使って、型*General Link*のフィールドからデータを削除することができます。例えば、*Master*データベースの/Sitecore/Content/Home項目にある*General Link*フィールドのGeneralLinkFieldからリンクを削除する場合:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

home.Editing.BeginEdit();
linkField.Clear();
home.Editing.EndEdit();

*Master*データベースの/Sitecore/Content/Home項目にあるGeneralLinkFieldという*General Link*フィールドを次の項目に更新するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

Sitecore.Data.Items.Item sample = master.GetItem("/sitecore/content/home/sample");

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "internal";

Sitecore.Links.UrlOptions urlOptions = Sitecore.Links.LinkManager.GetDefaultUrlOptions();

urlOptions.AlwaysIncludeServerUrl = false;

linkField.Url = Sitecore.Links.LinkManager.GetItemUrl(sample,urlOptions);

linkField.TargetID = sample.ID;

home.Editing.EndEdit();

*Master*データベースの/Sitecore/Content/Home項目にある*General Link*フィールドのGeneralLinkFieldを/Sitecore/Media Library/Files/Sampleメディア項目に更新するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

Sitecore.Data.Items.Item sample = master.GetItem("/sitecore/media library/files/sample");

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "media";

linkField.Url = sample.Paths.MediaPath;

linkField.TargetID = sample.ID;

home.Editing.EndEdit();

*Master*データベースの/Sitecore/Content/Home項目にあるGeneralLinkFieldという*General Link*フィールドを外部URLに更新するには http://sitecore.net:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "external";

linkField.Url = "http://sitecore.net";

home.Editing.EndEdit();

*Master*データベースの*/Sitecore/Content/Home*項目にあるGeneralLinkField という*General Link*フィールドをアンカーnamedAnchorに更新するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "anchor";

linkField.Url = "namedAnchor";

home.Editing.EndEdit();

*Master*データベースの/Sitecore/Content/Home項目にあるGeneralLinkFiel*General Link* dという名前のフィールドをメールアドレスに更新するにはemail@domain.tld:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "mailto";

linkField.Url = "mailto:email@domain.tld";

home.Editing.EndEdit();

*Master*データベースの/Sitecore/Content/Home項目にある*General Link*フィールドGeneralLinkFieldをJavaScript関数に更新するには:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields"generallinkfield";

home.Editing.BeginEdit();

linkField.Clear();

linkField.Text = "";

linkField.LinkType = "javascript";

linkField.Url = @"javascript:alert('javascript')";

home.Editing.EndEdit();