Помогите с кодом в DLE

Василич#
На сайте с 10.03.2009
Offline
111
2279

Здравствуйте ! Есть модуль, который по аналогии, добавляет новость на сайт, там все предусмотрено, кроме доп. полей. Мучаюсь весь вечер, саму форму доп. полей вывести удалось, но значения не сохраняются при передаче. Мне нужно передавать значение всего одного доп. поля pole1 .

Вот сам код:

1-я часть файла

<?php



if( !defined( "DATALIFEENGINE" ) ) die( "Hacking attempt!" );

$error_prosmotr = $IBlogs->ViewBlog( $row_blog, "addnews" );
if( !$IBlogs->GroupNewsAdd ) $error_prosmotr = $IBlogs->Lang['add_news_error_group'];

$blog_type = "addnews";
include_once( ENGINE_DIR."/modules/blog/blog/blog.main.php" );

if( $error_prosmotr === true )
{
if( isset( $_POST['submit'] ) )
{
//------------------------------------------=-=-=-=-=
// Добавление новости
//------------------------------------------=-=-=-=-=

$error = "";
$short_story = trim( $_POST['short_story'] );
$full_story = trim( $_POST['full_story'] );
$title = trim( $_POST['title'] );

if( $IBlogs->Config['news_full'] == "yes" && empty( $_POST['full_story'] ) ) $error_full = true;
if( $_REQUEST['sec_code'] != $_SESSION['sec_code_session'] && $IBlogs->Config['blog_addnews_captcha'] != "no" ) $error .= "<li>{$IBlogs->Lang['add_news_sec_code']}</li>";
if( empty( $short_story ) && empty( $title ) || $error_full ) $error .= "<li>{$IBlogs->Lang['add_news_error_fill']}</li>";

if( empty( $error ) )
{
include_once( ENGINE_DIR."/classes/parse.class.php" );
$parse = new ParseFilter( array(), array(), 1, 1 );
$title = $db->safesql( htmlspecialchars( stripslashes( $parse->process( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ) );

if( $member_id['name'] == $admin || $row_blog['moder'] == "1" || $IBlogs->GroupModer )
{
$sait_status = intval( $_POST['sait_status'] ) == 1 ? "off" : "on";
$comment = intval( $_POST['comment'] ) == 1 ? 1 : 0;
$rating = intval( $_POST['rating'] ) == 1 ? 1 : 0;
$public = intval( $_POST['public'] ) == 1 ? 1 :0;

$approve_ok = "{$IBlogs->Lang[add_news_ok_1]} {$title} {$IBlogs->Lang[add_news_ok_2]}";

// Очистка кэша
$IBlogs->ClearAllCacheBlog( $blog_alt, $blog_id );
}
else
{
$sait_status = intval( $_POST['sait_status'] ) == 1 ? "off" : "on";
$comment = 1;
$rating = 1;
$public = 0;
$approve_ok = "{$IBlogs->Lang[add_news_ok_1]} {$title} {$IBlogs->Lang[add_news_ok_3]}";
}

$approve = $user_group[ $member_id['user_group'] ]['moderation'] ? 1 : 0;
$editor = $IBlogs->ChoiceEditor( $row_blog['ws_news'], $IBlogs->Config['wysiwyg_news_options'] );
if( $editor == "wysiwyg" )
{
$short_story = $db->safesql( $parse->BB_Parse( $parse->process( $short_story ) ) );
$full_story = $db->safesql( $parse->BB_Parse( $parse->process( $full_story ) ) );
$allow_br = 0;
}
else
{
$short_story = $db->safesql( $parse->BB_Parse( $parse->process( $short_story ), false ) );
$full_story = $db->safesql( $parse->BB_Parse( $parse->process( $full_story ), false ) );
$allow_br = 1;
}

$keywords = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['keywords'] ), false ) );
$description = $db->safesql( $parse->process( trim( $_POST['description'] ) ) );
$keywords = $db->safesql( $parse->process( trim( $_POST['keywords'] ) ) );
$autor = $db->safesql( $member_id['name'] );
$autor_id = intval( $member_id['user_id'] );
$time = time() + ( $config['date_adjust'] * 60 );
$date = date( "Y-m-d H:i:s", $time );
$alt_name = totranslit( $title );
$viewing = $_POST['viewing'];
$allow_main = $user_group[ $member_id['user_group'] ]['allow_main'] ? 1 : 0;
$_POST['tags'] = $db->safesql( htmlspecialchars( strip_tags( stripslashes( trim( $_POST['tags'] ) ) ), ENT_QUOTES, $config['charset'] ) );

if( $member_id['name'] == $admin || $IBlogs->GroupModer )
{
if( $viewing != "friend" && $viewing != "podkl" && $viewing != "admin" ) $viewing = "all";
}
else
{
$viewing = "all";
}

if( !count( $_REQUEST['catlist'] ) || $IBlogs->Config['sait_news'] != "yes" )
{
$catlist = array();
$catlist[] = "0";
}
else
{
$catlist = $_REQUEST['catlist'];
$category_list = $db->safesql( implode( ",", $catlist ) );
}

// обработка опроса
if( trim( $_POST['vote_title'] != "" ) && $IBlogs->Config['opt_news_poll'] == "yes" )
{
$add_vote = 1;
$vote_title = $db->safesql( $parse->process( trim( $_POST['vote_title'] ) ) );
$frage = $db->safesql( $parse->process( trim( $_POST['frage'] ) ) );
$vote_body = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['vote_body'] ), false ) );
$allow_m_vote = isset( $_POST['allow_m_vote'] ) ? 1 : 0;
}
else
{
$add_vote = 0;
}

