Где надо размещать ссылку на сайт? Да везде, где можно и ничьи права не нарушаются. В первую очередь, естественно, на собственных ресурсах. В качестве таковых очень неплохо использовать картинки, размещаемые на форуме. Настроим один раз автоматическое нанесение watermark и дальше все картинки будут работать на посещаемость. Даже после скачивания на компьютер пользователя. А ведь нам этого и надо!
1. Копируем шаблон показа изображений
Находим в шаблоне форума forum.interface шаблон show_file и копируем его в шаблон сайта
2. Выносим отдельно обработчик изображений
Находим в шаблоне скрипт обработки изображений show_file.php по адресу /bitrix/components/bitrix/forum.interface/show_file.php
Копируем его в отдельную папку, описываем к ней путь
SITE_TEMPLATE_PATH."/include/forum/show_file.php
3. Редактируем скопированный шаблон показа изображений
Найдем в файле template.php скопированного шаблона show_file фрагмент кода
$arResult["RETURN_DATA"] = $GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:forum.interface",
"popup_image",
Array(
"URL" => ($arParams["SHOW_MODE"] == "RSS" ? $arResult["FILE"]["FULL_SRC"] : $arResult["FILE"]["SRC"]),
"SIZE" => $arParams["SIZE"],
"MAX_SIZE" => array("width"=> $arParams["WIDTH"], "height"=> $arParams["HEIGHT"]),
"HTML_SIZE" => $arParams["HTML_SIZE"],
"MODE" => ($arParams["SHOW_MODE"] == "RSS" ? "RSS" : "SHOW2IMAGES"),
"IMG_WIDTH" => $arResult["FILE"]["WIDTH"],
"IMG_HEIGHT" => $arResult["FILE"]["HEIGHT"],
"IMG_NAME" => $arResult["FILE"]["ORIGINAL_NAME"],
"IMG_SIZE" => $arResult["FILE"]["FILE_SIZE"],
"CONVERT" => $arParams["CONVERT"],
"FAMILY" => $arParams["FAMILY"],
"FILE" => $arParams["FILE"],
"MID" => $arParams["MID"],
"THIS_ATTACH" => $arParams["THIS_ATTACH"],
"ALT" => $arParams["ALT"],
"RETURN" => "Y"
),
($this->__component->__parent !== null ? $this->__component->__parent : $this->__component),
array("HIDE_ICONS" => "Y")
);
и заменяем на вызов нового обработчика графики
$arResult["FILE"]["SRC"] = SITE_TEMPLATE_PATH."/include/forum/show_file.php?fid=".$arResult["FILE"]["ID"];
$arResult["RETURN_DATA"] = $GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:forum.interface",
"popup_image",
Array(
"URL" => ($arParams["SHOW_MODE"] == "RSS" ? $arResult["FILE"]["FULL_SRC"] : $arResult["FILE"]["SRC"]),
"SIZE" => $arParams["SIZE"],
"MAX_SIZE" => array("width"=> $arParams["WIDTH"], "height"=> $arParams["HEIGHT"]),
"HTML_SIZE" => $arParams["HTML_SIZE"],
"MODE" => ($arParams["SHOW_MODE"] == "RSS" ? "RSS" : "SHOW2IMAGES"),
"IMG_WIDTH" => $arResult["FILE"]["WIDTH"],
"IMG_HEIGHT" => $arResult["FILE"]["HEIGHT"],
"IMG_NAME" => $arResult["FILE"]["ORIGINAL_NAME"],
"IMG_SIZE" => $arResult["FILE"]["FILE_SIZE"],
"CONVERT" => $arParams["CONVERT"],
"FAMILY" => $arParams["FAMILY"],
"FILE" => $arParams["FILE"],
"MID" => $arParams["MID"],
"THIS_ATTACH" => $arParams["THIS_ATTACH"],
"ALT" => $arParams["ALT"],
"RETURN" => "Y"
),
($this->__component->__parent !== null ? $this->__component->__parent : $this->__component),
array("HIDE_ICONS" => "Y")
);
4. Редактируем show_file.php
Находим в нем необходимый участок кода
if ($arParams['WIDTH'] > 0 && $arParams['HEIGHT'] > 0)
{
$imageFile = $arResult['FILE'];
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => $arParams["WIDTH"], "height" => $arParams["HEIGHT"]),
BX_RESIZE_IMAGE_PROPORTIONAL,
true,
);
$imageFile["FILE_SIZE"] = $arFileTmp['size'];
$imageFile["SRC"] = $arFileTmp['src'];
CFile::ViewByUser($imageFile, array("content_type" => $arResult["FILE"]["CONTENT_TYPE"]));
}
И заменяем на новый
if ($arParams['WIDTH'] > 0 && $arParams['HEIGHT'] > 0)
{
$imageFile = $arResult['FILE'];
$arFilters = Array(
array("name" => "watermark", "position" => "bottomright","alpha_level" => 50, "size"=>"real", "file"=>$_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH."/images/watermark.png")
);
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => $arParams["WIDTH"], "height" => $arParams["HEIGHT"]),
BX_RESIZE_IMAGE_PROPORTIONAL,
true,
$arFilters
);
$imageFile["FILE_SIZE"] = $arFileTmp['size'];
$imageFile["SRC"] = $arFileTmp['src'];
CFile::ViewByUser($imageFile, array("content_type" => $arResult["FILE"]["CONTENT_TYPE"]));
}
5. Сбрасываем кэш
У форума отдельно, у браузера отдельно.
Готово!
Назад в раздел