Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Просьба подсказать, как сделать так, чтобы фотографии объектов, которые загружаются нами, при добавлении несжимались настолько сильно, как это делается по умолчанию в UMI? Например, чтобы 100% оригинал уменьшался на -20/-25%, не более.  Дело в том, что сжатые "превью" низкого качества, а хотелось бы, чтобы они были презентабельными (как в категориях, так и в карточках товаров). Размеры ширины и высоты по умолчанию нас пока устраивают.

Буду признателен за подсказки и советы по устранению данного недостатка на наш взгляд.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Цитировать
чтобы фотографии объектов, которые загружаются нами, при добавлении несжимались настолько сильно, как это делается по умолчанию в UMI

Umi при загрузке не сжимает фото (см. примечание ниже), сжимаются они при выводе при помощи макроса %system makeThumbnail()% или %system makeThumbnailFull()%. У обоих макросов есть параметр задающий качество превью, которое задается при преобразовании. Вам надо найти, где в вашем шаблоне вызываются данные макросы и проставить им качество 100%.

Если вы используете demodizzy, то шаблон, в котором непосредственно происходит вызов данных макросов лежит в файле /templates/demodizzy/xslt/library/thumbnails.xsl


Примечание: Для защиты от загрузки в картинках вредоносного кода (в код картинки прописываются лишние данные) все картинки при загрузке проверяются через gd библиотеку/ При этой проверке, качество картинки действительно немного портится. Этого можно избежать, загрузив картинки не через админку (файловый менеджер),  а через ftp. Затем уже выбрать, загруженные таким образом картинки, через файловый менеджер.

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Строку, которая вызывает вышеописанные Вами макросы в указанном файле я нашел, а вот как и куда прописать quality='100' не могу понять (в интернете тоже не нашел решение). Вот код вывода этих макросов:

<xsl:template match="udata[@module = 'system' and (@method = 'makeThumbnail' or @method = 'makeThumbnailFull')]">
...не стал весь код указывать... - здесь параметры img...
</xsl:template>

Каким образом можно прописать сюда качество картинок?

P.S. Относительно того, что UMI сжимает картинки я от части был прав (ваше примечание). В отдельных случаях так и поступаем, т.е. загружаем фото через FTP.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
этот параметр должен передаватсья при вызове данной функции например вот так
...
<xsl:apply-templates select="document(concat('udata://system/makeThumbnailFull/(.', $src, ')/', $width, '/', $height, '/void/0/1///100'))/udata">
...

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Спасибо! Данную строку тоже нашел, прописал аналогично, как на Вашем примере. Правильно ли я понимаю, что "document(concat('udata://system/makeThumbnailFull/(.', $src, ')/', $width, '/', $height, '/void/0/1///100'))/udata" улучшает качество изображений по обоим макросам (makeThumbnail и makeThumbnailFull)?! Или для makeThumbnail надо сделать что-то похожее, например:

<xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', $src, ')/', $width, '/', $height, '/void/0/1///100'))/udata">

Данный вопрос вытекает из того, что в категориях, где выводятся превью, незаметно, улучшилось ли качество или нет.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
мой привет относиться только к макросу makeThumbnailFull

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
А как на счет макроса makeThumbnail? - в thumbnails.xsl есть темплейт <xsl:template name="thumbnail">. Пробовал внутри прописать <xsl:param name="quality">100</xsl:param> - отличие в качестве изображений не нашел, т.е. без изменений. Хотел услышать Ваши комментарии и советы по этому поводу.
« Последнее редактирование: 05 Октября 2014, 22:58:38 от sam »
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
sam, для того, чтобы указать улучшить качество, вам надо проверить передается ли соответствующий параметр при вызове макроса (об этом мы уже говорил выше). Вам остается только найти где вызывается макрос (с макросом makeThumbnailFull видимо проблем не возникло, так что стоит перейти к макросу makeThumbnail.

Если я правильно понял ваш вопрос, то у вас сложность именно в том, чтобы понять в каком месте вызывается макрос. Так как информация, о том как вызывать макрос и соответственно как найти похожий вызов в шаблоне является основополагающей, предлагаю ознакомиться с этим базисом.

Если я неверно понял ваше затруднение или после прочтения останутся вопросы, пишите.

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
admin, Вы правы, сложности возникли при поиске вызова макроса makeThumbnail (c makeThumbnailFull вопрос закрыт). Ознакомившись документом по Вашей ссылке, я так понял, что макрос вызыватся так, как я уже писал ранее <xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', $src, ')/', $width, '/', $height, '/void/0/1///100'))/udata">, т.е. аналогично предыдущему вызову. Но, после подобного вызова на сайте выводиться ошибка. Не хотел Вас грузить кодами, но вот содержимое thumbnails.xsl (нет там вызова макроса makeThumbnail):

	<xsl:template name="catalog-thumbnail">
