Перейти к публикации

Как изменить разделитель для значений дополнительных полей с запятой на слэш?


Рекомендованные сообщения

Здравствуйте! Подскажите, как сделать, чтобы значения в дополнительных полях перечислялись через другой разделитель, нежели запятая? Например, мне нужно через слэш (/). Делал замену в файлах 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

В случае, когда значения полей используются как перекрестная гиперссылка. 

Ссылка на сообщение
Поделиться на других сайтах

Мне нужно, чтобы, в том числе, при добавлении новости значения разделялись слэшем

Дело в том, что запятая часто встречается в значениях полей и как разделитель не подходит.

Ссылка на сообщение
Поделиться на других сайтах
В 26.08.2017 в 16:41, yeahga сказал:

Мне нужно, чтобы, в том числе, при добавлении новости значения разделялись слэшем

Дело в том, что запятая часто встречается в значениях полей и как разделитель не подходит.

Это файлы вывода новостей на сайте, а не добавления.

 

За добавление отвечают файлы

engine/inc/addnews.php

engine/inc/editnews.php

engine/modules/addnews.php

Ссылка на сообщение
Поделиться на других сайтах

Короче, мне надо чтобы не это

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;
		
		}

Буду безмерно благодарен, если подскажите! 

Ссылка на сообщение
Поделиться на других сайтах
11 час назад, celsoft сказал:

Это файлы вывода новостей на сайте, а не добавления.

 

За добавление отвечают файлы

engine/inc/addnews.php

engine/inc/editnews.php

engine/modules/addnews.php

Кажется, понял. Прошу прощения за свою глупость 

Ссылка на сообщение
Поделиться на других сайтах

Разобрался. Надо еще в 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]]) );

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...