Orchard CMS FAQ

Часто задаваемые вопросы по Orchard CMS.



После компиляции Orchard CMS весит больше гигабайта. Это всё заливать на хостинг?

Нет, можно смело удалить все папки bin и obj, который находятся внутри \src\Orchard.Web\Modules

Где в Orchard CMS Connection String к базе?

Здесь: \src\Orchard.Web\App_Data\Sites\Default\Settings.txt

Где в Orchard CMS смотреть логи?

Здесь: \Sites\Orchard.Web\App_Data\Logs

Меняю Migrations.cs, а изменения не применяются, что делать?

Нужно удалить файлик \App_Data\Sites\Default\mappings.bin

@Display(Model.List) рендерит элементы UL LI, как их убрать?

На самом деле @Display(Model.List) рендерит Shape прямо в C# коде. Самый простой способ отрендерить шейпы списка, написать так:

@foreach (var shape in Model.List)
{
    @Display(shape)
}

Как одному Tenant'у сопоставить несколько доменов?

Нужно указывать домены через запятую:

RequestUrlHost: localhost2.dev,localhost3.dev

Как вставить ASP.NET MVC Controller в Orchard CMS?

Модуль &mdahs; это Area, потому в неё вы можете помещать свои контроллеры.

[Themed]
  public class HomeController : Controller
  {
  }

В контроллерах работает орчардовский механизм Dependency Injection, потому можно пользоваться всеми средствами Orchard CMS.

Для своих контроллеров можно использовать темы. Для этого ваши View должны располагаться в

/%Название темы%/View/%Название модуля%/%Название контроллера%

В своих контроллерах вы можете использовать механизм Shap'ов. Для этого ваш экшен должен возвращать ShapeResult.

Пример модуля с таким контроллером можно посмотреть здесь: https://github.com/musukvl/orchard-mvc-test

Как включить Shape Tracing?

Shape Tracing позволяет включить дерево shape'ов, его можно включить на вкладке модулей.

Enable shape tracer

Search Content ничего не находит, как включить индексацию?

На вкладке Recipes /Admin/Modules/Recipes нужно создать индекс. Потом вам понадобится пройти по Content Type'ам, которые нужно индексировать и зачекать там галку. Затем на странице /Admin/Indexing нажать Update.

Enable shape tracer

Как проиндексировать Part?

Нужно добавить обработчик индексации в ContentHandler. Например:

public class CityHandler : ContentHandler
{
    public CityHandler(IRepository<CityPartRecord> repository)
    {
        Filters.Add(StorageFilter.For(repository));
        OnIndexing<CityPart>(
            (context, part) => context.DocumentIndex.Add("citycode", part.CityCode).RemoveTags().Analyze());
    }
}

Как проиндексировать Field?

Нужно дескриптор филда FieldDriver. Например:

protected override void Describe(DescribeMembersContext context)
{
    context
        .Member(null, typeof(string), T("HTML"), T("The HTML value of the field."))
        .Enumerate<HtmlBlockField>(() => field => new[] { RemoveTagsRegex.Replace(field.HTML, " ") });
}

Как сделать для одного Part'a разные шаблоны для разных Display Type?

Возможно у Part'a есть несколько Shape, которые выводят одно и тоже, для разных DisplayType. Например у TitlePart есть Parts_Title, Parts_Title_Summary, Parts_Title_SummaryAdmin. Тогда нужно просто разрешить в Placement.info вывод нужного Shape и создать соответсвующий Razor-шаблон.

Если же у Part'a есть только один Shape. То можно воспользоваться возможностью задать свой Alternate в Placement.info. Например:

<Match ContentType="MyContentType">
  <Match DisplayType="Summary">
    <Place Parts_Tags_ShowTags="Content:4;Alternate=Parts_Tags_ShowTag_MyContentType_Summary"/>
  </Match>
  <Match DisplayType="Detail">
    <Place Parts_Tags_ShowTags="Content:4;Alternate=Parts_Tags_ShowTag_MyContentType_Detail"/>
  </Match>
</Match>

Теперь мы можем создать два Razor-шаблона:

/Views/Parts.Tags.ShowTag.MyContentType.Summary.cshtm
/Views/Parts.Tags.ShowTag.MyContentType.Detail.cshtml

Первый применится к Shape Parts_Tags_ShowTags только если он отображается при Display Type равном Summary, а второй если Display Type равен Detail.

Как опубликовать свой модуль в Orchard CMS Gallery?

Нужно собрать package, который потом можно будет разместить на gallery.orchardproject.net. Это делается командой:

>orchard.exe 
>package create Amba.ImagePowerTools d:\temp