<xsl:param name="element-id" />
<xsl:param name="field-name" />
<xsl:param name="empty" />
<xsl:param name="width">auto</xsl:param>
<xsl:param name="height">auto</xsl:param>

<xsl:variable name="property" select="document(concat('upage://', $element-id, '.', $field-name))/udata/property" />

<xsl:call-template name="thumbnail">
<xsl:with-param name="width" select="$width" />
<xsl:with-param name="height" select="$height" />

<xsl:with-param name="element-id" select="$element-id" />
<xsl:with-param name="field-name" select="$field-name" />
<xsl:with-param name="empty" select="$empty" />

<xsl:with-param name="src">
<xsl:choose>
<xsl:when test="$property/value">
<xsl:value-of select="$property/value" />
</xsl:when>
<xsl:otherwise>&empty-photo;</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>

<xsl:template name="thumbnail">
<xsl:param name="src" />
<xsl:param name="width">auto</xsl:param>
<xsl:param name="height">auto</xsl:param>
<xsl:param name="empty" />

<xsl:param name="element-id" />
<xsl:param name="field-name" />

<xsl:apply-templates select="document(concat('udata://system/makeThumbnailFull/(.', $src, ')/', $width, '/', $height, '/void/0/1///100'))/udata">
<xsl:with-param name="element-id" select="$element-id" />
<xsl:with-param name="field-name" select="$field-name" />
<xsl:with-param name="empty" select="$empty" />
</xsl:apply-templates>
</xsl:template>

<xsl:template match="udata[@module = 'system' and (@method = 'makeThumbnail' or @method = 'makeThumbnailFull')]">
<xsl:param name="element-id" />
<xsl:param name="field-name" />
<xsl:param name="empty" />
<xsl:variable name="altimg" select="document(concat('upage://', $element-id, '.', 'h1'))/udata/property/value" />
<xsl:variable name="titleimg" select="document(concat('upage://', $element-id, '.', 'h1'))/udata/property/value" />
<xsl:variable name="photo" select="document(concat('upage://', $element-id, '.', 'photo'))/udata/property/value" />

<img src="{src}" width="{width}" height="{height}">
<xsl:if test="$element-id and $field-name">
<xsl:attribute name="umi:element-id">
<xsl:value-of select="$element-id" />
</xsl:attribute>

<xsl:attribute name="umi:field-name">
<xsl:value-of select="$field-name" />
</xsl:attribute>

<xsl:attribute name="id">
<xsl:value-of select="string('zoom')" />
</xsl:attribute>

<xsl:attribute name="data-zoom-image">
<xsl:value-of select="$photo" />
</xsl:attribute>
  </xsl:if>

<xsl:if test="$empty">
<xsl:attribute name="umi:empty">
<xsl:value-of select="$empty" />
</xsl:attribute>
</xsl:if>

<xsl:if test="$altimg and $titleimg">
<xsl:attribute name="alt">
<xsl:value-of select="$altimg" />
</xsl:attribute>
  <xsl:attribute name="title">
<xsl:value-of select="$titleimg" />
</xsl:attribute>
</xsl:if>
</img>
</xsl:template>
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
если в файле thumbnails.xsl нет вызова udata://system/makeThumbnail/, то, либо он вызывается где-то еще, либо в вашем шаблоне для вывода картинок используется только udata://system/makeThumbnailFull/

P.S. в файлах umi c demodizzy, которые у меня под рукой я не нашел вызовов макроса udata://system/makeThumbnail/. Возможно у вас на сайте также нет такого вызова. Если вы хотите проверить какой-то конкретный шаблон (например, картинки с плохим качеством есть при выводе картинки анонса новости), то найдите шаблон выводящий данное место (в случае со списком новостей, смотрите шаблоны в файлах из папки /templates/demodizzy/xslt/modules/news). И если там будет вызов макроса  udata://system/makeThumbnail/, то там и меняйте\подставляйте параметр качества картинки.

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Кажется мы с Вами друг друга правильно поняли. Вызова макроса makeThumbnail нет. В файлах указанной Вами директивы тоже ничего аналогичного нет. Но тем не менее, где-то ведь макрос вызывается наверное - а где, это уже загадка?!

