Вторая кнопка Обсудить на форуме
Скачать бесплатно Вторая кнопка Обсудить на форуме.
Добавляем в 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"
СКАЧАТЬ:
- Хаки и модули
- 12-03-2018, 22:59
- 4 013