Дополнительные ВВ-кнопки «Шаблоны» для новости

Категория: Web-программирование, Хаки (DLE) | 8 августа 2009 | Просмотров: 6953



Дополнительные ВВ-кнопки «Шаблоны» для новости - это дополгительная панель на которой отображены основные категории новостей, и при нажатии на кнопку соответствующей категории в содержании краткой и полной новости выводился шаблон!


Сделано этот маленький хак (hack) на javascript.



Вот как это выглядит (пользовательская часть):


Дополнительные ВВ-кнопки «Шаблоны» для новости


 


А это вид из админки (при добавлении новости):


Дополнительные ВВ-кнопки «Шаблоны» для новости


 


ИНСТРУКЦИЯ 


1. Пользовательская часть интерфейса


1.1) открываем файл ./templates/_ваш_шаблон_/addnews.tpl


1.2) в самом верху файла вставляем нижележащий код:


<script type="text/javascript">
function tpl ( ch ) {
 if (ch == "video") {
     document.getElementById('short_story').innerHTML = '\n\n\n[b]Описание:[/b]';
     document.getElementById('full_story').innerHTML = '\n\n[u][b]Информация о фильме[/b][/u]\n[b]Название:[/b] \n[b]Оригинальное название:[/b] \n\n[b]Год выпуска:[/b] \n[b]Жанр: [/b]\n[b]Режиссер:[/b] \n[b]В ролях: [/b]\n\n\n[b]О фильме: [/b]\n\n\n[b]Выпущено: [/b]\n[b]Продолжительность:[/b]\n[b]Перевод:[/b] \n\n[u][b]Файл:[/b][/u]\n[b]Формат:[/b]\n[b]Качество:[/b] \n[b]Видео кодек:[/b] \n[b]Аудио кодек:[/b] \n[b]Видео:[/b] \n[b]Аудио:[/b] \n[b]Размер:[/b] \n\n\n[size=4]CКАЧАТЬ:[/size]\n\n';
 }
 if (ch == "music") {
     document.getElementById('short_story').innerHTML = '[b]Артист:[/b] \n[b]Название:[/b] \n[b]Дата релиза:[/b] \n[b]Стиль:[/b] \n[b]Размер файла:[/b] \n[b]Кол-во песен:[/b] \n[b]Качество:[/b]';
     document.getElementById('full_story').innerHTML = '[b]Артист:[/b] \n[b]Название:[/b] \n[b]Дата релиза:[/b] \n[b]Стиль:[/b] \n[b]Размер файла:[/b] \n[b]Кол-во песен:[/b] \n[b]Качество:[/b] \n\n\n[b]на обложке[/b]\n\n\n[b]Треклист:[/b]\n\n\n\n[size=4]CКАЧАТЬ:[/size]\n\n';
 }
 if (ch == "soft") {
     document.getElementById('short_story').innerHTML = '\n[b]Описание:[/b] \n\n';
     document.getElementById('full_story').innerHTML = '[b]Год выпуска:[/b] \n[b]Версия:[/b] \n[b]Разработчик:[/b] \n[b]Активация[/b] \n[b]Язык интерфейса:[/b] \n[b]Размер файла:[/b] \n[b]Описание:[/b] \n[b]Системные требования:[/b]\n\n\n\n[size=4]CКАЧАТЬ:[/size]\n\n';
 }
 if (ch == "game") {
     document.getElementById('short_story').innerHTML = '\n\n[b]Описание игры:[/b]\n';
     document.getElementById('full_story').innerHTML = '[b]Год выпуска:[/b] \n[b]Жанр:[/b] \n[b]Разработчик:[/b] \n[b]Издатель:[/b] \n[b]Платформа:[/b] \n[b]Тип издания:[/b] \n[b]Язык интерфейса:[/b] \n[b]Язык озвучки:[/b] \n[b]Таблетка: [/b]\n\n\n[b]Описание игры:[/b] \n\n\n[b]Рекомендуемые системные требования:[/b]\n\n\n\n[size=4]CКАЧАТЬ:[/size]\n\n';
 }
};
</script>


 