Если кто-то знает, где в xslt (demodizzy) вызывается макрос makeThumbnail (udata://system/makeThumbnail/) для создания и вывода уменьшенного изображения (миниатюры) картинки, пишите.

В thumbnails.xsl такого вызова нет. В этом файле есть только вызов макроса makeThumbnailFull.

Спасибо!
« Последнее редактирование: 06 Октября 2014, 11:08:29 от sam »
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
в файлах demodizzy вызова udata://system/makeThumbnail нет, по крайне мере в моем примере. И вы не совсем верно интерпритировали мое сообщение. Оно как раз и говорило о том, чтобы убедиться что именно у вас нет такого вызова или где он есть, если он есть. То просто выясните шаблон который используется в том месте где вы видите картинки плохого качества.

Так, где у вас выводятся картинки плохого качества? В товаре, в списке товаров, в новостях или еще где?

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Уважаемый admin, я не Ваше сообщение интерпретировал. Моё личное наблюдение в счет не берёте? Ели в наших с Вами шаблонах нет этого вызова, значит у большинства также.

Теперь ответ на Ваш вопрос: меня интересует качество, как в объектах каталога, так и категориях с ними (цитата из моего первого сообщения: "как в категориях, так и в карточках товаров"). Макрос makeThumbnailFull улучшил немного качество, кажется в категориях. Понимаю, что один макрос создает просто миниатюру, а другой с возможностью её обрезки. Со вторым (makeThumbnailFull) вопрос вроде решили, а с первым (makeThumbnail) нет.

Должен же быть выход, если makeThumbnail не вызывается, то как-то вызвать его и указать качество?
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Уважаемый admin, я не Ваше сообщение интерпретировал. Моё личное наблюдение в счет не берёте? Ели в наших с Вами шаблонах нет этого вызова, значит у большинства также.

Согласен, невнимательно прочитал ваше предыдущее сообщение

Теперь ответ на Ваш вопрос: меня интересует качество, как в объектах каталога, так и категориях с ними (цитата из моего первого сообщения: "как в категориях, так и в карточках товаров"). Макрос makeThumbnailFull улучшил немного качество, кажется в категориях. Понимаю, что один макрос создает просто миниатюру, а другой с возможностью её обрезки. Со вторым (makeThumbnailFull) вопрос вроде решили, а с первым (makeThumbnail) нет.
Раз мы говорим о странице конкретного товара и списка товаров , то смотрим шаблоны /teamplates/demodizzy/xslt/modules/catalog/object-view.xsl и /teamplates/demodizzy/xslt/modules/catalog/common.xsl соответственно. В них есть вызовы
<xsl:call-template name="catalog-thumbnail">
<xsl:with-param name="element-id" select="page/@id" />
<xsl:with-param name="empty">&empty-photo;</xsl:with-param>
<xsl:with-param name="field-name">photo</xsl:with-param>
<xsl:with-param name="width">281</xsl:with-param>
</xsl:call-template>

которые нас опят приводят к файлу /templates/demodizzy/xslt/library/thumbnails.xsl и к макросу makeThumbnailFull.

Получается, что если параметр качества подставлен верно, то картинки нужного качества и тогда вопрос уже чисто графический. То есть, возможно , для получения картинок лучшего качества нужно уже создавать превью руками. Хотя если вам не сложно приведите пример из картинок (оригинал, уменьшенная копия), может там что-то прояснится

Должен же быть выход, если makeThumbnail не вызывается, то как-то вызвать его и указать качество?
Вполне возможно, что у вас на сайте данный макрос вообще не используется. Так что если он в шаблонах не вызывается, то дело не в нем.

*

sam

  • ***
  • 215
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Цитировать
Согласен, невнимательно прочитал ваше предыдущее сообщение

Отнюдь, я не считаю, что Вы прочитали сообщение невнимательно, тем более, что и тема такая же. Просто, возможно сообщений много у Вас, а эту тему мы с Вами уже который день обсуждаем.

Цитировать
Получается, что если параметр качества подставлен верно, то картинки нужного качества и тогда вопрос уже чисто графический. То есть, возможно , для получения картинок лучшего качества нужно уже создавать превью руками.

Как вариант, но это уже отдельный вопрос. Да и сколько сил и времени надо для этого. Если честно, даже как вариант отпадает - по 2 превью создавать, еще и вручную.

Цитировать
Хотя если вам не сложно приведите пример из картинок (оригинал, уменьшенная копия), может там что-то прояснится

Оригинал - размеры 843х639 px, уменьшенные копии создают уже макросы.

Если Вы пишите, что возможно задействован один макрос, значит так оно и есть.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.