Хак фотоальбома - добавляем демотиватор!

+47
2.9K
Решение данного хака принадлежит Max
Автор функции демотивирования Copyright © 6 авг. 2011. Kalabzin Maxim e-mail: sinsemilla@ngs.ru
Здесь представлено облагороженное решение с форума.
Данный хак позволяет создавать демотиваторы прямо на сайте в Альбоме "Демотиваторы" встроенного фотоальбома instantcms
Вот так выглядят созданные демотиваторы:

Иллюстрация

Вот так выглядит альбом:

Иллюстрация

Вот так выглядит создание демотиватора:

Иллюстрация

Итак, приступим к реализации.

Для начала скачайте 2 файла шрифтов и 1 php файл: dm.zip

Далее есть 2 варианта решения подключения функции демотивирования:

1. вариант — залить весь архив в корень.
1.1 В файле /components/photos/model.php в самом начале описательной части пишем:
  1. include ("dm.php");
1.2 в файле dm.php архива в самом вверху вставить:
  1. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
2. вариант — заливаем в корень сайта только файлы шрифтов.
2.1 В самое начало файла /includes/graphic.inc.php после
  1. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
вставить полностью скопированный код из файла dm.php архива
(в файле graphic.inc.php вообще желательно описывать все функции по работе с графикой)

Далее не зависимо от предыдущих вариантов:

3. Открываем файл /components/photos/model.php
После
  1. $this->deletePhotoFile($photo_file, $uploaddir);
Вставить
  1. if ($album['title']=='Демотиваторы'){
  2. include ("dm.php");
  3. demotivator($uploadphoto,$_SESSION['icms']['mod']['title'],$_SESSION['icms']['mod']['description'],"instantcms.ru");}
  4.  
4. Занимаемся оформлением ссылки создания демотиватора:
Открыть файл /templates/ШАБЛОН/components/com_photos_view.tpl
Вместо:
  1. <a class="photo_add_link" href="/photos/{$album.id}/addphoto.html">{$LANG.ADD_PHOTO_TO_ALBUM}</a>
Добавить условие:
  1. {if $pagetitle == 'Демотиваторы'}
  2. <a class="photo_add_link" href="/photos/{$album.id}/addphoto.html">Создать демотиватор</a>
  3. {else}
  4. <a class="photo_add_link" href="/photos/{$album.id}/addphoto.html">{$LANG.ADD_PHOTO_TO_ALBUM}</a>
  5. {/if}
5. Занимаемся оформлением загрузки демотиватора:
Открыть файл /templates/ШАБЛОН/components/com_photos_add1.tpl
Вместо:
  1. <tr>
  2. <td colspan="2" valign="top">
  3. <input id="only_mod" name="only_mod" type="checkbox" value="1" onclick="mod_text()" /> <label for="only_mod">{$LANG.ADD_MULTY}</label></td>
  4. </tr>
Добавить условие:
  1. {if $album.title != 'Демотиваторы'}
  2. <tr>
  3. <td colspan="2" valign="top">
  4. <input id="only_mod" name="only_mod" type="checkbox" value="1" onclick="mod_text()" /> <label for="only_mod">{$LANG.ADD_MULTY}</label></td>
  5. </tr>
  6. {/if}
6. Далее по желанию, чтобы все было как на картинке:
все тот же файл /templates/ШАБЛОН/components/com_photos_add1.tpl
Ищем следующие фразы и заменяем их конструкциями smarty {if...}...{else}...{/if}

{$LANG.PHOTO_DESC} заменить на {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_DESC}{else}Описание демотиватора{/if}

{$LANG.PHOTO_TITLE} >>>>>> {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_TITLE}{else}Заголовок{/if}

{$LANG.PHOTO_DESC} >>>>> {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_DESC}{else}Текст{/if}

Данную разметку:
  1. <textarea name="description" style="width:350px;" rows="5" id="description">{$mod.description}</textarea>
На такую:
  1. {if $album.title != 'Демотиваторы'}
  2. <textarea name="description" style="width:350px;" rows="5" id="description">{$mod.description}</textarea>
  3. {else}
  4. <textarea name="description" style="width:350px;" rows="1" id="description">{$mod.description}</textarea>
  5. {/if}
