Все для CMS » DataLife Engine » Хаки и модули » Вторая кнопка Обсудить на форуме

Вторая кнопка Обсудить на форуме

  • 1
Данный материал предоставлен сайтом All4Cms.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Вторая кнопка Обсудить на форуме.

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

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

Может есть не которые недочеты в этом хаке, так как искал сам готовое решение, но в итоге решил сделать сам, в принципе все работает хорошо, чего я и добился, то и получилось. Может кому не будь такая вещь тоже будет по нраву.

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

Скачиваем архив предложенный ниже закидываем по папкам и приступаем.

В Базе Данных делаем запрос

ALTER TABLE dle_post ADD topic_id2 int(11) unsigned DEFAULT '0';
ALTER TABLE dle_be_attachment ADD topic_id2 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'] == 'discussion2') {
          $row['param'] = unserialize($row['param']) ;
        }

Ищем такие строки:

    } elseif(in_array(self::$action['get'], array(
      'category',
      'questions',
      'advertising',
      'trophies',
      'discussion',

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

      'discussion2',

Ищем:

      $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=discussion2">' . 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 discussion2($id = 0)
  {
    if($this->cpu) {
      $result = "{$this->root}{$this->router['main']}/discussion2-{$id}{$this->endLinckSymbol}" ;
    } else {
      $result = "{$this->root}?do={$this->router['main']}&action=discussion2&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'] . '/discussion2-([0-9]+)(/?)+$ index.php?do=' . parent::$bulletRouter['main'] . '&action=discussion2&id=$1 [L]' ;


Идем по пути:
engine\bullet_energy\api\bullet_api.class.php
Ищем:

          if($row['action'] == 'discussion') {
            $row['param'] = unserialize($row['param']) ;
          }

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

          if($row['action'] == 'discussion2') {
            $row['param'] = unserialize($row['param']) ;
          }

Ищем:

    public function setLinckDiscus(array $data = array())

Выше вставляем:

    public function setLinckDiscus2(array $data = array())
    {  
      $this->cache['template'] = $this->getCache('template') ;
      
      if(!is_array($this->cache['template'])) {
        $this->_setCache();
        return $this->setLinckDiscus2($data) ;
      }     
 
      if($this->member_id['user_group'] == 0 OR !isset($this->cache['template']['discussion2']['tree'][$data['tree']])) {
        return false ;
      }
      if(empty($data['id'])) {
		return '<a href="' . $this->link->discussion2($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 topic_id2 = 0 WHERE id = {$data['idPost']}");
        return '<a href="' . $this->link->discussion2($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>' ;
      }
   }


Тут не большое примечание в этом public я поставил видимость кнопки "Обсудить" для гостей, но была проблема с тем, что гости могли создавать темы в форуме просто кликая по кнопке, теперь все исправлено, если гость кликнет по кнопке, то он перейдет на страницу форума с надписью "Вы неавторизованы, или не опредёлен идентификатор публикации."

Идем по пути:
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/discussion2-([0-9]+)(/?)+$ index.php?do=forum&action=discussion2&id=$1 [L]

engine\modules\show.full.php

Ищем:


$tpl->copy_template = preg_replace ( "#\{date=(.+?)\}#ie", "langdate('\\1', '{$row['date']}')", $tpl->copy_template );

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


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

В шаблоне полной новости

templates\Default\fullstory.tpl

Будет доступен тег

{forumDiscus2}

Вставляем его в то место, где хотим увидеть кнопку "Обсудить на форуме 2"

СКАЧАТЬ:

gk_discusion2.rar
MD5: cddfdc399d6f918901e01ee2116d0816
Скачано: 547, размер: [4,75 Kb], дата: 12 март 2018


  • Хаки и модули
  • 12-03-2018, 22:59
  • 4 013
Вернуться назад