yeahga 6 Опубликовано: 25 августа 2017 Рассказать Опубликовано: 25 августа 2017 Здравствуйте! Подскажите, как сделать, чтобы значения в дополнительных полях перечислялись через другой разделитель, нежели запятая? Например, мне нужно через слэш (/). Делал замену в файлах show.custom.php, show.full.php и show.short.php Менял $temp_array = explode( ",", $xfieldsdata[$value[0]] ); на $temp_array = explode( "/", $xfieldsdata[$value[0]] ); и $xfieldsdata[$value[0]] = implode(", ", $value3); на $xfieldsdata[$value[0]] = implode(" / ", $value3); В итоге список значений дополнительных полей в новости формируется нормально, но поиск по полям не работает, если значений несколько. Подскажите, надо ли еще где-то правки делать или дело в чем-то другом? Спасибо! сайт htts://deathgrind.xyz В случае, когда значения полей используются как перекрестная гиперссылка. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 26 августа 2017 Рассказать Опубликовано: 26 августа 2017 в explode менять не нужно, нужно менять только в implode Цитата Ссылка на сообщение Поделиться на других сайтах
yeahga 6 Опубликовано: 26 августа 2017 Рассказать Опубликовано: 26 августа 2017 Автор Мне нужно, чтобы, в том числе, при добавлении новости значения разделялись слэшем Дело в том, что запятая часто встречается в значениях полей и как разделитель не подходит. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 27 августа 2017 Рассказать Опубликовано: 27 августа 2017 В 26.08.2017 в 16:41, yeahga сказал: Мне нужно, чтобы, в том числе, при добавлении новости значения разделялись слэшем Дело в том, что запятая часто встречается в значениях полей и как разделитель не подходит. Это файлы вывода новостей на сайте, а не добавления. За добавление отвечают файлы engine/inc/addnews.php engine/inc/editnews.php engine/modules/addnews.php Цитата Ссылка на сообщение Поделиться на других сайтах
yeahga 6 Опубликовано: 28 августа 2017 Рассказать Опубликовано: 28 августа 2017 Автор Короче, мне надо чтобы не это field|value1,value2,value3|| преобразовывалось в гиперссылки, а это field|value1/value2/value3|| В базу-то всё записывается правильно. После правок в файлах show.***.php список гиперссылок формируется нормально. Но поиск по дополнительным полям не работает. То есть, по ссылке /xfsearch/field/value2/ не найдет новостей. Подозреваю правки надо делать еще и в engine/engine.php где-то тут: elseif ($do == 'xfsearch') { // ################ Поиск новостей по доп. полям ################# if ($cstart) { $cstart = $cstart - 1; $cstart = $cstart * $config['news_number']; } $xf = urldecode ( $_GET['xf'] ); $url_charset = detect_encoding($xf); if ( $url_charset AND $url_charset != strtolower($config['charset']) ) { if( function_exists( 'mb_convert_encoding' ) ) { $xf = mb_convert_encoding( $xf, $config['charset'], $url_charset ); } elseif( function_exists( 'iconv' ) ) { $xf = iconv($url_charset, $config['charset'], $xf); } } if (dle_substr ( $xf, - 1, 1, $config['charset'] ) == '/') $xf = dle_substr ( $xf, 0, - 1, $config['charset'] ); $xf = explode ( '/', $xf ); $xfname =""; if( $_GET['xfname'] AND !$config['allow_alt_url'] ) { $xfname =$db->safesql(totranslit(trim($_GET['xfname']))); } elseif(count($xf) > 1 ) { $xfname =$db->safesql(totranslit(trim($xf[0]))); unset($xf[0]); } $xf = implode('/', $xf); $xf = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $xf ) ) ), ENT_QUOTES, $config['charset'] ) ); if (isset ( $_SESSION['dle_sort_xfsearch'] )) $news_sort_by = $_SESSION['dle_sort_xfsearch']; if (isset ( $_SESSION['dle_direction_xfsearch'] )) $news_direction_by = $_SESSION['dle_direction_xfsearch']; if($xfname) { $url_page = $config['http_home_url'] . "xfsearch/{$xfname}/" . urlencode ( str_replace("'", "'", $xf) ); $user_query = "do=xfsearch&xfname=".$xfname."&xf=" . urlencode ( str_replace("'", "'", $xf) ); $db->query ( "SELECT news_id FROM " . PREFIX . "_xfsearch WHERE tagname='{$xfname}' AND tagvalue='{$xf}'" ); } else { $url_page = $config['http_home_url'] . "xfsearch/" . urlencode ( str_replace("'", "'", $xf) ); $user_query = "do=xfsearch&xf=" . urlencode ( str_replace("'", "'", $xf) ); $db->query ( "SELECT news_id FROM " . PREFIX . "_xfsearch WHERE tagvalue='{$xf}'" ); } $xf_array = array (); while ( $row = $db->get_row () ) { $xf_array[] = $row['news_id']; } if (count ( $xf_array )) { if( $config['allow_alt_url'] AND $config['seo_control'] ) { $tmp_pos = strpos($_SERVER['REQUEST_URI'], urlencode(str_replace("'", "'", $xf)) ); if (substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) != '/' OR $_GET['cstart'] == 1 OR substr ( $_SERVER['REQUEST_URI'], - 2 ) == '//' OR strpos ($_SERVER['REQUEST_URI'], "do=xfsearch" ) !== false OR !$tmp_pos ) { $re_url = $url_page . "/"; if( $_GET['cstart'] > 1 ) { $re_url .= "page/".intval($_GET['cstart'])."/"; } header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}"); die("Redirect"); } } $xf_array = array_unique($xf_array ); $xf_array = "(" . implode ( ",", $xf_array ) . ")"; $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}p.id IN {$xf_array} AND p.approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number']; $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}id IN {$xf_array} AND approve=1" . $where_date; } else { if(!$xf) { $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) ); $re_url = reset ( $re_url ); header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}"); die("Redirect"); } $sql_select = "SELECT SQL_CALC_FOUND_ROWS p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}xfields LIKE '{$xf}' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number']; $sql_count = "SELECT FOUND_ROWS() as count"; } $allow_active_news = true; } Буду безмерно благодарен, если подскажите! Цитата Ссылка на сообщение Поделиться на других сайтах
yeahga 6 Опубликовано: 28 августа 2017 Рассказать Опубликовано: 28 августа 2017 Автор 11 час назад, celsoft сказал: Это файлы вывода новостей на сайте, а не добавления. За добавление отвечают файлы engine/inc/addnews.php engine/inc/editnews.php engine/modules/addnews.php Кажется, понял. Прошу прощения за свою глупость Цитата Ссылка на сообщение Поделиться на других сайтах
yeahga 6 Опубликовано: 28 августа 2017 Рассказать Опубликовано: 28 августа 2017 Автор Разобрался. Надо еще в engine/inc/xfields.php и engine/ajax/rebuild.php заменить $temp_array = explode( ",", $newpostedxfields[$value[0]] ); на $temp_array = explode( "/", $newpostedxfields[$value[0]] ); Спасибо за подсказку! И в engine/inc/massactions.php $temp_array = explode( ",", stripslashes($postedxfields[$value3[0]]) ); на $temp_array = explode( "/", stripslashes($postedxfields[$value3[0]]) ); Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.