Как добавить картинку к объекту¶
Чтобы добавить картинки к некоему объекту (пусть он будет называться “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 — ширина картинки.
Сгенерированная картинка сохраняется в кэше, так что при следующем вызове пересчета не происходит.