Основное решение закончено. Чтобы сделать пояснительную картинку, как у меня на сайте, создайте демотиватор, и вставьте его код после
  1. {$LANG.PHOTO_PLEASE_NOTE}</div>
  1. {if $album.title == 'Демотиваторы'}
  2. Введите надписи, как на данном примере:
  3. <div>
  4. </div>
  5. <img src="/путь_к_картинке/картинка.jpg" width=250 align="center" />
  6. <div>
  7. </div>
  8. {/if}
Все, хак готов.
Теперь на сайте будет полноценный сервис демотиваторов в Альбоме "Демотиваторы" фотоальбома.
Да, кстати, если такого альбома у Вас еще нет, то создайте!
Обратите внимание! в третьем пункте instantcms.ru заменить на свой копирайт!
0
ByMind ByMind 12 лет назад #
немного смутило


{$LANG.PHOTO_DESC} заменить на {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_DESC}{else}Описание демотиватора{/if}

{$LANG.PHOTO_TITLE} >>>>>> {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_TITLE}{else}Заголовок{/if}

{$LANG.PHOTO_DESC} >>>>> {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_DESC}{else}Текст{/if}

чем отличаются первый и третий пункты?
0
GarikKR GarikKR 12 лет назад #
чото тут не то!!!
0
lezginka.ru lezginka.ru 12 лет назад #
GarikKR ,а что именно ?
0
Telema93 Telema93 12 лет назад #
ошибся где-то, е-мае! почитайте текст и поймете, тут же не надписи главное, а условная конструкция смарти
0
Александр Александр 12 лет назад #
Один вопрос, а что будет с ф самой фотогалереей? При установки данного хака будет ли стандартная галерея работать также, как и работает сейчас?
0
Kreator Kreator 12 лет назад #
Если видели тему на форуме, а еще и читали ее, то данный хак влияет на фотоальбом с названием "Демотиваторы"
0
Telema93 Telema93 12 лет назад #
if ($album['title']=='Демотиваторы')
вот и ответ
0
fact fact 12 лет назад #
Вcё работает. Не подскажите как убрать в этом альбоме кнопку редактирования созданного демотиватора?
+1
WALTERZ WALTERZ 12 лет назад #
Код PHP:
{if $album.title != 'Демотиваторы'}
Демотивароский вывод
	                {else}
ссылка на редактирование
	                {/if}
+1
fact fact 12 лет назад #
Спасибо.
Если кому нужно точнее, то в com_photos_view_photo.tpl
после {if $is_author || $is_admin}
вместо
Код PHP:
<a href="/photos/editphoto{$photo.id}.html" title="{$LANG.EDIT}"><img src="/templates/_default_/images/icons/edit.png" border="0"/></a>&nbsp;
я поставил

Код PHP:
     {if $album.title != 'Демотиваторы'}  
	                {else}<a href="/photos/editphoto{$photo.id}.html" title="{$LANG.EDIT}"><img src="/templates/_default_/images/icons/edit.png" border="0"/></a>&nbsp;
	               
	                {/if}
0
fact fact 12 лет назад #
опс виноват. не прокатило. теперь ив обычных фото исчезло редактирование...
0
fact fact 12 лет назад #
как же?
0
WALTERZ WALTERZ 12 лет назад #
Ой, извиняюсь
Вместо
Код PHP:
<a href="/photos/editphoto{$photo.id}.html" title="{$LANG.EDIT}"><img src="/templates/_default_/images/icons/edit.png" border="0"/></a>&nbsp;
Вставьте это:
Код PHP:
{if $pagetitle == 'Демотиваторы'}
 {else}
<a href="/photos/editphoto{$photo.id}.html" title="{$LANG.EDIT}"><img src="/templates/_default_/images/icons/edit.png" border="0"/></a>&nbsp;
{/if}
0
Rossoman Rossoman 12 лет назад #
Отличный хак. Только вот столкнулся с проблемой. При добавлении файла происходит редекларация, а почему никак не пойму. Может поможет кто?
Вот ошибка: Fatal error: Cannot redeclare demotivator() (previously declared in /var/www/rossoman/data/www/sasovo.net/dm.php:43) in /var/www/rossoman/data/www/sasovo.net/dm.php on line 166

