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

Вывод новостей по содержимому доп. полей.


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

Изначально все доп поля новости записываются последовательно в xfields таблицы dle_post, и потом выводятся как текст. А как сделать чтоб они заносились в отдельные столбцы таблицы и потом по содержимому этих полей можно былобы выводить новости ?

т.е. помимо вывода новостей по категориям. или м.б. это возможно сделать и без дополнительных столбцов?

P.S. например как в жж ключевые слова.

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

Думаю это весьма большая работа и создание новых полей по данном алгоритму будет проблематично.

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

Если вы хотите ввести в БД новые поля, то по сути вам и не нужны возможности двига в плане "дополнительных полей".

Работайте напрямую с БД!

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

ну я начал с малого =) я попытался выводить новости по вхождению слова в xfield добавив следующий код в engine.php

	if ($do == "pole" AND $pole != '') {


		if ($cstart){

			$cstart = $cstart - 1;

			$cstart = $cstart * $config['news_number'];

		}


		$url_page = $config['http_home_url'].get_url($pole);


	$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read FROM " . PREFIX . "_post where xfields regexp '[[:<:]]($pole)[[:>:]]' ".$where_date." ORDER BY fixed desc LIMIT ".$cstart.",".$config['news_number'];

	$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where xfields regexp '[[:<:]]($pole)[[:>:]]'".$where_date;

с цифровыми значениями и латиницей отлично работает через index.php?do=pole&pole=[запрос]

с русскими словами проблема...хоть их браузер и переводит в %D0%A2%D0%BE%D0%BC толку ноль =( это можно както подправить?

И можно както эту конструкцию сделать ЧПУ?

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

а откуда у тебя берётся переменная $pole?

И можно както эту конструкцию сделать ЧПУ?

Скажи мне какие пути тебе надо - напишу

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

хм...запросы перестали работать...выводит все посты подряд, а когда переходиш на 2ю страницу выведенных постов пишет - "По данному критерию новости не найдены, либо у вас нет доступа для просмотра этих новостей"

причем я вроде не менял ничего =\

а откуда у тебя берётся переменная $pole?

через GET определяется. а [значение] оно будет в ссылках вбито, это будет значение доп. поля по которому идет поиск

и вначале энжина.пхп я еще прописал

if (isset ($_REQUEST['pole'])) $pole = $_REQUEST['pole']; else $pole = "";

А ЧПУ наверно лучше будет /sort/[значение] или если возможно то /sort/[доп.поле в котором это значение]

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

или если возможно то /sort/[доп.поле в котором это значение]
тогда тебе в ссылку придётся включить это поле

наверно лучше будет /sort/[значение]

RewriteRule ^sort/([^.]+)(/?)$ index.php?do=pole&pole=$1 [L]

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

спасибо.

но тут полтергейст какойто... он при любых значениях pole выводит все новости

эксперимента ради заменял

regexp '[[:<:]]($pole)[[:>:]]'
на
regexp '[[:<:]]life[[:>:]]'
чтоб он вывел пост со словом life в доп. поле независимо от значения $pole - всеравно выдал все новости. запрос
SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read FROM dle_post WHERE xfields regexp '[[:<:]]life[[:>:]]' ORDER BY fixed desc
в phpMyAdmin выполнился на ура непойму где ошибка =\
	if ($do == "pole" AND $pole != '') {


		if ($cstart){

			$cstart = $cstart - 1;

			$cstart = $cstart * $config['news_number'];

		}


		$url_page = $config['http_home_url'].get_url($pole);


	$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read FROM " . PREFIX . "_post WHERE xfields regexp '[[:<:]]($pole)[[:>:]]' ORDER BY fixed desc LIMIT ".$cstart.",".$config['news_number'];

	$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE xfields regexp '[[:<:]]($pole)[[:>:]]'";


	}

Изменено пользователем ch0sen
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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