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

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

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

Расширяем группы

Discussion in 'Дополнения - Addons' started by Adre, Apr 25, 2011.

  1. Adre Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    370
    Likes Received:
    96
    И Так первое что мне бросилось в глаза это бедная возможность групп
    Добавим туда еще и личные блоги. Т.е. каждый личный блог может быть добавлен в любую группу в которую вы подписаны или создали.
    Поехали.

    1. делаем запрос к базе
    ALTER TABLE `uch_thread` ADD `oper` CHAR( 15 ) NOT NULL ,
    ADD `blogid` MEDIUMINT( 8 ) UNSIGNED NOT NULL ;

    2. открываем файл cp.php ищем:
    'userapp', 'task', 'credit', 'password', 'domain', 'event', 'topic',
    добавляем
    'relation',

    3. открываем space_blog_view.htm и ищем
    <a href="cp.php?ac=topic&op=join&id=$blog[blogid]&idtype=blogid" id="a_topicjoin_$blog[blogid]" onclick="ajaxmenu(event, this.id)">凑热闹</a><span class="pipe">|</span>

    Далее добавляем <a href="cp.php?ac=relation&op=join&uid=$blog[uid]&blogid=$blog[blogid]" id="a_relationjoin_$blog[blogid]" onclick="ajaxmenu(event, this.id)">关联群组</a><span class="pipe">|</span>

    4. открываем space_thread_view.htm
    ищем
    <div id="click_div">
    <!--{template space_click}-->
    </div>
    далее добавляем
    <!--{if !empty($thread[blogid])}-->
    <div style="width:400px;padding-top:10px; margin:0 auto;">
    <P align="center"><B>该话题由<span style="color: red;">
    <!--{$thread[oper]}--></span> 从 <span style="color: red;">
    <!--{if $thread[oper]!=$thread[username]}-->
    <!--{$thread[username]}-->
    <!--{else}-->
    <!--{eval echo "自己的";}-->
    <!--{/if}-->
    </span> 日志里关联过来</B></P>
    </div>
    <!--{/if}-->

    5. создаем файл cp_relation.php в папки source

    PHP:
        <?php
        
    /*
        [UCenter Home] (C) 2007-2008 Comsenz Inc.
        $Id: cp_topic.php 12436 2009-06-25 09:07:38Z liguode $
        */
        
    if(!defined('IN_UCHOME')) {
        exit(
    'Access Denied');
        }
        
    //检查信息
        
    $tagid= empty($_POST['tagid'])?0:intval($_POST['tagid']);
        
    $blogid = empty($_GET['blogid'])?0:intval($_GET['blogid']);
        
    $op = empty($_GET['op'])?'':$_GET['op'];
        
    $uid=empty($_GET['uid'])?0:intval($_GET['uid']);
        if(
    $_GET['op'] != 'join' || $_SGLOBAL['supe_uid'] != $uid && !checkperm('managename') && $_SGLOBAL[member][groupid] != 2//增加信息管理员有关联权限
        
    {
           
    ckspacelog();
           
    showmessage('no_privilege');
          }
        
    $relation=array();
        if(
    $blogid) {
        
    $query $_SGLOBAL['db']->query("SELECT bf.*, b.* FROM ".tname('blog')." b LEFT JOIN ".tname('blogfield')." bf ON bf.blogid=b.blogid WHERE b.blogid='$blogid'");
        
    $relation $_SGLOBAL['db']->fetch_array($query);

        }
              if(
    $_SGLOBAL['supe_uid'] != $relation['uid'] && !checkperm('managename') && $_SGLOBAL[member][groupid] != 2//增加信息管理员有关联权限
              
           
    showmessage('no_privilege'); }
        else{
        
    //添加日志到群组--关联群组
        
    $mtags = array();
        if(!
    $eventid || $event['uid']==$_SGLOBAL['supe_uid']) {
                
    $query $_SGLOBAL['db']->query("SELECT mtag.* FROM ".tname("tagspace")." st LEFT JOIN ".tname("mtag")." mtag ON st.tagid=mtag.tagid WHERE st.uid='$_SGLOBAL[supe_uid]' ");
                while(
    $value=$_SGLOBAL['db']->fetch_array($query)) {
                        
    $mtags[] = $value;
                   }
        }
        
    //添加日志到群组--关联群组
        
    }
        if(
    submitcheck('joinsubmit')){
           if (
    $tagid) {
           
           
    $ckblogid=array();      
           
    $query $_SGLOBAL['db']->query("SELECT blogid FROM ".tname('thread')." WHERE blogid='$blogid'");
           
    $ckblogid $_SGLOBAL['db']->fetch_array($query);
           if (empty(
    $ckblogid)) {
                    
    $tsetarr = array(
           
    'tagid' => $tagid,
           
    'uid' => $relation['uid'],
           
    'username' => $relation['username'],
           
    'dateline' => $_SGLOBAL['timestamp'],
           
    'subject' =>  $relation['subject'],
           
    'lastpost' => $_SGLOBAL['timestamp'],
           
    'lastauthor' => $relation['username'],
           
    'lastauthorid' => $relation['uid'],
              
    'blogid' => $blogid,
                    
    'oper' =>  $_SGLOBAL['supe_username'],
           
    'topicid' => $relation['topicid']
          );
          
          
    $tid inserttable('thread'$tsetarr1);
          
          
    $psetarr = array(
           
    'tagid' => $tagid,
           
    'tid' => $tid,
           
    'uid' => $relation['uid'],
           
    'username' => $relation['username'],
           
    'ip' => getonlineip(),
           
    'dateline' => $_SGLOBAL['timestamp'],
           
    'message' => $relation['message'],
                    
    'isthread' => 1
          
    );
          
    //添加
          
    inserttable('post'$psetarr);
          
          
    //更新群组统计
          
    $_SGLOBAL['db']->query("UPDATE ".tname("mtag")." SET threadnum=threadnum+1 WHERE tagid='$tagid'");
          
          
    //统计
          
    updatestat('thread');
          
          
    //更新用户统计
          
    if(empty($space['threadnum'])) {
           
    $space['threadnum'] = getcount('thread', array('uid'=>$space['uid']));
           
    $threadnumsql "threadnum=".$space['threadnum'];
          } else {
           
    $threadnumsql 'threadnum=threadnum+1';
          }
          
    //积分
          
    $reward getreward('publishthread'0);
          
    $_SGLOBAL['db']->query("UPDATE ".tname('space')." SET {$threadnumsql}, lastpost='$_SGLOBAL[timestamp]', updatetime='$_SGLOBAL[timestamp]', credit=credit+$reward[credit], experience=experience+$reward[experience] WHERE uid='$relation[uid]'");
        
    showmessage('do_success'$_POST['refer'], 0);
          
          }
          else { 
    showmessage('该日志已经关联组啦,请勿重复提交关联!'); }

        }

          else
                     { 
    showmessage('您没有选择群组'); }
        }

        include_once 
    template("cp_relation");
        
    ?>
    6. ну по логике движка если создали такой файл то и создаем шаблон cp_relation.htm. Заливаем, где шаблоны в папку default

    PHP:
        <!--{template header}-->
        <!--{if 
    $_GET['op'] == 'join'}-->

        <
    h1>添加到群组</h1>
        <
    a href="javascript:hideMenu();" class="float_del" title="关闭">关闭</a>
        <
    div class="popupmenu_inner" id="__relationjoinform">
        <
    form id="relationjoinform" name="relationjoinform" method="post" action="cp.php?ac=relation&op=join&uid=$_GET[uid]&blogid=$_GET[blogid]">
          <
    p>
           
    选择个群组:<br>  
                   <
    select name="tagid">
                   <
    option value="">选择群组</option>
                   <!--{
    loop $mtags $value}-->
                   <
    option value="$value[tagid]<!--{if $value[tagid]==$event[tagid]}-->selected<!--{/if}--> >$value[tagname]</option>
                  <!--{/
    loop}-->
                 </
    select>
          </
    p>
          <
    class="btn_line">
           <
    input type="hidden" name="refer" value="$_SGLOBAL[refer]/>
           <
    input type="submit" name="joinsubmit" value="确定" class="submit" />
          </
    p>
          <
    input type="hidden" name="formhash" value="<!--{eval echo formhash();}-->" />
        </
    form>
        </
    div>

        <!--{/if}-->
        <!--{
    template footer}-->
    7. заливаем файлы из архива которые участвуют в этом. Оригинальные файлы с заливкой этих будут изменены. Сделайте бекаб оригинальных, на всякий случай.

    View attachment 2.rar

    111.gif

    P.S. на данном примере понятно, как добавить в группу и другие вещи. скажем фото...
    данные изменения показаны на оригинальном китайском шаблоне... Да бы избежать неразберихи в переводе и в отличии хпх файлах... Именно поэтому перевода не было...

    Удачи!
    Если будут вопросы пишите...
    Демо могу скинуть в личку...
    В ближайшее время попробую написать инструкцию как делать плагины (общую логику) написания...
  2. Skreti User


    Offline
    Message Count:
    294
    Likes Received:
    1
    Можно Демо в личку.
  3. Adre Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    370
    Likes Received:
    96
    скинул
  4. rsmile Novice member


    Offline
    Message Count:
    13
    Likes Received:
    0
    Adre, земляк :) А еще можно как-то расширить группы? Возможно прикрутить фотогалерею? Новости? Очень хочется еще wiki к группам.. Можно что-нибудь еще сделать вообщем? ;)

    P.S. Можно мне тоже демо в личку?
  5. Adre Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    370
    Likes Received:
    96
    Что значит wiki? Для меня wiki это разметка и свободное редактирование всеми с возможностью отката. А что подразумеваете вы?
    Один из моих проектов на wiki содержит базу более 3 гигов... Тут это надо?
    Ссылку на демо выкладывал тут ранее...
    Вопрос про расширения групп решается думаю если только писать дополнения. Чем и заняты. К сожалению в сети ничего путного так и не нашел. Если кто поможет с плагинами групп для УХОМЕ буду очень благодарен.
  6. Adre Thread starter Famous member


    Offline
    • Знаменитый
    Message Count:
    370
    Likes Received:
    96
    И так добавляем в группы дополнительные поля.
    Скажем я хочу добавить еще сайт к которой относится группа.

    Добавляем в файл cp_mtag.php следующую строку:
    $setarr['url'] = getstr($_POST['url'], 100); //название поля - url

    Добавляем в шаблон редактирования групп cp_mtag.htm следующую строку:
    <tr><th><label for="url">Url сайта</label></th><td>
    <input id="url" type="text" name="url" value="$mtag" size="80" class="t_input" /> <p c...огии можно добавить любые поля куда угодно...

Share This Page

All rights reserved SocEngine.ru ©