А вот кусок кода с 43 по 166 строки
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
0
Rossoman Rossoman 12 лет назад #
Вопрос снимаю, разобрался сам.
В п. 1.1 нужно вставить
Код PHP:
include ("/dm.php");
а не
Код PHP:
include ("dm.php");
Так у меня заработал
0
Telema93 Telema93 12 лет назад #
вы не весь текст там скопировали, вот и проблема, нужно же еще подключать конвертер
0
Rossoman Rossoman 12 лет назад #
Теперь появилась другая проблема. Не выводится загаловок и описание демотиватора...
0
Rossoman Rossoman 12 лет назад #
в пунктах 1.1 и 3 точно нужно дважды подключать dm.php ??
0
Telema93 Telema93 12 лет назад #
где это вы увидели?
0
Rossoman Rossoman 12 лет назад #
1. вариант - залить весь архив в корень. 1.1 В файле /components/photos/model.php в самом начале описательной части пишем: Код PHP: 1 include ("dm.php"); 1.2 в файле dm.php архива в самом вверху вставить: Код PHP: 1 if(!defined('VALID_CMS')) { die('ACCESS DENIED'); } 2. вариант - заливаем в корень сайта только файлы шрифтов. 2.1 В самое начало файла /includes/graphic.inc.php после Код PHP: 1 if(!defined('VALID_CMS')) { die('ACCESS DENIED'); } вставить полностью скопированный код из файла dm.php архива (в файле graphic.inc.php вообще желательно описывать все функции по работе с графикой) Далее не зависимо от предыдущих вариантов: 3. Открываем файл /components/photos/model.php После Код PHP: 1 $this->deletePhotoFile($photo_file, $uploaddir); Вставить Код PHP: 1 if ($album['title']=='Демотиваторы'){ 2 include ("dm.php"); 3 demotivator($uploadphoto,$_SESSION['icms']['mod']['title'],$_SESSION['icms']['mod']['description'],"instantcms.ru");}

Или я чего то не понимаю?
0
Rossoman Rossoman 12 лет назад #
Не очень понятно с цитатой получилось)
п. 1.1 В файле /components/photos/model.php в самом начале описательной части пишем:
include ("dm.php");

