Изображения, управляемые CMS, получают нулевую высоту и ширину при некоторых перезагрузках.

Я использую Composite C1 CMS v4.2 Update 1. На некоторых моих страницах, которые используют раздел «Медиа» и некоторые программные изображения из раздела «Медиа», я периодически получаю ширину и высоту, равные 0, для всех изображений, которые выходят. раздела «Медиа», если я специально не укажу ширину и высоту изображений. Ниже приведен пример программно заполненных изображений. Я полагаю, что мог бы попытаться заполнить высоту и ширину с помощью кода, но Composite C1, похоже, делает это с помощью метода MediaURL() ниже, просто в некоторых случаях он делает их равными 0. В разделе «Контент CMS», когда я специально добавляю высоту и ширину, он работает нормально, однако в свойствах изображения WYSIWYG нет диалогового окна высоты и ширины, поэтому вам приходится заходить в источник и редактировать тег IMG вручную. Надеюсь, я делаю что-то серьезное здесь неправильно, потому что кажется, что это будет проблемой для нас.

@{
    string folderPath = CurrentPageNode.Url.Substring(10).Replace("/","_");
    folderPath = "/" + folderPath;
    var images = Data.Get<IImageFile>().Where(image => image.FolderPath == folderPath).OrderBy(image => image.FileName).ToList();
    string cssClass = "";
 }

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://www.composite.net/ns/function/1.0">
<head>
</head>
<body>      
    <div class="row">
        @foreach (var image in images)
        {
            if (image.FileName.Length > 11 && image.FileName.ToLower().Substring(0,11) == "application")
            {
                cssClass = image.FileName.Substring(image.FileName.IndexOf("_")+1).Replace(".png","");
                <div class="col-md-12">
                    <div class="application">
                        <a href="@image.Description">
                            <img src="@Html.C1().MediaUrl(image)" alt="@image.Title" />
                        </a>
                        <a href="@image.Description">
                            <div class="squareText @cssClass">@image.Title</div>
                        </a>
                    </div>
                </div>
            }
        }
    </div>
</body>


person Crob    schedule 14.11.2014    source источник


Ответы (1)


в свойствах изображения WYSIWYG нет диалогового окна высоты и ширины

Когда вы вручную вставляете изображение на страницу в визуальном редакторе, на вкладке «Дополнительно» диалогового окна «Свойства изображения» вы можете установить «Максимальная ширина» и/или «Максимальная высота».

(См. http://users.composite.net/Insert-Image)

В разметке он добавит к URL-адресу изображения два параметра, например:

<img src="~/media(40ef35a6-2ed9-4daa-a5db-c47ecc13e6d6)?mw=20&amp;mh=20" />

URL-адреса изображений в Composite C1 поддерживают еще больше параметров (например, «w» для ширины и «h» для высоты), которые вы можете использовать при их создании. Дополнительная информация о параметрах находится здесь: http://docs.composite.net/Configuration/Resizing-Images

Что касается создания URL-адресов, в функциях C1 Razor у вас есть как минимум два способа сделать это — http://docs.composite.net/Functions/Razor/Rendering-URLs

Когда вы используете это, например:

<img src="~/media(@Image)" />

or

<img src="@Html.C1().MediaUrl(@Image)" />

просто добавьте свои параметры и даже используйте переменные для значений. Скажем, ваша функция Razor имеет два входных параметра, таких как ширина и высота, вы можете сделать так:

<img src="~/media(@Image)?mw=@Width&amp;@Height" />
<img src="@Html.C1().MediaUrl(@Image)?mw=@Width&amp;@Height" />

Надеюсь, вся эта информация поможет вам в ваших задачах.

person wysocki    schedule 20.11.2014
comment
Спасибо за ответ, хотя я действительно попробовал атрибут mw, mh, прежде чем отправить этот вопрос. Я исключил это из своего вопроса для краткости, хотя это, вероятно, было ошибкой. Я только что попробовал атрибуты w=45 и h=45, но, к сожалению, это тоже не решает эту проблему. Мне по-прежнему приходится использовать стандартные атрибуты ширины и высоты HTML, иначе Composite C1 будет периодически присваивать моим изображениям ширину и высоту, равные 0. - person Crob; 20.11.2014