Umbraco не выполняет код перед его отображением - PullRequest
0 голосов
/ 20 января 2012

Я работаю на сайте Umbraco (мой первый), и у меня возникла серьезная проблема с загрузкой изображения на одну из моих страниц.

Я создал новый шаблон и в одном разделе кода я вставилследующее:

<a href="{umbraco.library:NiceUrl($currentPage/../@id)}">"
<xsl:value-of select="$currentPage/../@nodeName" />
</a>

Когда я смотрю на результаты в браузере, он отображает результаты точно так же, он не выполняется перед рендерингом.то есть я вижу это, когда смотрю на «источник просмотра» в браузере:

<a href="{umbraco.library:NiceUrl($currentPage/../@id)}">
<xsl:value-of select="$currentPage/../@nodeName" />
</a>

Смущает то, что когда я запускаю следующее:

<img src='<umbraco:Item field="articlePhoto" runat="server"></umbraco:Item>' />

Фактически это генерируетсятег:

<img src="~/media/554/bath.png">

Главное, что я пытаюсь сделать, это загрузить динамическое поле / URL в тег изображения.

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

1 голос
/ 20 января 2012

Я предполагаю, что у вас действительно есть две проблемы здесь, и что они не связаны.


Первая проблема: код не выполняется

Вы пытаетесь выполнить код XSLT непосредственно внутри шаблона. Шаблон принимает только то, что вы обычно находите на странице ASPX (например, HTML, серверные элементы управления, зарегистрированные элементы управления Umbraco и т. Д.), И не будет анализировать какие-либо конструкции XSLT, а выводит их непосредственно в источник, как показано в вашем вопросе.

Вам потребуется создать файл XSLT в разделе для разработчиков вместе с соответствующим макросом, который обычно создается автоматически вместе с XSLT. Затем вы просто импортируете макрос в шаблон.

Фрагмент шаблона:

<umbraco:Macro Alias="MyMacro" runat="server" />

Фрагмент XSLT:

<a href="{umbraco.library:NiceUrl($currentPage/../@id)}">
    <xsl:value-of select="$currentPage/../@nodeName" />
</a>


Вторая проблема: изображение не отображается

Странно, что Umbraco подготавливает символ ~, поскольку ваш код действительно правильный (он работает на моем Umbraco - Версия 4.7.1). В качестве обходного пути попробуйте создать файл XSLT и использовать следующий код XSLT. По крайней мере, с помощью XSLT вы можете использовать логику кодирования, которая потребуется, когда ваши страницы станут более сложными.

XSLT-фрагмент:

<xsl:if test="$currentPage/articlePhoto != ''">
    <img src="{$currentPage/articlePhoto}" />
</xsl:if>


Надеюсь, это поможет.

...