Насколько сложно что-то добавлять в UCHOME, и обязательно ли знать очень сильно php?
Берем достаточно "сложную" задачу.
Нужно:
1. Добавить кнопку нравится в ленту
2. Кнопку нравится в плагин новости
Сразу оговорюсь, что в блогах, фото и темах групп есть голосование. Которое настраивается из админки.
Т.е. обычное голосование +1, +2 и т.д.
Люди обычно отмечают или нравится или нет. Но это мое мнение, тут можно поспорить, но дело не в этом.
Я вообще оставил одно - нравится. Т.к. один вариант +1. Это намек, как сделать кнопку нравится.
И опять дело не в этом, задача что бы можно добавлять голосования хоть по 10 пунктам от 1 до 10 в выше перечисленные блоги.
Добавить код, не резая фунционал uchome. Ведь данные поля можно тупо добавить через phpmyadmin, но тогда пропадет управление через админку.
И так, более целевая задача. Сделать, что бы в админке можно было добавлять голосование еще в двух пунктах (описаны выше)
Начинаем танцевать от шаблонов.
Идем в admin/tpl/click.htm и видим:
PHP:
<option value="blogid"$idtypearr[blogid]>Дневник </option>
<option value="picid"$idtypearr[picid]>Изображение </option>
<option value="tid"$idtypearr[tid]>Тема</option>
Нам надо добавить Ленту новостей и новости.
Заносим, заранее зная что не будет работать т.к. нет передачи данных в базу
PHP:
<option value="uid"$idtypearr[uid]>Новостях</option>
<option value="feedid"$idtypearr[feedid]>Лента новостях</option>
На примере ленты новостей (а они сохраняются в базе в таблице uchone_feed) смотрим имя колонки в которые записываются уникальные номера этого.
Видим, feedid, соотв. Получится:
PHP:
<option value="feedid"$idtypearr[feedid]>Лента новостях</option>
Пол дела сделано. Данные из шаблона передаются, только в пустоту.
Зная что файл click.htm связан с аналогичным файлом: admincp_click.php (это кстати общая структура uchome, там все так работает) открываем файл admincp_click.php
и добавляем после:
PHP:
case 'tid':
$tablename = tname('thread');
break;
следующее
PHP:
case 'feedid':
$tablename = tname('feed');
break;
feedid - поле
feed - таблица
Это делаем в 2 местах (2 место для удалении).
Аналогично делаем и для плагина новости. Там другая таблица и другое поле номера сообщений.
PHP:
case 'uid':
$tablename = tname('news_detail');
break;
Проверяем. Все, из админки заносится. В таблицу
uchome_клик, добавляется соотв. надпись с feedid или uid.
Смотрим таблицу скажем space_feed. Там при добавлении добавляется поле: click_номер
Да еще забыл прописываем соотв. пременные в файл click.htm, что бы отображалось:
PHP:
<!--{eval $idtypename=array('blogid'=>'Блог','picid'=>'Фотографии','tid'=>'Тема','uid'=>'Новости','feedid'=>'Лента новостей')}-->
И прописываем что бы выборочно смотреть все добавленные голосования в админке (а в моем случае, нравится в меню)
PHP:
<ul class="css-menu-1">
<li><a $actives[view] href="admincp.php?ac=click">Все отношения</a></li>
<li><a $actives[blogid] href="admincp.php?ac=click&idtype=blogid">Блоги</a></li>
<li><a $actives[picid] href="admincp.php?ac=click&idtype=picid">Фото</a></li>
<li><a $actives[tid] href="admincp.php?ac=click&idtype=tid">Темы</a></li>
<li><a $actives[uid] href="admincp.php?ac=click&idtype=uid">Новости</a></li>
<li><a $actives[feedid] href="admincp.php?ac=click&idtype=feedid">Лента новостей</a></li>
<li class="null"><a href="admincp.php?ac=click&op=add">+ Добавление</a></li>
</ul>
<br>
Вот приблизительно так. Вывод и занесение не показываю, т.к. делаются аналогично.
Чем не конструктор? И что надо быть гением в php?
P.S. вот что значит грамотное составленное ядро, структура кода понятна и для 10 классников... Но что бы написать так ядро, и так это работало... Сам бы с нуля не смог.
Кстати все это еще и кешируется автоматом.
Да и еще, раз начал разбираться с голосованием смотрим - API. Там сделано так, что голосование (а в моем случае нравится, передается с других сайтах в md5) я понимаю что это безопасность типа, но не пойму зачем кодировать передачу символа 1 (плус 1) в таблицу?
Мои файлы в оригинале, с переводом:
View attachment click.zip
Если будем делать вывод, обращаем внимание на поле hot в таблице скажем uchome_blog
Данное поле добавлено, что бы если мы стерли или меняли значения в голосовании из админки (скажем добавляли новые поля и т.д.) те голоса что уже были занесены не были удалены. Ведь если мы сотрем один пункт голосования из админки, т.е. поле это и голоса сотрутся. Тут не так. Очень мудро!