UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: KTI от 11 Октября 2012, 09:24:02

Название: Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: KTI от 11 Октября 2012, 09:24:02
суть в чем, есть вызов шаблона:
<a href="{.//property[@name ='photo']/value}">
<xsl:call-template name="catalog-thumbnail">
<xsl:with-param name="element-id" select="page/@id" />
<xsl:with-param name="field-name">photo</xsl:with-param>
<xsl:with-param name="width">200</xsl:with-param>
</xsl:call-template>
</a>
который возвращает тег <img>, вопрос в том как в него (в этот тег) вставить атрибут alt?
менять штатный шаблон thumbnails.xsl не хотелось-бы
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: Rodogor от 11 Октября 2012, 09:44:14
Если не хотите менять штатный, скопируйте его полностью, подключите (или прям там же оставьте, изменив, а точнее добавив только mode) и сделайте изменения.
К вызову добавьте
<xsl:with-param name="alt">alt</xsl:with-param>

А в шаблоне <xsl:template name="thumbnail"> вызов макроса makeThumbnailFull так же разветвите через mode="my_thumb"

Вызов этого макроса так же нужно снабдить 
<xsl:with-param name="alt">alt</xsl:with-param>

Ну и соответственно в my_thumb сделайте <xsl:param name="alt" />

 <xsl:attribute name="alt"><xsl:value-of select="$alt"/>         </xsl:attribute> внутри img
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: KTI от 11 Октября 2012, 10:34:20
Примерно так я и представлял, просто в штатном thumbnails.xsl, шаблон name="catalog-thumbnail" вызывает просто name="thumbnail" а тот в свою очередь вызывает еще шаблон.
Когда и где его делить?  :-\

А нет возможности вставить атрибут в тег, которые уже создался?
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: Rodogor от 11 Октября 2012, 11:47:19
<xsl:template name="catalog-thumbnail"> .......
если не хочешь вносить изменения в оригинальнео, то полностью копируешь и меняешь имя catalog-thumbnail-MY

Потом так же с thumbnail.

На сколько я понимаю, то возможность добавить атрибут в созданный тег можно реализовать таким образом. К примеру, когда создаём thumb картинке припишем id="thumb_111", где 111 - id картинки/объекта. Далее генерируем на jquery $('#thumb_111").attr("alt","ololo");
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: KTI от 11 Октября 2012, 12:10:42
ну во первых, чтобы добавить id нужно тоже шаблон менять, т.к. он выдает уже готовый <img>, замкнутый круг
во вторых не хотелось бы приплетать jquery для такой простой задачи.
Наверно придется штатный шаблон менять. Он же при обновлении не перезатрется?
Только тогда не вижу смысла его (шаблон) разделять, просто добавлю обработку параметра alt, если есть (в параметрах) то добавляем, если нет, то нет.
Народ, кто как добавляет alt к превьюшкам, через вызов шаблона thumbnail?
Или по другому спрошу: кто как делает превьюшки?
Или как с помощью xslt добавить атрибут к созданному тегу?
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: Rodogor от 11 Октября 2012, 13:39:19
Я действительно не подумал, что что бы id прописать надо менять. Но ничто не запрещает задать id или класс ссылки, в которую помещается превью, а там уже через find('img') найти
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: admin от 16 Октября 2012, 12:21:16
jQuery все таки мешать сюда без надобности не стоит. Хотя для некоторых случаев удобно.

А насчет alt и прочих параметров, все как и выше описано. Создал свой вариант templates для вывода картинок, которому передаются все необходимые параметры, в том чисте и alt
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: KTI от 17 Октября 2012, 09:55:58
Я так и сделал: изменил шаблон thumbnails.xsl - там ничего сложного нет
Вопрос все-таки открытый: возможно-ли после создания элемента добавить к нему атрибут или значение? мне кажется что средствами xslt никак..
Название: Re:Добавление атрибута ALT в шаблон catalog-thumbnail
Отправлено: admin от 17 Октября 2012, 10:36:32
средствами xslt легко добавить атрибут, но делается это так

<input type="text" name="some_name" value="дефолтное значение" >
<xsl:attribute name="value">новое значение</xsl:attribute>
</input>

то есть инструкция по добавлению атрибута должна быть между открывающимся и закрывающимся тегом, а img возвращается уже закрытым тегом вида
<img src="..." width="..." height="..." />