1.3) находим в этом же файле код (может немного отличаться, если шаблон поддавался сильным изменениям, в таком случае ищите [/not-wysywyg]):


</p>
<p style="padding-left: 30px">[not-wysywyg]
                      <tr>
                        <td height="25">Коди:</td>
                        <td>{bbcode}</td>
                      </tr>
[/not-wysywyg]


ниже вставляем:



                      <tr>
                        <td height="25">Шаблоны:</td>
                        <td>
             <input class="bbcodes_poll" type="button" onclick="tpl('video'); return false;" value="Видео" /> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('music'); return false;" value="Музыка" /> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('game'); return false;" value="Игры" /> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('soft'); return false;" value="Софт" />
         </td>
                      </tr>


Пользовательская часть установлена.


 


2. Изменяем интерфейс добавления новости в админки, для этого:


2.1) отрыть файл ./engine/inc/addnews.php


2.1) найти код:


<script type="text/javascript" src="engine/ajax/dle_ajax.js"></script>


ниже вставить:


<script type="text/javascript">
function tpl ( ch ) {
 if (ch == "video") {
     document.getElementById('short_story').innerHTML = '\\n\\n\\n[b]Описание:[/b]';
     document.getElementById('full_story').innerHTML = '\\n\\n[u][b]Информация о фильме[/b][/u]\\n[b]Название:[/b] \\n[b]Оригинальное название:[/b] \\n\\n[b]Год выпуска:[/b] \\n[b]Жанр: [/b]\\n[b]Режиссер:[/b] \\n[b]В ролях: [/b]\\n\\n\\n[b]О фильме: [/b]\\n\\n\\n[b]Выпущено: [/b]\\n[b]Продолжительность:[/b]\\n[b]Перевод:[/b] \\n\\n[u][b]Файл:[/b][/u]\\n[b]Формат:[/b]\\n[b]Качество:[/b] \\n[b]Видео кодек:[/b] \\n[b]Аудио кодек:[/b] \\n[b]Видео:[/b] \\n[b]Аудио:[/b] \\n[b]Размер:[/b] \\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
 }
 if (ch == "music") {
     document.getElementById('short_story').innerHTML = '[b]Артист:[/b] \\n[b]Название:[/b] \\n[b]Дата релиза:[/b] \\n[b]Стиль:[/b] \\n[b]Размер файла:[/b] \\n[b]Кол-во песен:[/b] \\n[b]Качество:[/b]';
     document.getElementById('full_story').innerHTML = '[b]Артист:[/b] \\n[b]Название:[/b] \\n[b]Дата релиза:[/b] \\n[b]Стиль:[/b] \\n[b]Размер файла:[/b] \\n[b]Кол-во песен:[/b] \\n[b]Качество:[/b] \\n\\n\\n[b]на обложке[/b]\\n\\n\\n[b]Треклист:[/b]\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
 }
 if (ch == "soft") {
     document.getElementById('short_story').innerHTML = '\\n[b]Описание:[/b] \\n\\n';
     document.getElementById('full_story').innerHTML = '[b]Год выпуска:[/b] \\n[b]Версия:[/b] \\n[b]Разработчик:[/b] \\n[b]Активация[/b] \\n[b]Язык интерфейса:[/b] \\n[b]Размер файла:[/b] \\n[b]Описание:[/b] \\n[b]Системные требования:[/b]\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
 }
 if (ch == "game") {
     document.getElementById('short_story').innerHTML = '\\n\\n[b]Описание игры:[/b]\\n';
     document.getElementById('full_story').innerHTML = '[b]Год выпуска:[/b] \\n[b]Жанр:[/b] \\n[b]Разработчик:[/b] \\n[b]Издатель:[/b] \\n[b]Платформа:[/b] \\n[b]Тип издания:[/b] \\n[b]Язык интерфейса:[/b] \\n[b]Язык озвучки:[/b] \\n[b]Таблетка: [/b]\\n\\n\\n[b]Описание игры:[/b] \\n\\n\\n[b]Рекомендуемые системные требования:[/b]\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
 }
};
</script>


2.2) найти код:


include (ENGINE_DIR . '/inc/include/inserttag.php');
        echo <<<HTML