// Ссылки на скачивание
if( $IBlogs->Config['download_link'] == "yes" && $_POST['download_site'] == 1 ) $download_link = "yes";
if( $IBlogs->Config['sait_news'] != "yes" ) $sait_status = "off";
$SqlBlogName = $db->safesql( $blog_name );

$db->query( "INSERT INTO ".PREFIX."_post (autor,date,short_story,full_story,title,descr,keywords,alt_name,comm_num,allow_comm,allow_main,approve,blog_cat,blog_approve,blog_name,sait_status,category,viewing,download_link) VALUES ('$autor','$date','$short_story','$full_story','$title','$description','$keywords','$alt_name','0','$comment','$allow_main','$approve','$blog_alt','$public','$SqlBlogName','$sait_status','$category_list','$viewing','$download_link')" );
$row_id = $db->insert_id();

$db->query( "INSERT INTO " . PREFIX . "_post_extras (`news_id`,`allow_rate`,`user_id`,`votes`) VALUES ('{$row_id}', '{$rating}', '{$member_id['user_id']}','{$add_vote}')" );

// Обновление картинок и файлов загруженных для данной статьи
$db->query( "UPDATE ".PREFIX."_images SET news_id='{$row_id}' WHERE author='{$autor}' AND news_id='0'" );
$db->query( "UPDATE ".PREFIX."_files SET news_id='{$row_id}' WHERE author='{$autor}' AND news_id='0'" );

// Добавление опроса в базу
if( $add_vote )
{
$db->query( "INSERT INTO ".PREFIX."_poll (news_id, title, frage, body, votes, multiple) VALUES ('$row_id', '$vote_title', '$frage', '$vote_body', 0, '$allow_m_vote')" );
}

// Обновляем количество новостей в блоге
$db->query( "UPDATE ".PREFIX."_blog_cat SET news_number=news_number+1 WHERE alt_name='{$blog_alt}'" );

// Обновляем количество новостей у пользователя
$db->query( "UPDATE ".USERPREFIX."_users SET news_num=news_num+1 WHERE user_id='{$autor_id}'" );

