Реализация контейнера, который использует значок стандарта DotNetNuke.
<%@ Control AutoEventWireup="false" Explicit="True"
Inherits="DotNetNuke.UI.Containers.Container" %>
<%@ Register TagPrefix="dnn" TagName="icon"
Src="~/Admin/Containers/Icon.ascx" %>
<dnn:icon id="dnnICON" runat="server" CssClass="img-circle" />
Это отображает HTML-модуль на страницу, но не передает имя класса css, поэтому изображение не используется.
Редактирование /admin/containers/icon.ascx.cs Я добавил следующий код:
namespace DotNetNuke.UI.Containers
{
public partial class Icon : SkinObjectBase
{
public string CssClass { get; set; }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
try
{
if (!String.IsNullOrEmpty(CssClass))
{
imgIcon.CssClass = CssClass;
}
}
catch (Exception exc)
{
Exceptions.ProcessModuleLoadException(this, exc);
}
}
}
Это имеет желаемый эффект передачи CSS-классов в HTML-модуль на странице и, похоже, ничего не сломал, но я обеспокоен тем, что, как только обновление перезапишет каталог администратора, все мои изменения будут уничтожены.
Есть ли правильный способ сделать это, используя файл в папках скинов? Могу ли я сделать это из контейнера?
Я бы обернул элемент управления dnn: icon в DIV и настроил его таким образом.
<div class="dnnIcon"><dnn:icon id="dnnICON" runat="server" CssClass="img-circle" /></div>
то в вашем CSS что-то вроде
.dnnIcon IMG{ STYLE GOES HERE }
Вы правы, что такое изменение, которое у вас будет, будет потеряно во время следующего обновления DNN, если вы не измените его там.
Другим вариантом было бы отправить запрос Pull на GitHub на проект платформы dnn, чтобы увидеть, будет ли DNN Corp включать ваши изменения в будущую версию, чтобы вы могли настроить таргетинг на значок, не выполняя его вручную ни через код, ни через мой предложенный метод,