«Водяные знаки» на картинках форума «Битрикс»

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

Где надо размещать ссылку на сайт? Да везде, где можно и ничьи права не нарушаются. В первую очередь, естественно, на собственных ресурсах. В качестве таковых очень неплохо использовать картинки, размещаемые на форуме. Настроим один раз автоматическое нанесение 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. Сбрасываем кэш

У форума отдельно, у браузера отдельно.


Готово!

Назад в раздел

Подписаться на новые материалы раздела:














CAPTCHA