Как включить флажок «Проектирование» в sitecore Experience Editor?

#content-management-system #sitecore #sitecore8

#content-management-system #sitecore #sitecore8

Вопрос:

Я просматриваю документацию по sitecore для персонализации компонентов. В значительной степени первый шаг:

В редакторе опыта перейдите на вкладку «Просмотр» и в группе «Включить» выберите «Проектирование«, чтобы включить функциональность «Дизайн».

Глядя на мой редактор опыта, хотя он выделен серым цветом и не отображается:

введите описание изображения здесь

Я вошел в систему как администратор и должен иметь полные права на редактирование этого элемента. Я просмотрел документы и форумы sitecore по этой проблеме, но я не вижу ничего, что могло бы сделать это или какие-либо исправления. Кто-нибудь может посоветовать? Я бы предположил, что в конфигурации XML есть какая-то волшебная руна, которая нуждается в обновлении, но это, похоже, «недокументированная функция»…

Мой сайт настроен таким образом:

 <site name="siteName" 
            virtualFolder="/" 
            physicalFolder="/" 
            rootPath="/sitecore/content" 
            startItem="/start-item" 
            database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" 
            registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" 
            enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" 
            enableAnalytics="true"
            cacheRenderingParameters="true" renderingParametersCacheSize="10MB" 
            itemwebapi.mode="Off" itemwebapi.access="ReadOnly" itemwebapi.allowanonymousaccess="false"/>
  

Я использую sitecore 8

Ответ №1:

После долгих экспериментов (благодаря помощи от @Marek) я заметил, что ToggleDesignCapability команда никогда не попадала.

Я видел этот ответ на форумах SC

Я столкнулся с той же проблемой при обновлении с 7.5 до 8 Update 2. Я начал сравнивать свой web.config со стандартной конфигурацией обновления 8 2 и заметил, что запись сайта «website» отсутствует. Можно было бы подумать, что в этом нет необходимости, но когда я добавил его обратно, проблема была решена. Вот строка для проверки:

 <site name="website" virtualFolder="/" physicalFolder="/" 
rootPath="/sitecore/content" startItem="/home" database="web" domain="extranet" 
allowDebug="true" cacheHtml="true" htmlCacheSize="50MB" registryCacheSize="0" 
viewStateCacheSize="0" xslCacheSize="25MB" filteredItemsCacheSize="10MB" 
enablePreview="true" enableWebEdit="true" enableDebugger="true" 
disableClientData="false" cacheRenderingParameters="true" 
renderingParametersCacheSize="10MB" />
  

Я отклонил это, поскольку у меня уже был настроен сайт как настроенный, см. Мой вопрос. Однако я пропустил (и что не было объяснено в ответе на форуме), так это то, что у вас явно должен быть сайт с именем website . Если у вас есть сайт с другим именем, это не сработает. Мы добавили вышеуказанное ниже нашей существующей конфигурации сайта, т.е.:

 <site name="siteName" 
            virtualFolder="/" 
            physicalFolder="/" 
            rootPath="/sitecore/content" 
            startItem="/start-item" 
            database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" 
            registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" 
            enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" 
            enableAnalytics="true"
            cacheRenderingParameters="true" renderingParametersCacheSize="10MB" 
            itemwebapi.mode="Off" itemwebapi.access="ReadOnly" itemwebapi.allowanonymousaccess="false"/>

<site name="website" virtualFolder="/" physicalFolder="/" 
    rootPath="/sitecore/content" startItem="/home" database="web" domain="extranet" 
    allowDebug="true" cacheHtml="true" htmlCacheSize="50MB" registryCacheSize="0" 
    viewStateCacheSize="0" xslCacheSize="25MB" filteredItemsCacheSize="10MB" 
    enablePreview="true" enableWebEdit="true" enableDebugger="true" 
    disableClientData="false" cacheRenderingParameters="true" 
    renderingParametersCacheSize="10MB" />
  

Кнопки теперь включены, как и ожидалось.

Ответ №2:

Если у вашего пользователя есть права администратора, существует 3 сценария, когда флажок может быть отключен:

  1. Страница помечена как read only — перейдите в редактор контента и проверьте Appearance раздел. Там должен быть Read only флажок.
  2. Вы находитесь в редакторе опыта, но в режиме предварительного просмотра. Проверьте ленту в редакторе опыта — первый раздел должен быть Mode . Убедитесь, что Edit эта опция выбрана.
  3. Ваш пользователь установил Deny для Write этого элемента право доступа.

Насколько я помню, в некоторых версиях Sitecore Designing также отключался, когда какой-либо другой пользователь блокировал элемент, но в Sitecore 8 это больше не должно быть так. В любом случае, вы можете проверить, что страница не заблокирована.

введите описание изображения здесь

Все еще не работает? Попробуйте использовать приведенный ниже код. Теперь флажок должен быть включен постоянно. Раскомментируйте исходный код и выполните отладку, чтобы понять, почему он не включен для вашего пользователя:

 namespace MyAssembly.Namespace
{
  [Serializable]
  public class ToggleDesignCapability : Sitecore.Shell.Applications.WebEdit.Commands.ToggleDesignCapability
  {
    public override CommandState QueryState(CommandContext context)
    {
      return CommandState.Enabled;

      /*
          //Original QueryState code - remove return statement above and uncomment to debug

          CommandState commandState = base.QueryState(context);
          Item obj = context.Items.Length > 0 ? context.Items[0] : (Item) null;
          if (obj != null amp;amp; (commandState == CommandState.Enabled || commandState == CommandState.Down) amp;amp; !WebEditCommand.CanDesignItem(obj))
            return CommandState.Disabled;
          return commandState;
      */
    }
  }
}
  

И замените исходный тип App_config/Include/Sitecore.ExperienceEditor.config webedit:toggledesigncapability команды для command на:

   <command name="webedit:toggledesigncapability" type="MyAssembly.Namespace.ToggleDesignCapability, MyAssembly" />
  

Комментарии:

1. 2 и 3 кажутся нормальными, я нахожусь в режиме редактирования, и администратор не «запрещает» доступ на запись. Однако, глядя на 1, при просмотре элемента на вкладке «Мои настройки -> Внешний вид» нет флажка «Только для чтения». Я добавлю в вопрос критический снимок. Есть мысли?

2. Флажок установлен в редакторе контента, а не в редакторе опыта. Смотрите Скриншот в ответе

3. В какой DLL находится этот конвейер? Кажется, мне не хватает ссылки, WebEdit это не пространство имен Sitecore.Shell.Applications в моем решении

4. Ах, нашел это Sitecore.ExperienceEditor

5. Спасибо за вашу помощь. Кажется, это была проблема с конфигурацией. Приведенный выше код никогда не попадал, что привело меня к ответу ниже.