여러 페이지에서 사용할 수있는 하위 레이아웃이 있습니다. 하위 레이아웃의 맨 위에 제목 표시 줄을 표시해야하고 Title 필드가 들어있는 매개 변수 템플릿을 만들었습니다. 이 값을 편집 할 수 있으려면이 제목을 sc:Text
또는 sc:FieldRenderer
컨트롤에 표시하고 싶습니다. 어떻게해야합니까?Sitecore 서브 레이아웃에서 매개 변수 템플릿의 일부 필드 내용을 렌더링하고 페이지를 편집 할 수있게 만드는 방법은 무엇입니까?
답변
당신은 코드 숨김에서 <%= Title %>
을 가질 수 있습니다 당신은 다음과 같이 선언 할 수 있습니다
public string Title { get; set; }
과를 Page_Load에서을 :
string rawParameters = Attributes["sc_parameters"];
NameValueCollection parameters = Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters);
Title = parameters["Title"];
물론 당신이있어 가정 ascx 파일에서 코드를 수행합니다.
분명히 이것은 페이지 편집기에서 편집 할 수 없지만.
는 읽을 수있는 좋은 기사입니다이[편집]
내가 나 자신을 사용하고 코드를 추가 할 거라고 생각 :
을
public ParamHelper(System.Web.UI.UserControl control)
{
_sublayout = control.Parent as Sitecore.Web.UI.WebControls.Sublayout;
if (_sublayout != null)
{
_params = Sitecore.Web.WebUtil.ParseUrlParameters(_sublayout.Parameters);
}
}
그리고 난 다음 내에 Params 얻을 수 있습니다 :
public string GetParam(string key)
{
string result = _params[key.Trim().ToLower()];
if (string.IsNullOrEmpty(result))
{
result = string.Empty;
}
return (System.Web.HttpUtility.UrlDecode(result));
}
을
템플릿의 기본 필드가 아닌 왜 하위 레이아웃 매개 변수 여야하는 이유는 무엇입니까? 템플릿 상속을 사용하면 하위 레이아웃을 사용할 템플릿 만 사용하거나 많이 사용하거나 사이트의 임의 페이지에서 템플릿을 추가하여 기본 템플릿에 추가 할 수 있습니다. sublayout가 종속성을 추가하여 항목을 사용하지 않을 경우에는 컨텐츠 편집기에서 필드를 숨길 수 있습니다 :
Dynamic content editor templates using Rendering Dependencies
당신은 다음 sc:text
또는 정상에 따라 sc:fieldrenderer
를 사용할 수 있습니다.
또는 일반 필드가 작동하지 않으면 사전 항목일까요? – Trayek
페이지 유형별로 몇 개의 템플릿 (집, 제품, 원주, 두 개의 열 등)이 있다고 가정 해보십시오 ... 어떤 하위 페이지에서 편집기가이 "위젯을 추가 할 것인지 알고 있어야합니다. "(내 하위 레이아웃)? 그가 두 개의 서로 다른 자리 표시 자의 동일한 페이지에 하위 레이아웃의 인스턴스를 두 개 이상 추가하면 어떻게됩니까? –
기본 템플릿에 추가하는 것처럼 여러 템플릿을 추가해도 문제가되지 않습니다. 그러나 여러 인스턴스에 대한 공정한 점은 이것이 더 큰 모듈이라고 생각했습니다. – jammykam
페이지 편집기에서 편집 할 수 있습니까? –
흠 ... 솔직히 말해서이 방법인지 확실하지 않습니다. Sitecore Sublayout에서 작업하는 경우 ParseUrlParameters (this.Parameters) 만 사용할 수 있습니다. UserControl에서 작업하는 경우 먼저 Sublayout으로 변환해야합니다. 내가 사용하는 코드는 – Trayek