페이지 편집기의 필드에 대한 사용자 지정 단추 집합이 있고이를로드 할 때 조건에 따라 일부를 사용하지 않도록 설정하려고합니다. 이것을 할 수있는 방법이 있습니까? 이 버튼은 해당 필드가 들어있는 템플리트의 해당 필드로 직접 이동할 때 '페이지 편집기'에 대한 mulitlist 옵션을 사용하여 설정되었습니다.특정 조건에 따라 필드의 페이지 편집기 단추 비활성화
답변
Page Editor 자체 (리본) 안에있는 버튼의 경우 QueryState
메서드를 재정의 할 수 있습니다. 버튼을 사용하지 않으려면 false를 반환하고 사용하려면 true를 반환합니다. CommandState.Hidden
[편집]
제가 오해를했습니다 수도 사용 -
public override CommandState QueryState(CommandContext context)
{
var field = (MultilistField)context.Items[0].Fields["Fieldname"];
var selected = field.GetItems();
// Check whether the correct ones are selected. If so, return true - else false
}
또한 버튼을 숨길 수 :
방법은 public override CommandState QueryState(CommandContext context)
입니다 - 필드 유형에 대한 버튼 인 경우 this article을 추천합니다. 버튼을 숨기는 방법을 보여주지는 않지만 적어도 무시하려면 public override void HandleMessage(Message message)
메소드로 무언가를 할 수 있습니다.
[편집]
다른 편집으로 필드 ID 또는 이름을 확인할 수 있습니다.
getChromeData
파이프 라인을 변경하거나 추가 할 수 있습니다. 예를 들어 GetFieldChromeData
클래스의 Process
메서드를 재정의 할 수 있습니다.
이 클래스는 코어 데이터베이스에 정의 된 버튼을 /sitecore/content/Applications/WebEdit/Common field buttons
에 생성합니다. 그들 모두를 추가하는 대신 거기에 조건을 추가 할 수 있습니다.
단추를 얻은 후에 추가하기 전에 필드 ID 또는 필드 이름에 따라 원하지 않는 단추를 제거 할 수 있습니다.
[최종 편집]
위의 편집보다 좀 더 우아한 해결책을 작성했습니다. 당신은 그것을 here 읽을 수 있습니다. 간단히 말해서 Sitecore 코드를 재정의하는 대신 파이프 라인에 프로세서를 추가하고 필드 제목과 동일한 항목의 다른 필드 값을 기반으로 단추를 제거했습니다.
public class RemoveButtons : GetChromeDataProcessor
{
public override void Process(GetChromeDataArgs args)
{
Assert.ArgumentNotNull(args, “args”);
Assert.IsNotNull(args.ChromeData, “Chrome Data”);
if (“field”.Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
{
Field argument = args.CustomData["field"] asField;
Assert.ArgumentNotNull(argument, “CustomData[\"{0}\"]“.FormatWith(new object[] { “field” }));
if (argument.Name == “Title” && MainUtil.GetBool(argument.Item["NeedsToBeCheckedToPersonalize"], false))
{
args.ChromeData.Commands.RemoveAll(delegate(WebEditButton b)
{
return b.Header == “Personalize”;
});
}
}
}
}
이 요구 사항을 해결하기 위해 Sitecore 규칙 엔진을 사용해 보셨습니까? 이를 달성하는 방법에 대한 자세한 설명은 Rule-Based User Interface Components for the Sitecore Client을 참조하십시오.
흠 - 문제는 페이지 편집기의 텍스트 필드 (sc : 텍스트)에 대한 문제이며, 세 개의 다른 위치에 동일한 텍스트 필드가 있다는 점입니다. 아마 그들은 모두 동일한 명령이기 때문에 마지막 텍스트 필드의 버튼 만 사용할 수없는 것 같습니다. –
두 번째 편집 확인 - 도움이 될 것임 – Trayek
마지막 편집을 확인하면 해당 유형의 모든 필드에 숨겨진 명령 문제가 해결됩니다. – Trayek