// Если в настройках включено отправка почты при модерации, то отправляем письмо
if( $IBlogs->Config['mail_news_moder'] == "yes" && $row_blog['email_news_yes'] == "1" && $public == 0 )
{
$MailTags = array(
"username" => $admin,
"blog_name" => $blog_name,
"news_name" => $title,
"admin_news" => $member_id['name'],
"date" => langdate( "j F Y H:i", $_TIME ),
"text" => $short_story,
);

$IBlogs->SendEmail( "blog_news", $row_blog['email'], $MailTags );
}

// Удаляем капчу
$_SESSION['sec_code_session'] = "";
bmw-power.com.ua (https://bmw-power.com.ua)
Василич#
На сайте с 10.03.2009
Offline
111
#1

2-я часть (т.к. обрезало форумом)

						// Уведомляем поисковых ботов
if( $row_blog['rss'] == 1 && $IBlogs->Config['rss_on'] == "yes" && $IBlogs->Config['ping_on'] == "on" )
{
$PingTitle = $IBlogs->Config['title_type'] == "blog" ? stripslashes( $row_blog['name'] ) : stripslashes( $config['home_title'] );
$PingBlogUrl = $blog_home_link;
if( $IBlogs->AltURL )
{
if( $IBlogs->Config['blog_alias'] == "yes" )
$PingRssUrl = "{$blog_home_link}rss/";
else
$PingRssUrl = "{$blog_home_link}rss.xml";
}
else
{
$PingRssUrl = "{$home_link}/engine/blog.php?name={$blog_alt}";
}

$IBlogs->DoPing( $PingBlogUrl, $PingRssUrl, $PingTitle );
}

// Выводим сообщение
$tpl->Load_template( "info.tpl" );
$tpl->set( "{title}", $IBlogs->Lang['info'] );
$tpl->set( "{error}", $approve_ok );
$tpl->compile( "content" );
$tpl->clear();
}
else
{
$tpl->Load_template( "info.tpl" );
$tpl->set( "{title}", $IBlogs->Lang['error'] );
$tpl->set( "{error}", "<ol>{$error}</ol>" );
$tpl->compile( "content" );
$tpl->clear();
}
}
else
{
//------------------------------------------=-=-=-=-=
// Вывод формы добавления статьи
//------------------------------------------=-=-=-=-=

$tpl->load_template( "blog/{$blog_skin}/addnews.tpl" );

// Лист категорий
$cat_list = explode( ",", 0 );
$categories_list = CategoryNewsSelection( $cat_list, 0 );
if( $IBlogs->Config['sait_news_status'] == "yes" )
{
$cat_check = "checked";
$cat_disabled = "disabled";
}

if( $config['allow_multi_category'] )
$cats ="<select name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this.value)\" style=\"width:220px;height:73px;\" multiple {$cat_disabled}>";
else
$cats ="<select name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this.value)\" {$cat_disabled}>";

$cats .= $categories_list;
$cats .= "</select>";

if( $IBlogs->Config['sait_news'] == "no" )
{
$tpl->set_block( "'\\[category\\].*?\\[/category\\]'si", "" );
}
else
{
$tpl->set( "[category]", "" );
$tpl->set( "[/category]", "" );
}

// Обработка опроса
if( $IBlogs->Config['opt_news_poll'] == "yes" )
$tpl->set( "{vote_body}", "" );
else
$tpl->set( "{vote_body}", $IBlogs->Lang['add_news_vote_off'] );


// Выбор редактора
$editor = $IBlogs->ChoiceEditor( $row_blog['ws_news'], $IBlogs->Config['wysiwyg_news_options'] );
if( $editor == "wysiwyg" )
{
$bb_code = "";
include_once( ENGINE_DIR."/modules/blog/editor/wysiwyg/wysiwyg_news.php" );

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

$preview = "<input type=\"button\" class=\"bbcodes_poll\" value=\"{$IBlogs->Lang[news_button_preview]}\" onClick=\"dopreview( document.entryform.title.value , tinyMCE.get('short_story').getContent(),document.entryform.full_story.value); return false;\" /><script language=\"javascript\" type=\"text/javascript\">var blog_wysiwyg = \"yes\";</script>";

$form = "<form method=\"post\" name=\"entryform\" id=\"entryform\" action=\"\" onsubmit=\"if(document.entryform.title.value == '' || tinyMCE.get('short_story').getContent() == ''){alert('{$IBlogs->Lang[fill_all_pole]}');return false}\">";

}
else
{
include_once( ENGINE_DIR."/modules/blog/editor/bb_code/bb_news.php" );
$tpl->set( "{shortarea}", "" );
$tpl->set( "{fullarea}", "" );
$tpl->set( "[not-wysywyg]", "" );
$tpl->set( "[/not-wysywyg]", "" );

$preview = "<input type=\"button\" class=\"bbcodes_poll\" value=\"{$IBlogs->Lang[news_button_preview]}\" onClick=\"dopreview( document.entryform.title.value , document.entryform.short_story.value,document.entryform.full_story.value); return false;\" /><script language=\"javascript\" type=\"text/javascript\">var blog_wysiwyg = \"no\";</script>";

$form = "<form method=\"post\" name=\"entryform\" id=\"entryform\" action=\"\" onsubmit=\"if(document.entryform.short_story.value == '' || document.entryform.title.value == ''){alert('{$IBlogs->Lang[fill_all_pole]}');return false}\">";
}


// Админские теги
if( $member_id['name'] == $admin || $IBlogs->GroupModer )
$tpl->set_block( "'\[admin\](.*?)\[/admin\]'si", "\\1" );
else
$tpl->set_block( "'\[admin\](.*?)\[/admin\]'si", "" );

// Модерские теги
if( $member_id['name'] == $admin || $row_blog['moder'] == "1" || $IBlogs->GroupModer )
$tpl->set_block( "'\[moder\](.*?)\[/moder\]'si", "\\1" );
else
$tpl->set_block( "'\[moder\](.*?)\[/moder\]'si", "" );

// Список на разрешение просмотра блога
if( $IBlogs->IntegrationConfig['friend'] == "yes" )
$viewing = $IBlogs->SelectList( array( "all" => $IBlogs->Lang['opt_all'], "friend" => $IBlogs->Lang['opt_friend'], "podkl" => $IBlogs->Lang['opt_podkl'], "admin" => $IBlogs->Lang['opt_only_admin'] ), "viewing", "" );
else
$viewing = $IBlogs->SelectList( array( "all" => $IBlogs->Lang['opt_all'], "podkl" => $IBlogs->Lang['opt_podkl'], "admin" => $IBlogs->Lang['opt_only_admin'] ), "viewing", "" );

$tpl->set( "{viewing}", $viewing );

$tpl->set( "{capcha}", "<span id=\"dle-captcha\"><img src=\"/engine/modules/".( $config['version_id'] > 10 ? "antibot/antibot" : "antibot" ).".php\" alt=\"{$lang['sec_image']}\" border=\"0\" onclick=\"BlogReCaptcha(); return false;\" style=\"cursor: pointer;\" /></span>" );

if( $IBlogs->Config['blog_addnews_captcha'] == "no" )
{
$tpl->set_block( "'\[captcha\](.*?)\[/captcha\]'si", "" );
}
else
{
$tpl->set( "[captcha]", "" );
$tpl->set( "[/captcha]", "" );
}

if( $IBlogs->Config['sait_news_com'] == "yes" ) $com_check = "checked";
if( $IBlogs->Config['sait_news_moder'] == "yes" ) $public_check = "checked";
if( $IBlogs->Config['sait_news_rating'] == "yes" ) $rating_check = "checked";

$tpl->set( "{sait_status}", "<input name=\"sait_status\" id=\"sait_status\" value=\"1\" onclick=\"if(document.forms['entryform']['sait_status'].checked){!document.forms['entryform']['catlist[]'].setAttribute('disabled', 'disabled');}else{!document.forms['entryform']['catlist[]'].removeAttribute('disabled');}\" type=\"checkbox\" {$cat_check} />" );

$tpl->set( "{short-story}", "" );
$tpl->set( "{full-story}", "" );
$tpl->set( "{bbcode}", $bb_code );
$tpl->set( "{comments}", "<input type=\"checkbox\" name=\"comment\" id=\"comment\" value=\"1\" {$com_check} />" );
$tpl->set( "{rating}", "<input type=\"checkbox\" name=\"rating\" id=\"rating\" value=\"1\" {$rating_check} />" );
$tpl->set( "{public}", "<input type=\"checkbox\" name=\"public\" id=\"public\" value=\"1\" {$public_check} />" );
$tpl->set( "{category}", $cats );
$tpl->set( "{preview}", $preview );

if( $IBlogs->Config['download_link'] == "yes" )
{
$tpl->set( "[download_site]", "" );
$tpl->set( "[/download_site]", "" );
$tpl->set( "{download_site}", "<input type=\"checkbox\" name=\"download_site\" id=\"download_site\" value=\"1\" checked />" );
}
else
{
$tpl->set_block( "#\[download_site\](.*?)\[/download_site\]#is", "" );
}

$tpl->copy_template = $form.$tpl->copy_template."</form><div id=\"blogpreview\"></div>";

$tpl->compile( "content" );
$tpl->clear();
}
}

