1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Разберемся с кодом...

Discussion in 'UCENTER' started by Adre, Sep 14, 2011.

  1. Adre Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    370
    Likes Received:
    96
    Насколько сложно что-то добавлять в 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[viewhref="admincp.php?ac=click">Все отношения</a></li>
            <
    li><a $actives[blogidhref="admincp.php?ac=click&idtype=blogid">Блоги</a></li>
            <
    li><a  $actives[picidhref="admincp.php?ac=click&idtype=picid">Фото</a></li>
            <
    li><a $actives[tidhref="admincp.php?ac=click&idtype=tid">Темы</a></li>
        <
    li><a $actives[uidhref="admincp.php?ac=click&idtype=uid">Новости</a></li>
    <
    li><a $actives[feedidhref="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
    Данное поле добавлено, что бы если мы стерли или меняли значения в голосовании из админки (скажем добавляли новые поля и т.д.) те голоса что уже были занесены не были удалены. Ведь если мы сотрем один пункт голосования из админки, т.е. поле это и голоса сотрутся. Тут не так. Очень мудро!

Share This Page

All rights reserved SocEngine.ru ©