VirtueMart: установка водяного знака (watermark для lightbox)


Продолжая работать над интернет-магазином, от дизайнера поступила просьба добавить водяной знак компании на все большие картинки товаров, а именно на картинки, которые всплывают в режиме lightbox.

Хорошо погуглив, мной было найдено 2 скрипта:

I. С добавлением трех готовых файлов: .htaccess, watermark.php и watermark.png. Этот принцип вставки водяного знака присутствует в нескольких вариантах. Основные:
http://forum.virtuemart.net/index.php?topic=53582.0;
http://www.joomlaforum.ru/index.php?topic=35335.0;
http://joomlaforum.ru/index.php/topic,53858.0.html;
http://webkev.com/2009/09/26/watermark-dlya-virtuemart/.

Эти скрипты, тем не менее, не удалось установить на моем интернет-магазине, который сам по себе являлся поддоменом на joomla внутри другого сайта joomla, хотя на локальном сервере и на сайте уровня домена некоторые получались. После очередных испытаний хостер только посоветовал поискать на форумах и не ставить впредь joomla в joomla.

II. После тщетных попыток разобраться, где именно одна джумла перекрывает другую и как файлы .htaccess могут друг другу мешать, мне попался другой скрипт, легкий и грамотный: http://joomlaforum.ru/index.php/topic,50201.30.html. Товарищи mickymouse и skyscraper нашли гениально-рабочий способ:

1. В файл components\com_virtuemart\js\slimbox\css\slimbox.css добавляем
#watermark {
   position: absolute;
   left: 0;
   top: 0;
   width: 100%;
   height: 100%;
   background: transparent url(watermark.png) no-repeat center center;
}

и закидываем в папку components\com_virtuemart\js\slimbox\css\ нужный файл watermark.png.

2. В файле components\com_virtuemart\js\slimbox\js\slimbos.js
 после:
this.image = new Element('div', {'id': 'lbImage'}).injectInside(this.center);

добавляем:
this.watermark = new Element('div', {'id': 'watermark'}).injectInside(this.image);

3. Если пункт 2 не удалось сделать из-за того, что в более новой версии virtuemart (начиная где-то с версии 1.1.15) файл slimbos.js немного отличается от прежнего, то
 после:
i=new Element("div",{id:"lbImage"}).injectInside(b).adopt(K=new Element("a",{id:"lbPrevLink",href:"#"}),e=new Element("a",{id:"lbNextLink",href:"#"}));  

добавляем:
new Element("div",{id:"watermark"}).injectInside(i);

В итоге, получаем красивое отображение водяного знака логотипа компании на больших картинках товара, но только в случае его появления в режиме lightbox.

14 коммент.:

Анонимный комментирует...

Молодцы! Работает!
Вот только КЭШ таким способом не обманешь...
Продвинутый не будет картинки - сохранить как... - по одной

Sagio комментирует...

На все, наверное, есть свое противоядие. Возможно, лучше картинки все-таки сразу делать с готовым копирайтом. По крайней мере, это выход для тех, кто не собирается открывать посетителям "чистые" изображения.

Анонимный комментирует...

Схема рабочая, но стоит только отключить яваскрипт в браузере..

Спасибо за такое решение, пока будет стоять защита от дурака, пока не придумаем защиту от хитрого +)

Sagio комментирует...

Да, пока так :)

Наталия комментирует...

У меня не заработало :( joomla 1.5.25 vm 1.1.9

Sagio комментирует...

Перепроверяйте, на joomla 1.5.25 и vm 1.1.9 у меня сработало. Да и в комментариях видно, что работает.

Игорь комментирует...

У меня тоже не заработало:( 1.5.25 и vm 1.1.9
Как только в js добавляю new Element("div",{id:"watermark"}).injectInside(i); сразу картинка не в слимбоксе а в отдельном окне и делай с ней что хочешь и никакого ватермарка:(

Sagio комментирует...

Если все делали правильно, то должно работать. Почистите кеш браузера. Посмотрите в другом браузере. У меня иногда проходило некоторое время, прежде чем скрип заработал.

Анонимный комментирует...

Такая петрушка наблюдается - при установке блока #watermark {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: transparent url(watermark.png) no-repeat center center;
}
пропадают элементы управления Prev, Next которые при наведении курсора на половину картинки появлялись ранее на поле картинки, не очень прикольно, при попытке поставить блок перед блоками элементов в файле css пропадает лайтбокс, какой-то прям вредоносный блок получается, у кого-нить были подобные проблемы?
И конечно это только от дурака, а интересно а первый"трудный" вариант тоже от дурака?
И еще может кто-нить подскажет удобный способ массово наносить вотермарки и форматировать картинки, а то делать в кореле по одному файлу мучительно больно..

Анонимный комментирует...

Для того что бы кнопки Prev, Next не исчезали уберите из стиля #watermark строчку
"position: absolute;". Мне помогло.

Анонимный комментирует...

У меня заработало joomla 1.5.26 virtuemart 1.1.9 вставлят так В файле components\com_virtuemart\js\slimbox\js\slimbos.js вставить после {id:"lbNextLink",href:"#"}));
следующий код new Element("div",{id:"watermark"}).injectInside(i);
Правда теперь не работают перелистывания от основого изображения к дополнительным. Может кто решит?

Анонимный комментирует...

Скажите, пожалуйста, можно ли этот метод как-то адаптировать для fancybox VM2?

Sagio комментирует...

К сожалению, не могу вам ответить. Как было написано выше, мной был найден, а не разработан этот метод. Попробуйте со стилями поиграться, может будет визульно приближено в fancy.

PoL комментирует...

Где брать бесплатные шаблоны для презентаций ? На templatemonster.com есть большой каталог шаблонов на различную тематику.

Технологии Blogger.

Followers

Kоличество просмотров