п. 3 if ($album['title']=='Демотиваторы'){

include ("dm.php");

demotivator($uploadphoto,$_SESSION['icms']['mod']['title'],$_SESSION['icms']['mod']['description'],"instantcms.ru");}
0
Rossoman Rossoman 12 лет назад #
Если делаю так, то у меня выдает ошибку редикларации
0
Telema93 Telema93 12 лет назад #
вы понимаете что такое самый верх файла? зачем лезть в хаки, если не понимаете даже основ программирования? почитайте, пожалуйста, хотябы основы, чтобы потом не делать ошибок.
вставить в самый верх инклуд после строки f(!defined('VALID_CMS')) { die('ACCESS DENIED'
0
Rossoman Rossoman 12 лет назад #
Уже читал, и не только основы. Именно в это место и вставляю инклюд, после указанной вами строки!
0
Rossoman Rossoman 12 лет назад #
Или вы считаете что я вставил не правильно?
Код PHP:
<?php

if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
include ("dm.php");
0
Telema93 Telema93 12 лет назад #
проще приложить файлы, чтоб их посмотреть, а то мы с вами гадаем на кофейной гуще
также, неплохо видеть информацию по серверу
ошибку только у Вас выбивает, если заметили
0
Rossoman Rossoman 12 лет назад #
Вот файл model.php
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
0
Rossoman Rossoman 12 лет назад #
Проще на форуме выложить. Сейчас туда выложу.
0
Telema93 Telema93 12 лет назад #
запакуйте в архив и киньте ссылку
0
Rossoman Rossoman 12 лет назад #
http://sasovo.net/downloads/files.zip
Буду весьма благодарен если поможете разобраться. Спасибо
0
Rossoman Rossoman 12 лет назад #
Еще раз все сделал по инструкции. При загрузке самого фото ошибка
Fatal error: Cannot redeclare demotivator() (previously declared in /var/www/rossoman/data/www/sasovo.net/dm.php:43) in /var/www/rossoman/data/www/sasovo.net/dm.php on line 166
0
Telema93 Telema93 12 лет назад #
скопируйте текст на форуме в graphic.inc.php
0
Telema93 Telema93 12 лет назад #
из ошибки видно, что вы 2 раза подключаете функцию, я же русским языком сказал, или вариант 1, или вариант 2, а не все сразу
0
Rossoman Rossoman 12 лет назад #
Помоему там русским языком написано:
п.1.1 ....

Далее не зависимо от предыдущих вариантов:

п.3
0
Rossoman Rossoman 12 лет назад #
я делал 1 вариант
0
GarikKR GarikKR 12 лет назад #
Чото вобще путаница!А это так и должно быть???
{$LANG.PHOTO_DESC} заменить на {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_DESC}{else}Описание демотиватора{/if}

{$LANG.PHOTO_TITLE} >>>>>> {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_TITLE}{else}Заголовок{/if}

{$LANG.PHOTO_DESC} >>>>> {if $album.title != 'Демотиваторы'}{$LANG.PHOTO_DESC}{else}Текст{/if}

чем отличаются первый и третий пункты?
0
Telema93 Telema93 12 лет назад #
где-то описку допусти, вы сами почитайте файл и поймете, это ж даже не php уже, а html, ну и чуть смарти
0
fact fact 12 лет назад #
нужно как-то поставить ограничение на длину название и текста демотиватора. При длинном названии - обрезается, т.е весь текст не умещается на фото и обрезается по бокам
+2
Telema93 Telema93 12 лет назад #
ну это тоже есть, но хак пока сырой, примем во внимание
0
lezginka.ru lezginka.ru 12 лет назад #
+++
0
GarikKR GarikKR 12 лет назад #
ААА это пипец какойто!!))Никто не написал что надо создать тупо альбом с названием демотиваторы))И все заработает))Все работает Спасибо!
0
GarikKR GarikKR 12 лет назад #
Да и еще!!Заработало только так
Код PHP:
include ("/dm.php");
0
Telema93 Telema93 12 лет назад #
у каждого по-разному почему-то :)
странно, хотя грамотней все таки функции прописывать в спецфайл этих функций, чтоб потом найти их :)
да и скорость обработки уже подключенных функций будет быстрее, чем инклудинг, так как они уже в оперативке есть
0
Rossoman Rossoman 12 лет назад #
Да ладно))) Вот же)))
Теперь на сайте будет полноценный сервис демотиваторов в Альбоме "Демотиваторы" фотоальбома. Да, кстати, если такого альбома у Вас еще нет, то создайте!
0
Telema93 Telema93 12 лет назад #
Да, кстати, если такого альбома у Вас еще нет, то создайте!
Это написал в самом конце, это вы невнимательны :)
+1
Telema93 Telema93 12 лет назад #
В самом конце это было написано:
Да, кстати, если такого альбома у Вас еще нет, то создайте!
это Вы просто невнимательно прочитали :)
0
lezginka.ru lezginka.ru 12 лет назад #
пора создавать платную версию - всем жить легче будет(я так дУмаю)
0
GarikKR GarikKR 12 лет назад #
Пора кого закидать яйцами уважаемый лезгинка
0
Telema93 Telema93 12 лет назад #
зачем яйцами? для этого ddos есть :)
+1
Telema93 Telema93 12 лет назад #
разработка скрипта. та что в dm файле - бесплтная! так что некрасиво будет
другое дело, если кто напишет что-то более лучшее - тогда в платности есть смысл (не используя скрипт из файла dm)
+1
lezginka.ru lezginka.ru 12 лет назад #
ну и что скрипт бесплатный
наваротить и за небольшую плату, например не только черный фон вокруг, но и другие - красный,цветочки,черепа и т.д.
для разного юмора разныое офрмление. размер текста(регулировка в админке - 1,2,3строки) оформление сделать в отдельно тпл файле и т.д.
я взял бы, готовый вариант, без замарочек
+2
Romario Romario 12 лет назад #
У меня почему-то название и описание выводятся не на картинке, все делал по инструкции, подскажите пожалуйста что нужно исправить?
Вот скрин:
+2
Rossoman Rossoman 12 лет назад #
Аналогичная проблема, но решения так и не нашел(
0
Igor Igor 11 лет назад #
и у меня - все перепробовал, но надписи так и не появились
0
Telema93 Telema93 12 лет назад #
не знаю почему так, у всех работает, значит причина именно в Ваших настройках сервера
скиньте настройки сервера в архиве в личку - посмотрю
0
Tagil-Rulit Tagil-Rulit 12 лет назад #
Устанавливал и 1м и вторым способом. 1й-появились поля при добавлении картинки, нет чёрного фона загружается просто как картинка. При втором выдаёт ошибку при загрузке в модуль.пхп...Очень нужен данный хак, есть идея как расширить разносторонность и практичность его с наименьшими усилиями, отпишу в личку. Уважаемый stairway to hell есть ли у Вас время, возможность помочь-в личку скину подробные данные, информацию.
Заранее спасибо за ответ.
0
Дастан Дастан 12 лет назад #
У меня все заработала на Денвере! Но как только заливаю сайт на хостинг и попытаюсь сделать, там появляется рамка и не белого цвета. А надписей ваше нету. У кого нибудь еще такое было! Хостинг на beget.ru
0
Tesper Tesper 12 лет назад #
5 демотиваторов создались отлично, но стоило лечь спать, как на утро всё перестало работать. При загрузке появляется в адресной строке: http://site.ru/photos/101/upload - удаленный сервер или файл не найден, проверьте, верно ли написан адрес, или попробуйте найти сайт.
0
Dost Dost 12 лет назад #
Для тех у кого все сделано правильно, но не печатается текст. Там скорее всего что то с правами на корневую папку. Намучился тоже - не видит скрипт файлы шрифтов и все тут. Попробуйте так:
Создаем папку в корне и загружаем в нее файлы шрифтов(arial.ttf и times.ttf). Прописываем везде пути к этим файлам в dm.php

У меня заработало.
0
vslava vslava 12 лет назад #
Здравствуйте! а для 1,9 так же по пунктам надо делать.
0
Igor Igor 12 лет назад #
да, кстати на 1,9 работает, ставили ли?
+2
Алфей Алфей 12 лет назад #
Работает на 1.9, проверено!
0
Igor Igor 11 лет назад #
а у меня так и не появились надписи, вот так же http://instantcms.ru/blogs/zametki-po-delu/hak-fotoalboma-dobavljaem-demotivator.html#comment_25334 жаль - придется жить без демотиваторов
0
Helg Helg 11 лет назад #
{if $pagetitle == 'Демотиваторы'}
Почему-то вот этот кусок так и остается на сайте в таком виде? смs 1.9
Что-то не так сделал?
0
Helg Helg 11 лет назад #
{if $pagetitle == 'Демотиваторы'} Почему-то вот этот кусок так и остается на сайте в таком виде? смs 1.9 Что-то не так сделал?

Точнее в других альбомах тоже пишет добавить демотиватор, но при нажатии включает добавлените фото а не демотиватора. и перестала работать ссылка добавить фото в разделе со всеми фотоальбомами. Вот как-то так...
+1
Майкл Майкл 11 лет назад #
Под 1.10 надо бы это хак сделать. Кто нибудь уже сделал?
0
Майкл Майкл 11 лет назад #
Насколько я понял, большая часть кода переместилась в файлы шаблона.

Кто знает куда добавить нужно изменения, которык раньше были прописаны для файлы?
/components/photos/model.php
+2
Майкл Майкл 11 лет назад #
Поднимаю тему!
Может автор всё таки подскажет как в 1.10.1 проделать тоже самое?
Заплюсуем однозначно)
0
Greener Greener 11 лет назад #
Тоже интересует этот вопрос.
Но мне кажется, что в 1.10 может и не работать (
Хотелось бы, конечно, хотя бы предварительно знать, подойдет это решение для новой версии, али нет...
0
Майкл Майкл 11 лет назад #
Пойдет, если глобально внести измнения)
Я попробывал, но с некоторыми файлами не понял.

Еще от автора

[Хак] ICQ чат на сайте
Помнится, был раньше такой мессенджер Multul (http://instantcms.ru/blogs/tanatognozija/plagin-mesedzher.html), который скончался.
IP Cloudflare и решение на PHP
Нашел другие файлы, где заменить также!!! Извиняюсь, не досмотрел... Есть такой замечательный CDN сервис - Cloudflare.
Хак - Новое в блогах (mod_latestblogs) - вывод части текста записи в модуле
Мне не очень нравился вывод в модуле Новое в блогах (mod_latestblogs) только названия записи, количества комментариев, автора и названия блога, поэтом
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.