Крупнейшая биржа рекламы в Телеграм
0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 7162 Просмотров
*

beliyadm

  • Moderator
  • 9512
  • 1651 / 66
  • Севастополь == Россия
Итак представляю еще один хак многострадальной галереи, добавляем водяной знак (watermark) на мини-эскиз.
Предупреждение - хак не проверен на рабочих сайтах, просьба соблюдать осторожность и делать резервные копии файлов.

1 - делаем картинку watermark_small.png (у меня она просто с непрозрачным фоном в примере) и кладем по адресу \components\com_datsogallery Размер картинки делается в соответствии с размером мини-эскиза.

2 - файл datsogallery.php
После строки
Код
$thumbnailpath       = $mosConfig_live_site . $ad_paththumbs . "/";
добавляем еще одну
Код
$thumbnaildir       = $mosConfig_absolute_path . $ad_paththumbs . "/";

находим строки
Код
    $dghits = _DG_HITS;
    $dgvotes = _DG_RATING;
    $dgcomment = _DG_COMMENT1;
и прямо перед ними вставляем
Код
    //Добавляем watermark
    $wm = $mosConfig_live_site."/".$dgurl."&func=wmark";
    $wm = str_replace("&","&",$wm)."&";
    ////////////////////
Далее на пару строк ниже находим
Код
echo "onmouseout=\"return nd();\"><img src='$thumbnailpath$row1->imgthumbname' style='".$ad_imgstyle."' alt='".$tle."' /></a><br />";
и заменяем на
Код
echo "onmouseout=\"return nd();\"><img src='".$wm."tid=".$row1->id."' style='".$ad_imgstyle."' alt='".$tle."' /></a><br />";

3 - файл sub_wm.php - полностью заменяем его содержимое на:
Код
<?php
    /***************************************************\
**   DatsoGallery - A Joomla! Gallery Component    **
**   Copyright (C) 2006-2008  by Andrey Datso      **
**   Version     : 1.6                             **
**   Homepage    : http://www.datso.fr             **
**   License     : Copyright, don't distribute     **
    **   Modified by : Aliaksandr Rudik                **
\***************************************************/

    defined ('_VALID_MOS') or die('Direct Access to this location is not allowed.');
    $pic = "";
    $path = "";
    $id = 0;
    $tid = intval( mosGetParam( $_REQUEST, 'tid', 0 ) );
    $mid = intval( mosGetParam( $_REQUEST, 'mid', 0 ) );
    $oid = intval( mosGetParam( $_REQUEST, 'oid', 0 ) );
    if ($tid) {
    $pic = "imgthumbname";
    $path = $thumbnaildir;
    $id = $tid;
    $watermark = $gallerydir.'/watermark_small.png';
    } else if ($mid) {
    $pic = "imgfilename";
    $path = $picturedir;
    $id = $mid;
    $watermark = $gallerydir.'/watermark.png';
    } else if ($oid) {
    $pic = "imgoriginalname";
    $path = $originaldir;
    $id = $oid;
    $watermark = $gallerydir.'/watermark.png';
    }

    if ($id) {
    $database->setQuery("select c.access "
    . " from #__datsogallery_catg as c "
    . " left join #__datsogallery as a on a.catid = c.cid "
    . " where a.id = $id ");
    $c_access = $database->loadResult();

    if ($gid < $c_access) {
    exit;
    }else{
    $database->setQuery("select a.$pic "
    . " from #__datsogallery as a "
    . " where a.id = $id ");

    $pic = $database->loadResult();
    $pic = $path.$pic;
    }

    $img_info = getimagesize($pic);
    if (!$img_info) {
    exit;
    }else{
    //$watermark = $gallerydir.'/watermark.png';
    $watermark = imagecreatefrompng($watermark);
    $watermark_width = imagesx($watermark);
    $watermark_height = imagesy($watermark);
    $image = imagecreatetruecolor($watermark_width, $watermark_height);
    $image = imagecreatefromjpeg($pic);
    $size = getimagesize($pic);
    $dest_x = $size[0] - $watermark_width - 5;
    $dest_y = $size[1] - $watermark_height - 5;
    imagecopyresampled($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);
    header('content-type: image/jpeg');
    imagejpeg($image, '', $dest_qual=95);
    imagedestroy($image);
    imagedestroy($watermark);
    }
    }
?>

Все, хак окончен, как оно выглядит и работает у меня - в вложении.
Проверялось на оригинальной 12-й версии и 1.6 галереи

[вложение удалено Администратором]
« Последнее редактирование: 05.02.2008, 01:55:16 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Jekos

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Re: Отображение Watermark в мини эскизах
« Ответ #1 : 05.02.2008, 02:07:41 »
Мною установлен хак этот на версию 1.4.1. Работает отлично.
Только не совсем по инструкции сдедал. в версии 1.4.1 нет в файле datsogalerry.php строки
echo "onmouseout=\"return nd();\"><img src='$thumbnailpath$row1->imgthumbname' style='".$ad_imgstyle."' alt='".$tle."' /></a><br />";
там надо искать
<img src='$thumbnailpath$row1->imgthumbname' style='".$ad_imgstyle."' alt='".$tle."' /></a><br />";
и менять на
<img src='".$wm."tid=".$row1->id."' style='".$ad_imgstyle."' alt='".$tle."' /></a><br />";
*

beliyadm

  • Moderator
  • 9512
  • 1651 / 66
  • Севастополь == Россия
Re: Отображение Watermark в мини эскизах
« Ответ #2 : 05.02.2008, 02:12:18 »
Jekos - благодарю, версии действительно различаются. Ссылку дашь посмотреть в работе?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Jekos

  • Осваиваюсь на форуме
  • 31
  • 2 / 0
Re: Отображение Watermark в мини эскизах
« Ответ #3 : 05.02.2008, 02:31:52 »
Да, конечно  ^-^
Это сразу ссылка на миниэскизы, не пугайтесь, они у меня большие ))

http://www.rg-reklama.ru/component/option,com_datsogallery/Itemid,171/func,viewcategory/catid,49/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема при переходе по мини-эскизу

Автор konservator

Ответов: 0
Просмотров: 1589
Последний ответ 22.03.2013, 22:26:00
от konservator
Соразмерный Watermark

Автор 2ball

Ответов: 0
Просмотров: 1329
Последний ответ 22.12.2011, 13:08:34
от 2ball
Описание категории при просмотре мини эскизов для 1.8.4

Автор Webprohozhiy

Ответов: 1
Просмотров: 1612
Последний ответ 01.10.2011, 20:27:58
от hlopusha16
От мини-эскизов сразу в лайтбокс. Как сделать? DatsoPic

Автор kans

Ответов: 15
Просмотров: 13376
Последний ответ 27.02.2010, 22:19:48
от Peroon