//------------------------------------------=-=-=-=-=
// Метатеги
//------------------------------------------=-=-=-=-=

if( $config['allow_alt_url'] == "1" )
$speed_link_blog = "<a href=\"{$home_link}/blog/\">{$IBlogs->Lang['blogs_title']}</a>";
else
$speed_link_blog = "<a href=\"{$home_link}/index.php?do=blog\">{$IBlogs->Lang['blogs_title']}</a>";

$link_blog = "<a href=\"{$blog_home_link}\">{$blog_name}</a>";

$metatitle = $IBlogs->Lang['blog_title']." » ".$blog_name." » ".$IBlogs->Lang['add_news_title'];
$metaspeedbar = $speed_link_blog." » ".$link_blog." » ".$IBlogs->Lang['add_news_title'];
$meta_description = stripslashes($row_blog['meta_description']);
$meta_keywords = stripslashes($row_blog['meta_keywords']);

?>

Пытался делать по аналогии с addnews.php, формы выводит, но не сохраняет.

LovelAss
На сайте с 05.06.2009
Offline
96
#2


<input type="text" name="xfname">


$xfields = !empty($_POST['xfname']) ? $db->safesql('xfname|'.trim($_POST['xfname'])) : '';

Ну а дальше записывайте значение $xfields в базу.

