Как добавить изображение вместо текста в пункт меню «Содержимое» в Orchard 1.7.1

Я прочитал и попытался воспроизвести шаги из этого вопроса/ответа Как расширить навигационный модуль Orchard для добавления изображений в пункты меню

  1. Создали MenuImagePart с полем выбора содержимого «Изображение»
  2. Добавили эту часть в "Контент меню"
  3. Изменен код в MenuItemLink-ContentMenuItem.cshtml.

Но получил следующую ошибку:

https://dl.dropboxusercontent.com/u/86009304/MenuImagePart.png

@using Orchard.Utility.Extensions;
@using System.Dynamic
@{

/* Getting the menu content item
***************************************************************/

var menu = Model.Content.ContentItem;

/* Creating a unique CSS class name based on the menu item
***************************************************************/

// !!! for some reason the following code throws: 'string' does not contain a definition for 'HtmlClassify'
//string test = menu.ContentType.HtmlClassify();
string cssPrefix = Orchard.Utility.Extensions.StringExtensions.HtmlClassify(menu.ContentType);
var uniqueCSSClassName = cssPrefix + '-' + Model.Menu.MenuName;
/* Adds the normal and hovered styles to the html if any
***************************************************************/
if (menu.MenuImagePart != null)
{
    if (!string.IsNullOrWhiteSpace(menu.MenuImagePart.Image.Url))
    {
    using(Script.Head()){
    <style>
        .@uniqueCSSClassName {
            background-image: url('@Href(menu.MenuImagePart.Image.Url)');
            width: @{@menu.MenuImagePart.Image.Width}px;
            height: @{@menu.MenuImagePart.Image.Height}px;
            display: block;
        }
    </style>
    }
    }
    if (!string.IsNullOrWhiteSpace(menu.MenuImagePart.HoverImage.Url))
    {
    using(Script.Head()){
    <style>
        .@uniqueCSSClassName:hover {
            background-image: url('@Href(menu.MenuImagePart.HoverImage.Url)');
            width: @{@menu.MenuImagePart.HoverImage.Width}px;
            height: @{@menu.MenuImagePart.HoverImage.Height}px;
        }
    </style>    
    }
    }
}
}    
<a class="@uniqueCSSClassName" href="@Model.Href">@Model.Text</a>

Что я сделал неправильно и как мне создать это изображение, чтобы добавить его во вновь созданный «Элемент меню содержимого»?


person Volodymyr    schedule 25.11.2013    source источник


Ответы (1)


У вас есть поле выбора контента, вам нужно поле выбора медиа (если вы используете Orchard 1.6).

person Hazza    schedule 26.11.2013
comment
Спасибо за ответ, но я использую 1.7.1 - person Volodymyr; 29.11.2013
comment
Затем вы хотите использовать MediaGalleryField (я полагаю). ContentPickerField неверен - person Hazza; 29.11.2013