(Примечание: если вы используете DataLife Engine 7.5 или более ранюю версию, то Вам неоходимо вместо вышеуказаного кода найти:


include (ENGINE_DIR . '/inc/inserttag.php');
        echo <<<HTML
)


ниже вставить:


                      <tr>
                        <td>Шаблоны:</td>
                        <td>
             <input class="bbcodes_poll" type="button" onclick="tpl('video'); return false;" value="Видео" /> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('music'); return false;" value="Музыка" /> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('game'); return false;" value="Игры" /> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('soft'); return false;" value="Софт" />
         </td>
                      </tr>


Вот и все.


 


Немного слов об последующей модификации приведенного выше кода.


Разберем на примере "как добавить новую кнопку" (из этого, думаю, будет понятно как удалить или изменить уже существующую кнопку "шаблон")


Например, нам необходимо создать кнопку для вставки в поле краткой и полной новости соответсвующую категории "обои для робочего стола".


Итак, начнем с админки, тоесть файл ./engine/inc/addnews.php. Для начала, после кода:


if (ch == "game") {
     document.getElementById('short_story').innerHTML = '\\n\\n[b]Описание игры:[/b]\\n';
     document.getElementById('full_story').innerHTML = '[b]Год выпуска:[/b] \\n[b]Жанр:[/b] \\n[b]Разработчик:[/b] \\n[b]Издатель:[/b] \\n[b]Платформа:[/b] \\n[b]Тип издания:[/b] \\n[b]Язык интерфейса:[/b] \\n[b]Язык озвучки:[/b] \\n[b]Таблетка: [/b]\\n\\n\\n[b]Описание игры:[/b] \\n\\n\\n[b]Рекомендуемые системные требования:[/b]\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
 }


пропишем свой код:


if (ch == "wall") {
     document.getElementById('short_story').innerHTML = '\\n\\n[b]Разширение:[/b] \\n[b]Количество:[/b]  шт.\\n';
     document.getElementById('full_story').innerHTML = '[b]Разширение:[/b] \\n[b]Количество:[/b]  шт.\\n\\n[b]Размер файла:[/b] \\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
 }


(Примечание.Код не должен разрываться на строки, тоесть код после innerHTML = ' и до \\n'; должен вместиться в одну строку (если он очень большой и редактор сам перенесет часть кода в новую строчку - не пугайтесь, все хорошо, это допускается. Перенос строки осуществляется внесением в код \\n (для админки, и \n для пользовательского интерфейса))


 


находим код (в том, что уже вставляли):


</span></span><input class="bbcodes_poll" type="button" onclick="tpl('soft'); return false;" value="Софт" /><span style="background-color: #c0c0c0;"><span style="background-color: #ffffff;">
 


добавляем ниже:


</span></span> &#160;
             <input class="bbcodes_poll" type="button" onclick="tpl('wall'); return false;" value="Обои на робочий стол" /><span style="background-color: #c0c0c0;"><span style="background-color: #ffffff;">
 


 


onclick="tpl('wall'); return false;" отвечает за назначение действия в случае клике по кнопке. 


tpl('wall') где wall - параметр, что передается в javascript и должен соответствовать  в строке if (ch == "wall") { предыдущей вставки.


 


Если что-то непонятно или есть желание платной установки даного хака на Ваш сайт - пишите через обратную связь

 (голосов: 3)

Views Просмотров: 6953   Comms Комментарии (20)

#1 написал: ba5h (11 августа 2009 16:39)
avator
Гости
в 8.2 упорно не хочет работать =(

ICQ: --
#2 написал: Fed (11 августа 2009 16:43)
avator
Администратор

Цитата: ba5h
в 8.2 упорно не хочет работать =(

 

если все сделано по инструкции - нереально, так как проверялося, и подтверждено пользователями из 4дле.ру

 

обратитесь через форму обратной связи для помощи.

ICQ: 479795562
admin@fed.name
#3 написал: Александр (19 августа 2009 10:04)
avator
Гости
понятно почему не пашет, надо отключить WYSIWYG в настройках
ICQ: --
#4 написал: Иван (21 августа 2009 14:18)
avator
Гости
DLE 8,2
Все работает, автор +1, по рекламе кликнул
ICQ: --
#5 написал: Nika (26 августа 2009 05:41)
avator
Гости
Parse error: syntax error, unexpected T_SL in C:\Program Files\VertrigoServ\www\engine\inc\addnews.php on line 200

and on 200 line is only this code:

echo <<<HTML




On Datalife Engine 8.2
ICQ: --
#6 написал: Fed (30 августа 2009 21:28)
avator
Администратор

Цитата: Nika
Parse error: syntax error, unexpected T_SL in C:\Program Files\VertrigoServ\www\engine\inc\addnews.php on line 200

 

проверьте окружающий код.

ICQ: 479795562
admin@fed.name
#7 написал: Дмитий (2 декабря 2009 18:20)
avator
Гости
Спасибо за Хак ! Этим способом я решил много проблем оформления новостей  Dle 8.0
ICQ: --
#8 написал: sanyapro (8 марта 2010 16:57)
avator
Гости
в 8.5 версии нет такого кода в 2.1) отрыть файл ./engine/inc/addnews.php
<script type="text/javascript" src="engine/ajax/dle_ajax.js"></script>
ICQ: --
#9 написал: Fed (8 марта 2010 17:01)
avator
Администратор
Цитата: sanyapro
в 8.5 версии нет такого кода в 2.1) отрыть файл ./engine/inc/addnews.php


найдите </script>
и попробуйте туда... поищите код "dle_ajax.js"...
к сожалению прямо сейчас не могу посмотреть
ICQ: 479795562
admin@fed.name
#10 написал: sanyapro (8 марта 2010 17:41)
avator
Гости
Спасибо Fed'y за хак!

в 8.5 после

<script type="text/javascript">
Calendar.setup({
inputField : "f_date_c", // id of the input field
ifFormat : "%Y-%m-%d %H:%M", // format of the input field
button : "f_trigger_c", // trigger for the calendar (button ID)
align : "Br", // alignment
timeFormat : "24",
showsTime : true,
singleClick : true
});
</script>


добавляйте этот код

<script type="text/javascript">
function tpl ( ch ) {
if (ch == "video") {
document.getElementById('short_story').innerHTML = '\\n\\n\\nОписание:';
document.getElementById('full_story').innerHTML = '\\n\\nИнформация о фильме\\nНазвание: \\nОригинальное название: \\n\\nГод выпуска: \\nЖанр: \\nРежиссер: \\nВ ролях: \\n\\n\\nО фильме: \\n\\n\\nВыпущено: \\nПродолжительность:\\nПеревод: \\n\\nФайл:\\nФормат:\\nКачество: \\nВидео кодек: \\nАудио кодек: \\nВидео: \\nАудио: \\nРазмер: \\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n';
}
if (ch == "music") {
document.getElementById('short_story').innerHTML = 'Артист: \\nНазвание: \\nДата релиза: \\nСтиль: \\nРазмер файла: \\nКол-во песен: \\nКачество:';
document.getElementById('full_story').innerHTML = 'Артист: \\nНазвание: \\nДата релиза: \\nСтиль: \\nРазмер файла: \\nКол-во песен: \\nКачество: \\n\\n\\nна обложке\\n\\n\\nТреклист:\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n�
39;;
}
if (ch == "soft") {
document.getElementById('short_story').innerHTML = '\\nОписание: \\n\\n';
document.getElementById('full_story').innerHTML = 'Год выпуска: \\nВерсия: \\nРазработчик: \\nАктивация \\nЯзык интерфейса: \\nРазмер файла: \\nОписание: \\nСистемные требования:\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n�
39;;
}
if (ch == "game") {
document.getElementById('short_story').innerHTML = '\\n\\nОписание игры:\\n';
document.getElementById('full_story').innerHTML = 'Год выпуска: \\nЖанр: \\nРазработчик: \\nИздатель: \\nПлатформа: \\nТип издания: \\nЯзык интерфейса: \\nЯзык озвучки: \\nТаблетка: \\n\\n\\nОписание игры: \\n\\n\\nРекомендуемые системные требования:\\n\\n\\n\\n[size=4]CКАЧАТЬ:[/size]\\n\\n�
39;;
}
};
</script>


так как в 8.5 нет такой строчки
<script type="text/javascript" src="engine/ajax/dle_ajax.js"></script>

Fed подправь свой мануал для 8.5 версии, может еще кому пригодится...
ICQ: --
#11 написал: aligon (6 апреля 2010 19:16)
avator
Гости
а можно только пользовательский код в водить, а в админку нет. И как работает на 8.5?
Я тут шаб скачал, так там так насра...! чо пипец
ICQ: --
#12 написал: Fed (6 апреля 2010 20:11)
avator
Администратор
Цитата: aligon
а можно только пользовательский код в водить, а в админку нет. И как работает на 8.5?


да
ICQ: 479795562
admin@fed.name
#13 написал: Maxim (9 июня 2010 15:33)
avator
Гости
Скажи а можно переделать этот хак, чтобы при нажатии на кнопку он содержимое добавлял к существующему, а не вытирал полностью поля краткого и поного описания
ICQ: --
#14 написал: Fed (9 июня 2010 17:41)
avator
Администратор
Цитата: Maxim
Скажи а можно переделать этот хак, чтобы при нажатии на кнопку он содержимое добавлял к существующему, а не вытирал полностью поля краткого и поного описания


найти все:
document.getElementById('short_story').innerHTML =

заменить на:
document.getElementById('short_story').innerHTML = document.getElementById('short_story').innerHTML+


найти все:
document.getElementById('full_story').innerHTML =

заменить на:
document.getElementById('full_story').innerHTML = document.getElementById('full_story').innerHTML+


не тестил, но по идее должно работать "как часы" wink
ICQ: 479795562
admin@fed.name
#15 написал: Maxim (9 июня 2010 22:20)
avator
Гости
Цитата: Fed
   <tr>                        <td height="25">Шаблоны:</td>                        <td>             <input class="bbcodes_poll" type="button" onclick="tpl('video'); return false;" value="Видео" />                <input class="bbcodes_poll" type="button" onclick="tpl('music'); return false;" value="Музыка" />                <input class="bbcodes_poll" type="button" onclick="tpl('game'); return false;" value="Игры" />                <input class="bbcodes_poll" type="button" onclick="tpl('soft'); return false;" value="Софт" />         </td>                      </tr>

Заменил. но не работает! Все как и раньше! А часто вообще если что то введеш в краткое описание нажимаеш шаблон он вставляется только в полное описание, так как краткое было занято. Как с этим бороться?!
ICQ: --
#16 написал: Fed (9 июня 2010 22:49)
avator
Администратор
Maxim, в опере работает, в ИЕ думаю не будет...


найти все:
document.getElementById('short_story').innerHTML =

заменить на:
document.getElementById('short_story').value = document.getElementById('short_story').value+


найти все:
document.getElementById('full_story').innerHTML =

заменить на:
document.getElementById('full_story').value = document.getElementById('full_story').value+
ICQ: 479795562
admin@fed.name
#17 написал: adamantis (18 августа 2010 17:41)
avator
Гости
Хотел сделать чтобы вставлялся код плеера, но его не добавляет.
В чем дело? Помогите, пожалуйста!

Цитата: ответ
соблюдайте последовательности кавычек - екранизируйте их и/или местами заменяйте одинарные на двойные.
еще лучше дебагером по js посомтрите на что именно "ругается"
ICQ: --
#18 написал: ASTIN (28 сентября 2010 00:32)
avator
Гости
А не подскажете, как сделать чтоб на 9.0 в админке работало. Ибо просто но сайте работает, а в админке кнопки то добавились, но при нажатии ничего не происходит.

Буду благодарен за ответ и помощь.
ICQ: --
#19 написал: Fed (28 сентября 2010 20:20)
avator
Администратор
ASTIN, теоретически должно работать.
Примечеание - не будет работать с визивиг-редактором.
ICQ: 479795562
admin@fed.name
#20 написал: ASTIN (29 сентября 2010 00:54)
avator
Гости
Всё, разобрался. Всего-то в одном месте перед "n" не поставил \\ и не работало полностью всё))
ICQ: --