Василич#
На сайте с 10.03.2009
Offline
111
#3

LovelAss, прежде всего, огроменное спасибо за ответ !

Ну а дальше записывайте значение $xfields в базу.

Как я понял, строку:

$db->query( "INSERT INTO ".PREFIX."_post (autor,date,short_story,full_story,title,descr,keywords,alt_name,comm_num,allow_comm,allow_main,approve,blog_cat,blog_approve,blog_name,sait_status,category,viewing,download_link) VALUES ('$autor','$date','$short_story','$full_story','$title','$description','$keywords','$alt_name','0','$comment','$allow_main','$approve','$blog_alt','$public','$SqlBlogName','$sait_status','$category_list','$viewing','$download_link')" );

заменить на эту

$db->query( "INSERT INTO ".PREFIX."_post (autor,date,short_story,full_story,xfields,title,descr,keywords,alt_name,comm_num,allow_comm,allow_main,approve,blog_cat,blog_approve,blog_name,sait_status,category,viewing,download_link) VALUES ('$autor','$date','$short_story','$full_story','$filecontents','$title','$description','$keywords','$alt_name','0','$comment','$allow_main','$approve','$blog_alt','$public','$SqlBlogName','$sait_status','$category_list','$viewing','$download_link')" );

или не то ?) Простите, но я в php не очень, учусь, но тяжеловато мне даётся, с горем пополам CSS доучиваю, экспериментальными методами :)

