我有一組頁面編輯器的字段的自定義按鈕,我想在加載時根據條件禁用其中的一些。有沒有辦法做到這一點?當直接轉到包含該字段的模板中的該字段時,該按鈕使用「頁面編輯器」的多列表選項設置。禁用基於特定條件的字段的頁面編輯器的按鈕
0
A
回答
2
如果它是頁面編輯器本身(功能區)內的按鈕,則可以覆蓋QueryState
方法 - 使其返回false以禁用該按鈕,true爲啓用它。
的方法是public override CommandState QueryState(CommandContext context)
你可以這樣做:
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
}
您也可以隱藏按鈕 - 使用CommandState.Hidden
[編輯]
我可能誤解了 - 如果是字段類型的按鈕,您可能會喜歡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」;
});
}
}
}
}
1
你看過使用Sitecore規則引擎來解決這個需求嗎?請看Rule-Based User Interface Components for the Sitecore Client以瞭解如何實現這一目的的詳細說明。
相關問題
- 1. 禁用基於條件的HTML按鈕
- 2. 禁用特定頁面的瀏覽器後退按鈕
- 3. 禁用在Sitecore頁面編輯器中的文本字段編輯
- 4. 如何禁用Ionic中特定頁面的硬件按鈕
- 5. 禁用特定行的jsgrid的編輯和刪除按鈕
- 6. 編輯網格時,如何按行禁用特定字段?
- 7. 基於其他按鈕的條件設置按鈕的條件
- 8. 基於角度2中的文本字段值禁用按鈕
- 9. Android:在特定條件下禁用AlertDialogBuilder的確定按鈕
- 10. Salesforce編輯頁面中的自定義字段僅限於
- 11. 當在GridView的特定行上單擊編輯按鈕時,禁用所有行上的編輯按鈕
- 12. 頁面排序基於子頁面的自定義字段
- 13. 禁用基於Retrofit響應的按鈕
- 14. 禁用基於json值的按鈕
- 15. 禁用基於ID點擊的按鈕
- 16. 禁用文本字段編輯而不阻止清除按鈕
- 17. 如何禁用按鈕,除非編輯字段不爲空?
- 18. 編輯文本字段爲空時禁用按鈕
- 19. 如何啓用禁用基於頁面控件的驗證器?
- 20. 如何在頁面編輯器上禁用圖像組件的編輯?
- 21. 爲特定用戶分配特定頁面的編輯權限
- 22. Sitecore頁面編輯器asp:按鈕文字
- 23. 如何在CRUD編輯頁面中禁用某些字段?
- 24. 顯示編輯按鈕基於角色
- 25. 當光標位於小部件的可編輯部分時,禁用ToolBar中的特定按鈕? (CKEditor版本4.5.11)
- 26. 如果處於編輯模式,OpenERP禁用字段編輯
- 27. 啓用/禁用基於單選按鈕的功能按鈕
- 28. 特定字段的重置按鈕
- 29. 防止返回頁面按鈕,Ionic2在特定條件下
- 30. 基於PSD的文件的基於Web的油漆編輯器
嗯 - 問題是,這是一個文本字段(sc:文本)的頁面編輯器,我有三個不同的地方相同的文本字段。似乎只有最後一個文本字段的按鈕被禁用,因爲它們可能都是相同的命令。 – 2013-05-08 22:34:59
檢查第二次編輯 - 這可能會幫助您 – Trayek 2013-05-09 10:28:32
檢查最終編輯 - 這將修復隱藏在該類型的所有字段上的命令問題。 – Trayek 2013-05-09 16:55:09