Главная » Статьи » Статьи о/про uCoz » Оформление сайтов в uCoz

Использование дополнительных полей для изменения вида комментариев. Для юКоз (uCoz)

Однажды, бродя по форуму бывшей Тех. Поддержки пользователей юКоз (uCoz), наткнулся я на простой и незамысловатый вопросик.
Вот так он звучал в оригинале:

Quote (TitanSword)
Можно ли поставив в форме добавления комментариев чекбокс, использовать его значения для изменения вида комментария? Например, поставил галочку и у добавленного комментария изменился цвет фона.

В принципе, с первого взгляда, идея мне показалось немного идиотской, да прости́т меня автор, но, после более  пристального взгляда на вопрос, и прикидки (от слова «прикидывать» - по значению близко к выражению: «Представлять себе»), как это можно использовать, идея, в конечном счёте оказалась не совсем уж и безнадёжной. И даже, может быть,  достойной  для использования такой редкой вещи, как лишнее/свободное поле. Где бы то ни было.
В данном случае - в комментариях.

Дело в том, что, сейчас, наверно, жутко-глупую, и всем известную вещь сморожу, ну да ладно, не привыкать ... так вот, дело в том, что базы данных, как и все реляционные базы, состоят из  таблиц, которые в свою очередь состоят из столбцов и строк, на пересечении которых расположены ячейки. Так вот эти ячейки и хранят те данные, что вводит пользователь или система(скрытые поля, инкремент (AUTO_INCREMENT), т.п). Кроме того, данные одних таблиц, как правило, связаны с данными других таблиц.

Но не в этом суть. А в том, все ячейки, зарезервированы за тем или иным, и  нельзя просто придумать поле, не существующее в таблице, и пытаться что-то записать в него, и при этом надеяться на успех.
Записывать и считывать информацию можно только из реально существующих в базе ячеек. Кроме того, обращаться к ним нужно по её, уникальному в таблице, имени поля.

Почему я об этом вообще начал? - вот из-за этого поста.

Quote (NN [орфография сохранена])

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

Code
<input value="test" name="checkbox1" type="checkbox">

- код чекбокса в форме добавления комментария

Code
<_?if(checkbox1='test')?_>ONOFF<_?endif?_>

- код условного оператора в виде комментариев.

По идее, при включенном флажке, в добавленном комментарии OFF должно быть заменено на ON, но это к сожалению не так.
Прошу помогите написать рабочий код!


Никогда не подумал бы, что это придется объяснять.

Вот так, примерно выглядит таблица для комментариев.


Наверное, стоит отметить, что данная фишка будет работать только для гостей. Для пользователей, адрес сайта и мыло - мыло берётся из профиля, так что привязку для зарегистрированных, придется делать на чём нибудь другом.
Тема для размышления. ヅ

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

Данная пост будет показывать как практически, установкой значения, в данном случае - стиля, из выпадающего списка, например, привязать данные, в данном случае имя стиля, к определённому посту/комментарию, записать значение (value) выбранного поля (name) в базу данных.


Исходные данные.

Форма добавления комментариев.

Code
<table border="0" width="100%" cellspacing="1" cellpadding="2" class="commTable">
<tr><td class="commTd2" colspan="2">$ERROR$</td></tr>
<_?if(!$USER_LOGGED_IN$)?_>
<tr><td width="15%" class="commTd1" nowrap>Имя *:</td><td class="commTd2"><input class="commFl" type="text" name="name" value="$NAME$" size="30" maxlength="60"></td></tr>
<tr><td class="commTd1">Email:</td><td class="commTd2"><input class="commFl" type="text" name="email" value="$EMAIL$" size="30" maxlength="60"></td></tr>
<_?endif?_>
<tr><td class="commTd2" colspan="2"><div style="padding-bottom:2px">$BBCODES$</div><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top"><textarea class="commFl" style="height:135px;" rows="8" name="message" id="message" cols="50">$MESSAGE$</textarea></td><_?if($SMILES$)?_><td width="5%" align="center" valign="top" style="padding-left:3px;">$SMILES$</td><_?endif?_></tr></table></td></tr>
<_?if($SUBSCRIBE$)?_><tr><td width="15%" class="commTd1" nowrap>Подписка:</td><td class="commTd2">$SUBSCRIBE$</td></tr><_?endif?_>
<_?if($SECURITY_CODE$)?_><tr><td class="commTd1" nowrap>Код *:</td><td class="commTd2">$SECURITY_CODE$</td></tr><_?endif?_>
<tr><td class="commTd2" colspan="2" align="center">
<input type="submit" class="commSbmFl" id="addcBut" name="submit" value="- Добавить комментарий -"></td></tr></table>

Кусок шаблона «вид комментария». Нужная мне часть.


Code
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="$CLASS$"><tr>
<td style="padding:3px;">
<!--Много разных незнакомых букаф и цыфер-->
</td></tr></table><br />

Делаем выпадающий список, с именами и значениями стилей.

Code
<select name="www" class="commFl">
<option class="st0" value="st0">Стиль №0</option>
<option class="st1" value="st1">Стиль №1</option>
<option class="st2" value="st2">Стиль №2</option>
<option class="st3" value="st3">Стиль №3</option>
<option class="st4" value="st4">Стиль №4</option>
<option class="st5" value="st5">Стиль №5</option>
<option class="st6" value="st6">Стиль №6</option>
<option class="st7" value="st7">Стиль №7</option>
<option class="st8" value="st8">Стиль №8</option>
<option class="st9" value="st9">Стиль №9</option>
</select>

Где:

name="www" - имя элемента «select» - должно соответствовать ячейке в таблице данных.

class="commFl" - просто класс элемента.

value="st0" - значение, которое будем записывать в БД, при выборе. И, потом получать его.

class="st0" ... class="st9" - стили для пунктов списка.


Стили, в данном случае - просто фон цветом. Для комментариев и самого списка.

Code
<style type="text/css">
/* StartStyle */
.st0{background-color:#FCF;}
.st1{background-color:#99F;}
.st2{background-color:#FCC;}
.st3{background-color:#FC9;}
.st4{background-color:#FC3;}
.st5{background-color:#F99;}
.st6{background-color:#CFC;}
.st7{background-color:#9FC;}
.st8{background-color:#6FF;}
.st9{background-color:#3FC;}
/* EndStyle */
</style>

Собираем всё вместе

Для этого, я просто добавлю ещё одну строчку, после строки для ввода «Email» И обзову её «Стиль». Примерно вот так:

Code
<table border="0" width="100%" cellspacing="1" cellpadding="2" class="commTable">
<tr><td class="commTd2" colspan="2">$ERROR$</td></tr>
<_?if(!$USER_LOGGED_IN$)?_>
<tr><td width="15%" class="commTd1" nowrap>Имя *:</td><td class="commTd2"><input class="commFl" type="text" name="name" value="$NAME$" size="30" maxlength="60"></td></tr>
<tr><td class="commTd1">Email:</td><td class="commTd2"><input class="commFl" type="text" name="email" value="$EMAIL$" size="30" maxlength="60"></td></tr>
<_?endif?_>
<tr><td class="commTd1">Стиль:</td>
<td class="commTd2">
<select name="www" class="commFl">
<option class="st0" value="st0">Стиль №0</option>
<option class="st1" value="st1">Стиль №1</option>
<option class="st2" value="st2">Стиль №2</option>
<option class="st3" value="st3">Стиль №3</option>
<option class="st4" value="st4">Стиль №4</option>
<option class="st5" value="st5">Стиль №5</option>
<option class="st6" value="st6">Стиль №6</option>
<option class="st7" value="st7">Стиль №7</option>
<option class="st8" value="st8">Стиль №8</option>
<option class="st9" value="st9">Стиль №9</option>
</select>
</td></tr>
<tr><td class="commTd2" colspan="2"><div style="padding-bottom:2px">$BBCODES$</div>
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top"><textarea class="commFl" style="height:135px;" rows="8" name="message" id="message" cols="50">$MESSAGE$</textarea></td><_?if($SMILES$)?_><td width="5%" align="center" valign="top" style="padding-left:3px;">$SMILES$</td></tr></table></td></tr>
<_?if($SUBSCRIBE$)?_><tr><td width="15%" class="commTd1" nowrap>Подписка:</td><td class="commTd2">$SUBSCRIBE$</td></tr>
<_?if($SECURITY_CODE$)?_><tr><td class="commTd1" nowrap>Код *:</td><td class="commTd2">$SECURITY_CODE$</td></tr>
<tr><td class="commTd2" colspan="2" align="center"><input type="submit" class="commSbmFl" id="addcBut" name="submit" value="- Добавить комментарий -"></td></tr></table>

Всё, до упора, просто.

Должно получится что-то вроде этого:


Так, форму сделали.

Теперь будем получать данные, с помощью системной функции для вывода адреса сайта, поле которого я использовал, $SITE$.

Оказалось, сервер подставляет ещё и протокол, к выдаваемым данным «http://», то есть на выходе мы получаем вот это «http://st9» - при выборе стиля №9.
Думаю, что это убирается где-то в настройках сайта, но, если честно, мне лень искать, и я просто отфильтрую ответ.

Code
<_?substr($SITE$,-3)?_>/* три символа от конца */

И добавлю его (фильтрованный ответ) к самим комментариям, точнее, к классу, который отвечает за их оформление.

Вот так:

Code
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="$CLASS$ <_?substr($SITE$,-3)?_>"><tr>
<td style="padding:3px;">
<!--Много разных незнакомых букаф и цыфер-->
</td></tr></table><br />

То есть, если выбрать стиль, например, №4, при добавлении коментария, то его стиль, после добавления, будет вот таким: <table class="cBlock1 st3"....>...

Думаю, это всё. Больше, вроде, нечего и сказать-то ... Тема раскрыта.



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

Несомненно, что, блин, для такой ерундовской вещи, как задание цвета комментариям, использовать такую возможность - не есть «хорошо»...
Я, всего лишь, прикинул, что́ можно извлечь из этого, и попытался наглядно показать как. А что и́менно - решать, несомненно Вам. И то́лько вам.

Обсуждение, вопросы и прочее, в одноимённой теме на форуме: «Использование форм для изменения вида коментариев»или в коментариях.... ヅ


Реально реализована данная, точнее, похожая, функция, вот здесь «http://tng.ucoz.ru/news/proverka7/2010-08-22-11». Только, данные там подставляются, в скрытое поле, случайным образом. Но всё равно, можете посмотреть, как это работает.  Доступно для гостей.
Будет доступно ещё некоторое время. .... Пока не затру другим примером ...


P.S.

Пшите, подкидывайте интересные темы для рассмотрения,
а, пока, всем Удачи ..... ヅ

Flesh.




Источник: Использование даполнительных полей для изменения вида коментариев Формы. Для юКоз,uCoz,инструкция, реляционные базы
Категория: Оформление сайтов в uCoz | Добавил: likbezz (28.08.2010)
Просмотров: 14754 | Комментарии: 6 | Теги: реляционные базы, для юкоз, коментариев, полей, вид, использование, UCOZ, инструкция, даполнительных, изменения
Всего комментариев: 6
0  
6  ICE-DOG [Материал[10.01.2014]

Огромное спасибо !
Ещё заметил пару багов: при редактировании комментария его цвет становится стандартным (и можно ли сделать редактирование цвета в форме редактирования). И иногда комментарии не появляются до добавления ещё комментариев.

0  
5  ICE-DOG [Материал[05.01.2014]

И ещё, можно ли как-то сделать, что бы это выпадающее поле было только в модуле "Онлайн игры", а не в форме комментариев по всему сайту ?

0  
4  ICE-DOG [Материал[04.01.2014]

А можно ли как-то сделать сортировку ? То есть, к примеру я выбрал стиль .st0, и мне нужно отсортировать комментарии только по этому стилю. Возможно ли как-либо такое сделать ?

0  
2  red [Материал[29.10.2010]

вопрос неактуален. штатную юкозовскую форму комментов выбросил, и прикрутил disqus заместо оной.

0  
1  red [Материал[25.10.2010]

Украшательства всяческие вещь тоже конечно зело потребная в определенных ситуациях. Но вопрос в следующем заключен, раз уж речь о комментировании на ucoz:
Есть ли средства, кои дозволят на юкозовском ресурсе изменить функционал комментирования материалов, в такую сторону, чтобы читателю, восхотевшему увековечить свою мысль под статьей, не нужно было заниматься расшифровкой капчи шестизначного размера, или, упаси господи, регистрацией, или еще какой излишней деятельностью? То бишь функционал этот упростить до минимума - обязательное поле с именем, кастомные - с мылом и адресом сайта, и скажем, популярная штуковина - галка "я не робот", заместо кошмарной капчи.
Этим вопросом уже довольно долгое время озадачен, ибо как ни крути, а возможность оставления комментов посетителем для развития сайта весьма полезная вещь. Самостоятельно пытался изыскать подходящий способ решения, но пока что ничего лучшего чем присобачить к сайту API комментирования взятым с Вконтакте, выдумать не сумел. Костыль сей мне тоже не нравится, хотя он немного и получше штатного юкозовского функционала, но все равно юзер ограничен ежели у него аккаунта там нет.
Я тут просто побродил по сайту, узрел что местный создатель хорошие вещи пишет об употреблении юкозовского движка, и возомнил что ежели вместе над этой проблемой поразмыслить, можно и родить чего полезного.
К примеру, может существуют какие то сторонние сервисы, которые предоставляют АПИ похожий на вконтактовский, но для которых не нужен никакой сторонний аккаунт, и здешнему вебмастеру о них известно? Буду признателен, ежели дельный какой совет обрету)

0  
3  likbezz [Материал[29.10.2010]

Quote (red)
Есть ли средства, кои дозволят на юкозовском ресурсе изменить функционал комментирования материалов, ..... - галка "я не робот", заместо кошмарной капчи.

- В реале, без заморочек - нет.
С небольшими заморочками, только для локальных пользователей. Для просто “прохожих” - то есть Гостей, по существу, вообще не реально осуществить, имеется в виду «родные» средства uCoz.

Ваш выбор плагина для комментариев от Disqus, наверное наиболее подходящее из простых решений этой “проблемы”.

Я думаю, было бы правильнее оставить этот момент (отображать или не отображать капчу) на усмотрение администратора сайта, если не для всех, то хотя бы для оплаченных сайтов. Так как ответственность за контент лежит на нём и, следовательно, управление комментариями - его право, так как комментарий - неотделимая часть контента сайта и его ответственность. Как владельца сайта.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]