LovelAss:
$xfields = !empty($_POST['xfname']) ? $db->safesql('xfname|'.trim($_POST['xfname'])) : '';

Простите, а куда это вставить ?

После ? $title = trim( $_POST['title'] );

У меня в исходнике addnews.html доп.поля вида:

<input type="text" name="xfield[blogkart]" id="xf_blogkart" value="">
где blogkart - это имя доп. поля.

Буду очень благодарен Вам за ответ !

P.S. Пол ночи провозился, ничего не получилось ....:(:(:(

LovelAss
На сайте с 05.06.2009
Offline
96
#4
Василич#:
У меня в исходнике addnews.html доп.поля вида:

Если вам нужно передать значение одного единственного доп.поля, используйте код, который я привёл выше. Только xfname замените на имя нужного поля.

Василич#:
Простите, а куда это вставить ?
После ? $title = trim( $_POST['title'] );

Именно.


$db->query( "INSERT INTO ".PREFIX."_post (autor,date,short_story,full_story,xfields,title,descr,keywords,alt_name,comm_num,allow_comm,allow_main,approve,blog_cat,blog_approve,blog_name,sait_status,category,viewing,download_link) VALUES ('$autor','$date','$short_story','$full_story','$xfields','$title','$description','$keywords','$alt_name','0','$comment','$allow_main','$approve','$blog_alt','$public','$SqlBlogName','$sait_status','$category_list','$viewing','$download_link')" );

Вместо $filecontents используйте $xfields.

P.S. В личные сообщения писать больше не нужно. Посчитаю нужным помочь, помогу.

Василич#
На сайте с 10.03.2009
Offline
111
#5

LovelAss, Огромнейшее спасибо ! Загрузил исходный код, все сделал как Вы сказали, без лишних своих корявых доработок - и всё заработало супер !

Спасибо Вам огромное !

Василич#
На сайте с 10.03.2009
Offline
111
#6

Решил заморочиться и сделать это поле, как картинку(и).

Но вот, почему-то тег [thumb]ссылка на картинку[/thumb] так и отображается в новости, но если зайти через админцентр, редактировать данную новость и просто нажать сохранить, все отлично начинает отображать как надо.

Как я понял, в addnews.html есть какой-то код, который обрабатывает данную тумбу, не подскажете куда копать ? Т.к. я понял, что у меня втупую в базу заносится именно [thumb]ссылка на картинку[/thumb], а с addnews оно в базу вносит сразу обработанное типа:

blogkart|<!--TBegin:ссылка на полное изображениеg***124;--><a href="ссылка на полное изображение" rel="highslide" class="highslide"><img src="ссылка на уменьшенное (тумбу)" alt='титл' title='титл' /></a><!--TEnd-->

Заранее спасибо !

---------- Добавлено 17.03.2016 в 20:43 ----------

Продолжаю борьбу)))

Как я понял, нужно чтобы запрос:

$xfields = !empty($_POST['xfname']) ? $db->safesql('xfname|'.trim($_POST['xfname'])) : '';

обрабатывал parse.class, но вот почему-то мой код не работает:

$xfields = !empty($_POST['blogkart']) ? $db->safesql( htmlspecialchars( stripslashes( $parse->process('blogkart|'.trim($_POST['blogkart']))))) : '';

Повторюсь, делал по аналогии с другими кодами, но почему-то зашёл в тупик.

Может знает кто, как заставить ?)

Василич#
На сайте с 10.03.2009
Offline
111
#7

UPD: понял, что такими махинациями, вряд-ли можно провернуть это дело. Скорее всего, нужно вообще добавить сюда функцию. доп полей как в addnews, но, по аналогии, не получается...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий