• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Добавление комментариев в любом файле по ID новости

killoff

CD тихо, и не DVD меня ;)
Команда форума
Модератор
Регистрация
13 Май 2008
Сообщения
2.619
Реакции
1.123
  • Автор темы
  • Модер.
  • #1
Пытался выдрать {comments} {addcomments} из файла engine/modules/show.full.php, но что-то не хотят работать эти теги. Есть модули вывода последних комментариев в любом месте, их тоже на добавление исправить не смог, т.к. в кодинге php я не разбираюсь, а простыми правками файлов не получилось это реализовать.

В общем просьба знающих помощь как это реализовать: есть файл модуля со своим файлом шаблона и в нем нужно сделать вывод и добавление комментариев по id новости... :glob:
 
1) Создаешь форму :
PHP:
<?PHP
$tpl->load_template( 'addcomments.tpl' );

if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe']) $allow_subscribe = true; else $allow_subscribe = false;

if( $config['allow_comments_wysiwyg'] > 0 ) {
    $text='';
    include_once ENGINE_DIR . '/editor/comments.php';
    $bb_code = "";
    $allow_comments_ajax = true;
} else
    include_once ENGINE_DIR . '/modules/bbcode.php';

if ( $is_logged AND $user_group[$member_id['user_group']]['disable_comments_captcha'] AND $member_id['comm_num'] >= $user_group[$member_id['user_group']]['disable_comments_captcha'] ) {

    $user_group[$member_id['user_group']]['comments_question'] = false;
    $user_group[$member_id['user_group']]['captcha'] = false;

}

if( $user_group[$member_id['user_group']]['comments_question'] ) {

    $tpl->set( '[question]', "" );
    $tpl->set( '[/question]', "" );

    $question = $db->super_query("SELECT id, question FROM " . PREFIX . "_question ORDER BY RAND() LIMIT 1");
    $tpl->set( '{question}', "<span id=\"dle-question\">".htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES, $config['charset'] )."</span>" );

    $_SESSION['question'] = $question['id'];

} else {

    $tpl->set_block( "'\\[question\\](.*?)\\[/question\\]'si", "" );
    $tpl->set( '{question}', "" );

}

if( $user_group[$member_id['user_group']]['captcha'] ) {

    if ( $config['allow_recaptcha'] ) {

        $tpl->set( '[recaptcha]', "" );
        $tpl->set( '[/recaptcha]', "" );

        $tpl->set( '{recaptcha}', "<div class=\"g-recaptcha\" data-sitekey=\"{$config['recaptcha_public_key']}\" data-theme=\"{$config['recaptcha_theme']}\"></div>" );

        $tpl->set_block( "'\\[sec_code\\](.*?)\\[/sec_code\\]'si", "" );
        $tpl->set( '{reg_code}', "" );

    } else {

        $tpl->set( '[sec_code]', "" );
        $tpl->set( '[/sec_code]', "" );
        $path = parse_url( $config['http_home_url'] );
        $tpl->set( '{sec_code}', "<a onclick=\"reload(); return false;\" title=\"{$lang['reload_code']}\" href=\"#\"><span id=\"dle-captcha\"><img src=\"" . $path['path'] . "engine/modules/antibot/antibot.php\" alt=\"{$lang['reload_code']}\" width=\"160\" height=\"80\" /></span></a>" );
        $tpl->set_block( "'\\[recaptcha\\](.*?)\\[/recaptcha\\]'si", "" );
        $tpl->set( '{recaptcha}', "" );
    }

} else {
    $tpl->set( '{sec_code}', "" );
    $tpl->set( '{recaptcha}', "" );
    $tpl->set_block( "'\\[recaptcha\\](.*?)\\[/recaptcha\\]'si", "" );
    $tpl->set_block( "'\\[sec_code\\](.*?)\\[/sec_code\\]'si", "" );
}

if( $config['allow_comments_wysiwyg'] > 0 ) {

    $tpl->set( '{editor}', $wysiwyg );

} else {
    $tpl->set( '{editor}', $bb_code );

}

$tpl->set( '{text}', '' );
$tpl->set( '{title}', $lang['news_addcom'] );

if( $vk_url ) {
    $tpl->set( '[vk]', "" );
    $tpl->set( '[/vk]', "" );
    $tpl->set( '{vk_url}', $vk_url );   
} else {
    $tpl->set_block( "'\\[vk\\](.*?)\\[/vk\\]'si", "" );
    $tpl->set( '{vk_url}', '' );   
}
if( $odnoklassniki_url ) {
    $tpl->set( '[odnoklassniki]', "" );
    $tpl->set( '[/odnoklassniki]', "" );
    $tpl->set( '{odnoklassniki_url}', $odnoklassniki_url );
} else {
    $tpl->set_block( "'\\[odnoklassniki\\](.*?)\\[/odnoklassniki\\]'si", "" );
    $tpl->set( '{odnoklassniki_url}', '' );   
}
if( $facebook_url ) {
    $tpl->set( '[facebook]', "" );
    $tpl->set( '[/facebook]', "" );
    $tpl->set( '{facebook_url}', $facebook_url );   
} else {
    $tpl->set_block( "'\\[facebook\\](.*?)\\[/facebook\\]'si", "" );
    $tpl->set( '{facebook_url}', '' );   
}
if( $google_url ) {
    $tpl->set( '[google]', "" );
    $tpl->set( '[/google]', "" );
    $tpl->set( '{google_url}', $google_url );
} else {
    $tpl->set_block( "'\\[google\\](.*?)\\[/google\\]'si", "" );
    $tpl->set( '{google_url}', '' );   
}
if( $mailru_url ) {
    $tpl->set( '[mailru]', "" );
    $tpl->set( '[/mailru]', "" );
    $tpl->set( '{mailru_url}', $mailru_url );   
} else {
    $tpl->set_block( "'\\[mailru\\](.*?)\\[/mailru\\]'si", "" );
    $tpl->set( '{mailru_url}', '' );   
}
if( $yandex_url ) {
    $tpl->set( '[yandex]', "" );
    $tpl->set( '[/yandex]', "" );
    $tpl->set( '{yandex_url}', $yandex_url );
} else {
    $tpl->set_block( "'\\[yandex\\](.*?)\\[/yandex\\]'si", "" );
    $tpl->set( '{yandex_url}', '' );
}

if( ! $is_logged ) {
    $tpl->set( '[not-logged]', '' );
    $tpl->set( '[/not-logged]', '' );
} else
    $tpl->set_block( "'\\[not-logged\\](.*?)\\[/not-logged\\]'si", "" );

if( $is_logged ) $hidden = "<input type=\"hidden\" name=\"name\" id=\"name\" value=\"{$member_id['name']}\" /><input type=\"hidden\" name=\"mail\" id=\"mail\" value=\"\" />";
else $hidden = "";

// $tpl->copy_template = "<form  method=\"post\" name=\"dle-comments-form\" id=\"dle-comments-form\" action=\"{$_SESSION['referrer']}\">" . $tpl->copy_template . "
// <input type=\"hidden\" name=\"subaction\" value=\"addcomment\" />{$hidden}
// <input type=\"hidden\" name=\"post_id\" id=\"post_id\" value=\"$news_id\" /></form>";

// Вот тут форма нашая
$tpl->set( '[form]', "<form  method=\"post\" name=\"dle-comments-form\" id=\"dle-comments-form\" action=\"{$_SESSION['referrer']}\">" );
$tpl->set( '[/form]', "<input type=\"hidden\" name=\"subaction\" value=\"addcomment\" />{$hidden}</form>" );

if (!isset($path['path'])) $path['path'] = "/";

$tpl->copy_template .= <<<HTML
<script type="text/javascript">
<!--
$(function(){

$('#dle-comments-form').submit(function() {
doAddComments();
return false;
});

});

function reload () {

var rndval = new Date().getTime();

document.getElementById('dle-captcha').innerHTML = '<img src="{$path['path']}engine/modules/antibot/antibot.php?rndval=' + rndval + '" width="160" height="80" alt="" />';

};
//-->
</script>
HTML;

if ( $user_group[$member_id['user_group']]['captcha'] AND $config['allow_recaptcha'] ) {

$tpl->copy_template .= <<<HTML
<script src='https://www.google.com/recaptcha/api.js?hl={$lang['wysiwyg_language']}' async defer></script>
HTML;

}

$tpl->compile( 'addcomments' );
$tpl->clear();
echo $tpl->result['addcomments']; // выводим работу шаблона
unset ($tpl->result['addcomments']);
Там можешь вместо addcomments подключить другой шаблон. Весь код внутри шаблона заключаешь в теги
Код:
[form]шаблон[/form]
далее для передачи нужной новости передаешь через name="post_id" - id новости. Можешь к примеру так
Код:
[form]шаблон <input type="hidden" name="post_id" id="post_id" value="{news-id}" />[/form]
По идеи, должно работать.

А вывод комментариев можешь организовать с помощью Для просмотра ссылки Войди или Зарегистрируйся передать id новости и все.
 
Последнее редактирование модератором:
  • Автор темы
  • Модер.
  • #3
По идеи, должно работать.
Добавлял в место подключения файла
PHP:
<?php

$id_news = (int)$_GET['id_news'];     //преемник нашего id новости

