Часто задаваемые вопросы по Orchard CMS.
- После компиляции Orchard CMS весит больше гигабайта. Это всё заливать на хостинг?
- Где в Orchard CMS Connection String к базе?
- Где в Orchard CMS смотреть логи?
- Меняю Migrations.cs, а изменения не применяются, что делать?
- @Display(Model.List) рендерит элементы UL LI, как их убрать?
- Как одному Tenant'у сопоставить несколько доменов?
- Как вставить ASP.NET MVC Controller в Orchard CMS?
- Как включить Shape Tracing?
- Search Content ничего не находит, как включить индексацию?
- Как проиндексировать Part?
- Как проиндексировать Field?
- Как сделать для одного Shape разные шаблоны для разных Display Type?
- Как опубликовать свой модуль в Orchard CMS Gallery?
После компиляции 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'ов, его можно включить на вкладке модулей.
Search Content ничего не находит, как включить индексацию?
На вкладке Recipes /Admin/Modules/Recipes
нужно создать индекс. Потом вам понадобится пройти по Content Type'ам, которые нужно индексировать и зачекать там галку.
Затем на странице /Admin/Indexing
нажать Update.
Как проиндексировать 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