Предоставляем срочную помощь по DLE, пишем эксклюзивные модули для вашего проекта, парсеры грабберы, исправляем базу данных, удаляем вирусы редиректы, обновляем скрипты, помощь с переездом на другой хостинг, перенос домена, большой опыт работы с высоконагруженными проектами, защита ddos атаки, ботов и спама, оптимизация модулей и серверов дле, более 10 лет работы, тысячи модификаций и доработок, короткие сроки, дорого, качественно. telegram: @histoo

Добавляем в BulletEnergy 1.3 вторую кнопку "Обсудить на форуме"

  1. Оффлайн

    KachalkinGeorg

    Посетители

    Сообщений: 2

    Добавляем в BulletEnergy 1.3 вторую кнопку "Обсудить на форуме"


    Выкладывал я такой хак как то давно, на не которых сайтах, но вот решил выложить здесь у про родителя так сказать.

    Как то мне на сайте нужно была возможность, чтобы в новости было две кнопки "Обсудить на форуме" очень понравилась мне эта функция, одна из которых ссылалась бы в одни категории обсуждения со своим префиксом, другая же в категории информативные со своим префиксом, но уже с другим наклоном (будь то ГИД, ГАЙД или полезные советы). То есть, Создал 1 раздел с форумом и его подфорумами и к нему привязал одну кнопку "Обсудить", далее создал 2 раздел с форумом и его подфорумами, а к нему уже привязал вторую кнопку "Обсудить", тем самым получив два разных направления обсуждения новостей.
    Может есть не которые недочеты в этом хаке, так как искал сам готовое решение, но в итоге решил сделать сам, в принципе все работает хорошо, чего я и добился, то и получилось. Может кому не будь такая вещь тоже будет по нраву.

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

    Итак, не забываем сделать резервную копию редактируемых файлов и своей Базы Данных

    Делаем запрос в БД:
    
    ALTER TABLE dle_post ADD dispute_id int(11) unsigned DEFAULT '0';
    ALTER TABLE dle_be_attachment ADD dispute_id int(11) unsigned NOT NULL DEFAULT '0';
    


    engine\bullet_energy\classes\admin.class.php
    Ищем:
            if($row['action'] == 'discussion') {
              $row['param'] = unserialize($row['param']) ;
            }

    Ниже вставляем:
            if($row['action'] == 'disputation') {
              $row['param'] = unserialize($row['param']) ;
            }

    Ищем такие строки:
        } elseif(in_array(self::$action['get'], array(
          'category',
          'questions',
          'advertising',
          'trophies',
          'discussion',

    Ниже вставляем:
          'disputation',

    Ищем:
          $menu .= '<li><a class="template" href="' . self::$path . '?mod=bullet_energy&action=discussion">' . self::$bullet_energy_lang['setting_300'] . '</a></li>' ;

    Ниже вставляем:
          $menu .= '<li><a class="template" href="' . self::$path . '?mod=bullet_energy&action=disputation">' . self::$bullet_energy_lang['setting_300'] . '</a></li>' ;



    engine\bullet_energy\classes\link.class.php
    Ищем:
      public function discussion($id = 0)
      {
        if($this->cpu) {
          $result = "{$this->root}{$this->router['main']}/discussion-{$id}{$this->endLinckSymbol}" ;
        } else {
          $result = "{$this->root}?do={$this->router['main']}&action=discussion&id={$id}" ;
        }
        return $result ;
      }

    Ниже вставляем:
      public function disputation($id = 0)
      {
        if($this->cpu) {
          $result = "{$this->root}{$this->router['main']}/disputation-{$id}{$this->endLinckSymbol}" ;
        } else {
          $result = "{$this->root}?do={$this->router['main']}&action=disputation&id={$id}" ;
        }
        return $result ;
      }



    engine\bullet_energy\action\admin\references.php
    Ищем:
        $rewRulle[] = 'RewriteRule ^' . parent::$bulletRouter['main'] . '/discussion-([0-9]+)(/?)+$ index.php?do=' . parent::$bulletRouter['main'] . '&action=discussion&id=$1 [L]' ;

    Ниже вставляем:
        $rewRulle[] = 'RewriteRule ^' . parent::$bulletRouter['main'] . '/disputation-([0-9]+)(/?)+$ index.php?do=' . parent::$bulletRouter['main'] . '&action=disputation&id=$1 [L]' ;



    engine\bullet_energy\api\bullet_api.class.php
    Ищем:
              if($row['action'] == 'discussion') {
                $row['param'] = unserialize($row['param']) ;
              }

    Ниже вставляем:
              if($row['action'] == 'disputation') {
                $row['param'] = unserialize($row['param']) ;
              }

    Ищем:
        public function setLinckDiscus(array $data = array())

    Выше вставляем:
        public function setLinckDisput(array $data = array())
        {  
          $this->cache['template'] = $this->getCache('template') ;
          
          if(!is_array($this->cache['template'])) {
            $this->_setCache();
            return $this->setLinckDisput($data) ;
          }     
     
          if($this->member_id['user_group'] == 0 OR !isset($this->cache['template']['disputation']['tree'][$data['tree']])) {
            return false ;
          }
          if(empty($data['id'])) {
    		return '<a href="' . $this->link->disputation($data['idPost']) . '">' . $this->bullet_energy_lang['topic_148_1'][0] . '</a>' ;
          } else {
            $row = $this->db->super_query("SELECT reply_count, title FROM " . PREFIX . "_be_topic WHERE id = {$data['id']}") ;
                
            if ( !$row ) {
            $this->db->query("UPDATE " . PREFIX . "_post SET dispute_id = 0 WHERE id = {$data['idPost']}");
            return '<a href="' . $this->link->disputation($data['idPost']) . '">' . $this->bullet_energy_lang['topic_148_1'][0] . '</a>' ;
            }
            else return '<a href="' . $this->link->topic_linck($data['id'], totranslit($row['title'], true, true)) . '">' . $this->bullet_energy_lang['topic_148_1'][1] . '(' . $this->bullet_energy_lang['topic_148'][2] . $row['reply_count'] . ')' . '</a>' ;
          }
       }


    engine\bullet_energy\library\language\utf-8\Russian\site.lng
    Ищем:
    'topic_148' => array(

    Выше вставляем:
      'topic_148_1' => array(
        '<strong>ОБСУДИТЬ НА ФОРУМЕ 2</strong>',
        'Перейти к обсуждению на форуме ',
        'Ответов '),


    .htaccess
    Ищем:
    RewriteRule ^forum/discussion-([0-9]+)(/?)+$ index.php?do=forum&action=discussion&id=$1 [L]

    Ниже вставляем:
    RewriteRule ^forum/disputation-([0-9]+)(/?)+$ index.php?do=forum&action=disputation&id=$1 [L]


    engine\modules\show.full.php
    Ищем:
    $tpl->copy_template = preg_replace ( "#\{date=(.+?)\}#ie", "langdate('\\1', '{$row['date']}')", $tpl->copy_template );
    или
    $tpl->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl->copy_template );

    Ниже вставляем:
    		if ( $view_template != "print" AND $is_logged) $tpl->set('{forumDisput}', $apiBullet->setLinckDisput(array(
    			'idPost' => $row['id'],
    			'id' => $row['dispute_id'],
    			'tree' => $category_id))) ; 
    			else $tpl->set('{forumDisput}', '');


    или

    		if ( $view_template != "print") {
    			$tpl->set('{forumDisput}', $apiBullet->setLinckDisput(array(
    			'idPost' => $row['id'],
    			'id' => $row['dispute_id'],
    			'tree' => $category_id))) ; }


    или

    		if( $row['forum_disput'] ) {
    		if ( $view_template != "print") {$tpl->set('{forumDisput}', $apiBullet->setLinckDisput(array(
    			'idPost' => $row['id'],
    			'id' => $row['dispute_id'],
    			'tree' => $category_id))) ;}
    			$tpl->set( '[forum_Disput]', "" );
    			$tpl->set( '[/forum_Disput]', "" );		
    		} else {
    			$tpl->set( '{forumDisput}', "" ); 
    			$tpl->set_block( "'\\[forum_Disput\\](.*?)\\[/forum_Disput\\]'si", "" );
    		}


    Где
    if( $row['forum_disput'] ) {

    Если создавали Чекбокс "обсудить на форуме" для новостей, только я изначально менял тег на forum_disput, так как мне была нужна 2 кнопка с чекбоксом

    В шаблоне полной новости доступен тег:
    [forum_Disput]{forumDisput}[/forum_Disput]

    СКАЧАТЬ ФАЙЛ:

    Вложения:

    1. gk_discusion2.zip

      Размер файла:
      7,19 Kb
      Скачиваний:
      42
    Grey нравится это сообщение.
    7 июня 2020 - 01:01 / #1
Модераторы форума: greyPowered by Bullet Energy Forum