$row = $db->query("SELECT * FROM ".PREFIX."_post WHERE id='$id_news'");
while($list = $db->get_row( $row ))
{

$title = $list['title']; //вытащит из базы название новости
$onlinetitle = $list['title'];
$xf = xfieldsdataload($list['xfields']);
$year = $xf['year'];

$kinopoisk = $xf['idkp'];
$cacheid = $id_news;
$all = unserialize(dle_cache( "kino_rating"."_".$cacheid, $config['skin'] ));
$kino_rating = $all[0];
$kino_votes = $all[1];
$imdb_rating = $all[2];
$imdb_votes = $all[3];
$timeout = stream_context_create( array (
'http' => array(
'timeout' => 1
)
)
);
if ($all =='') {
$all = array();
$kinopoisk = preg_replace('#<(.+?)>#', '', $kinopoisk);
$kinopoisk = $kinopoisk;
$rating = file_get_contents("http://rating.kinopoisk.ru/{$kinopoisk}.xml", 0, $timeout);
preg_match("/kp_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $kp);
$kino_rating = $kp[2];
$kino_votes = ($kino_rating) ? $kp[1] : "";
$kino_votes = $kino_votes;
preg_match("/imdb_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $imdb);
$imdb_rating = $imdb[2];
$imdb_votes = ($imdb_rating) ? $imdb[1] : "";
$imdb_votes = $imdb_votes;
$all = array( $kino_rating, $kino_votes, $imdb_rating, $imdb_votes);
create_cache( "kino_rating"."_".$cacheid, serialize($all), $config['skin'] );
}
if ($imdb_rating =='' or $imdb_rating =='0') {
$kino_rate = round(($kino_rating), 1);
$kino_rate = str_replace(",", ".", $kino_rate);
$sum_vote = number_format($kino_votes);
$sum_vote = str_replace(",", " ", $sum_vote);
} elseif ($kino_rating =='0' or $kino_rating =='') {
$kino_rate = round(($imdb_rating), 1);
$sum_vote = number_format($imdb_votes);
} else {
$kino_rate = round(($kino_rating+$imdb_rating)/2, 1);
$kino_rate = str_replace(",", ".", $kino_rate);
$sum_vote = number_format(($kino_votes+$imdb_votes)/2);
$sum_vote = str_replace(",", " ", $sum_vote);
};

}

$tpl->set( '{title}', $title);
$tpl->set( '{year}', $year);
$tpl->set( '{news-id}', $id_news);

$tpl->load_template( '_comment.tpl' );


$tpl->set('{kinopoisk}', $kino_rate);
$tpl->set('{kinopoisk_vote}', $sum_vote);

//    include_once ENGINE_DIR . '/modules/add_comment.php';

$tpl->compile( 'content' );
$tpl->clear();

?>
где
PHP:
//    include_once ENGINE_DIR . '/modules/add_comment.php';
и не работает даже {sec-code} :( (подключение шаблона отключал, т.к. выше в коде есть подключение шаблона).

Может в другое место его подключать надо или код моего файла настолько кривой... :conf:

А вывод комментариев можешь организовать с помощью Для просмотра ссылки Войди или Зарегистрируйся передать id новости и все.
Вывод итак через него сделал пока в одном шаблоне, в полный листинг комментариев пока с добавлением не разберусь даже не смотрел пока ещё..

PS с гитхаба вчера качал там была версия 2.0 :) щас обновлюсь.
 
Последнее редактирование:
Попробуй в php файле с добавлением комментариев сделать новый объект.
Код:
$tpl_add_comm = new dle_template(); $tpl_add_comm->dir = TEMPLATE_DIR;
и заменить все $tpl-> на $tpl_add_comm->
 
  • Автор темы
  • Модер.
  • #5
Попробуй в php файле с добавлением комментариев сделать новый объект.
Побовал, не помогает (((
Вообще при подключении add_comment.php к странице грузится ещё код страницы с ошибкой что публикации не найдено. :(
 
  • Автор темы
  • Модер.
  • #6
Ещё вопрос возник...
Я удалил в файле show.full.php всё что касается комментариев, и теперь стало после добавления комментария перекидывать на главную страницу сайта. Как исправить, чтобы обновлялась нужная страница с комментариями? Пробовал Для просмотра ссылки Войди или Зарегистрируйся но не помагает((

Пробовал заменить в
Код:
$tpl->set( '[form]', "<form  method=\"post\" name=\"dle-comments-form\" id=\"dle-comments-form\" action=\"index.php\">" );
Index.php на страницу комментариев по news-id или же просто заменив на {$_SESSION['referrer']}, но тогда комментарий вообще не добавляется. Что тут не так? :eek:
 
Последнее редактирование:
Назад
Сверху