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