Как добавить картинку к объекту

Чтобы добавить картинки к некоему объекту (пусть он будет называться “mod”) без создания новых таблиц связей и хранения, необходимо:

Шаг ​1. В шаблоне вставить следующую строку:

{include file=”common/attach_images.tpl” image_name=”mod_main” image_object_type=”common” image_pair=$mod.main_pair image_object_id=$mod.mod_id image_type=”M”}

В этом случае в шаблоне появятся два плейсхолдера для детальной и обычной картинки.

Параметры:

  • image_name — уникальное имя, идентифицирующее пару картинок для данного объекта.
  • image_object_type — тип объекта, в котором будут храниться картинки в данном случае в таблице cscart_common_images_links, cscart_common_images, cscart_detailed_images.
  • image_pair — массив, содержащий информацию об уже загруженной паре (как его получить — см. ниже).
  • image_object_id — идентификатор объекта, к которому будет присоединяться пара картинок.
  • image_type — тип пары: M - основная, A - дополнительная (в большинстве случаев — только основная).

Шаг ​2. В php коде, который отвечает за обновление объекта пишем:

<?php

fn_attach_image_pairs('mod_main', 'common', 0, 'mod');
?>

Где:

  • ads_main == параметру image_name в шаблоне.
  • common == параметру image_object_type в шаблоне.
  • 0 — идентификатор объекта, к которому привязываются картинки — можно не задавать, если в шаблоне передан параметр image_object_id. Обязательно задавать, если данная функция используется при создании объекта, т.к. в шаблоне привязки картинок к нему еще нет.
  • mod — имя таблицы, содержащей данный объект (другими словами, это параметр object_table в таблице common_images_links; если таблица со ссылками используется своя, то параметр задавать не нужно — например, для товаров).

Шаг ​3. В php коде, который отвечает за выборку информации об объекте, пишем:

<?php

$mod['main_pair'] = fn_get_image_pairs($mod_id, 'common', 'M', 'mod');
?>

Где:

  • $mod_id - идентификатор объекта, для которого выбираем картинки.
  • common == параметру image_object_type в шаблоне.
  • M == параметру image_type в шаблоне.
  • mod — то же самое, что и последний параметр в fn_attach_image_pairs.

Шаг ​4. В php коде, который отвечает за удаление объекта, пишем:

<?php

fn_delete_image_pairs($mod_id, 'common', 'mod');
?>

Где:

  • $mod_id — идентификатор объекта, для которого удаляем картинки.
  • common == параметру image_object_type в шаблоне.
  • mod - то же самое, что и последний параметр в fn_attach_image_pairs.

Вот собственно и все — удаление картинок/пар происходит через скрипт image.php и никакого кода каждый раз писать не требуется.

Описание всех параметров шаблона attach_images.tpl:

  • image_key — уникальный ключ массива (если используется загрузка нескольких картинок одновременно, по умолчанию - 0).
  • image_name — уникальное имя, идентифицирующее пару картинок для данного объекта.
  • image_object_type — тип объекта, в котором будут храниться картинки.
  • image_object_id — идентификатор объекта, для которого загружаются картинки.
  • image_type — тип пары: M — main, A — additional.
  • icon_title — заголовок для иконки (\$lang.thumbanil по умолчанию).
  • icon_text — описание для иконки (пустой по умолчанию).
  • detailed_title — заголовок для детальной картинки (\$lang.popup_larger_image по умолчанию).
  • detailed_text — описание для детальной картинки (пустой по умолчанию).
  • hide_titles — если true, то скрывает заголовки и описания.
  • hide_images — если true, то скрывает картинки (оставляет только форму для загрузки).
  • no_detailed - если true, не показывает детальную картинку.
  • delete_pair — если true, показывается ссылка для удаления пары.

Изменения размера “на лету”

Добавлена возможность изменять размер картинок “на лету” на витрине. Для этого надо вызвать следующий URL:

image.php?mode=show_thumbnail&image_id=XX&object_type=YY&width=ZZ, где:

  • XX — ID картинки.
  • YY — тип объекта (product, detailed, category, common).
  • ZZ — ширина картинки.

Сгенерированная картинка сохраняется в кэше, так что при следующем вызове пересчета не происходит.