CMS DataLife Engine - Система управления сайтами

ks95

Сортировка новостей с помощью дополнительного поля

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

ks95    2

konoplev.net

Создал дополнительное поле "best" с типом "переключатель да/нет", чтобы конкретные новости из конкретной категории можно было помечать или не помечать, как имеющие определённую характеристику (типа, лучшее/рекомендовано/советую/выбор редакции и т.п.). При добавлении новости с переключателем "да" она при выводе помечается специальной картинкой через хтмл-код (например: [xfgiven_best]<img src="{THEME}/images/best.png" />[/xfgiven_best]). Чтобы по нажатию на ссылку вывести все новости в этой категории, помеченные переключателем "да", мне приходится также через вкладку "Дополнительно" добавлять в эти новости одинаковый символьный код, чтобы они выводились, как принадлежащие к определённому каталогу. Фактически, приходится делать двойную работу: использовать переключатель дополнительного поля и помечать символьным кодом.

Вопрос: как сформировать ссылку для вывода списка новостей с переключателем "да", не прибегая к использованию символьного кода (вообще обойтись без него)?

Поделиться сообщением


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

Может быть это легче реализовать через задание ключевых слов в облаке тегов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
celsoft    5 028
В 05.09.2017 в 16:56, ks95 сказал:

Вопрос: как сформировать ссылку для вывода списка новостей с переключателем "да", не прибегая к использованию символьного кода (вообще обойтись без него)?

Никак. Поиск по доп. полям имеющим определенное значение возможен только в том случае, если поле имеет дополнительно опцию "использовать как перекрестные ссылки"

18 часов назад, ks95 сказал:

Может быть это легче реализовать через задание ключевых слов в облаке тегов?

Можно и через доп. поля, только тип должен быть не переключатель, а например текстовое поле или select с опцией перекрестных ссылок.

Поделиться сообщением


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

Никак. Поиск по доп. полям имеющим определенное значение возможен только в том случае, если поле имеет дополнительно опцию "использовать как перекрестные ссылки"

Можно и через доп. поля, только тип должен быть не переключатель, а например текстовое поле или select с опцией перекрестных ссылок.

Когда разработчик не знает свой же функционал...

x3hFqqPhSPmZlz5PD5m4aw.png

RnelFbMyQtG_o5zesXAM2g.png

Поделиться сообщением


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

Gameer, не могли бы подробней объяснить известный вам способ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Gameer    4
8 минут назад, ks95 сказал:

Gameer, не могли бы подробней объяснить известный вам способ?

Да просто ссылка /xfsearch/best/1/

Где best ваше доп поле.

Ссылка ведет на страницу с новостями у которых переключатель включен

/xfsearch/best/0/

А при ссылке с нулём у которых выключен.

Поделиться сообщением


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

Когда разработчик не знает свой же функционал...

Как раз таки знает и знает когда то что вы написали перестанет работать и правильно показывать. У вас показывает потому что нет других полей хотя бы содержащий 1 или 0 как только появятся вы будет уже видеть кашу, либо не видеть ничего. /xfsearch/best/1/ документирован только для полей с опцией "перекрестные ссылки", а для поля "переключатель", такой опции нет.

  • Поддерживаю 1

Поделиться сообщением


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

Как раз таки знает и знает когда то что вы написали перестанет работать и правильно показывать. У вас показывает потому что нет других полей хотя бы содержащий 1 или 0 как только появятся вы будет уже видеть кашу, либо не видеть ничего. /xfsearch/best/1/ документирован только для полей с опцией "перекрестные ссылки", а для поля "переключатель", такой опции нет.

Да, увидел. Но сделав правку небольшую все будет ок.

В engine/engine.php найти

$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}xfields LIKE '%{$xf}%' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

Заменить на

if($xfname) {
	$xf_like = $xfname . "|";
}
$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}xfields LIKE '%{$xf_like}{$xf}%' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ks95    2
5 часов назад, Gameer сказал:

Но сделав правку небольшую все будет ок.

Спасибо за ваше неравнодушие, что даёте конкретный совет. Всё-таки хотелось бы воспользоваться стандартными средствами, без внесения изменений в код. Иначе при каждом обновлении придётся делать то же самое, и не факт, что для новых версий это будет актуально.

6 часов назад, celsoft сказал:

/xfsearch/best/1/ документирован только для полей

Очень странно, но в документации я вообще не нахожу такого слова "xfsearch". Разве это в самом деле документировано?

Поделиться сообщением


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

Офтоп, дополнительный вопрос.

При отключённом ЧПУ можно ли использовать для указания категорий ссылку типа website.com/soft/ вместо положенной website.com/?do=cat&category=soft ? У меня ЧПУ выключено, но вариант типа website.com/soft/ почему-то тоже работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ks95    2
В 08.09.2017 в 12:56, celsoft сказал:

Поиск по доп. полям имеющим определенное значение возможен только в том случае, если поле имеет дополнительно опцию "использовать как перекрестные ссылки"

Сделал так, изменил доп. поле на "одна строка", поставил галочку "перекрёст. ссылки". Подскажите, как в этом случае формируется ссылка на список новостей, в которых это доп. поле называется "best", описание поля "Лучшее", и в его значении в новостях введено "да" (или любое другое значение: +/ок/лучшее и т.п.)? Спасибо.

Поделиться сообщением


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

Кажется, понял, методом тыка, - ссылка будет такая: konoplev.net/xfsearch/best/да/ . Кстати, допустимо ли использовать кириллицу ("да"), или лучше надо латиницу ("da")? И с "+" точно не работает, зато работает с цифрой.

Но всё равно странно, что в документации про /xfsearch/ ничего нет, а знающие люди во всю давно пользуются.

И не понятно, почему обязательно нужен параметр в этом случае "перекрёстные ссылки"?.. Ну, нужен, так нужен.

И про

3 часа назад, ks95 сказал:

дополнительный вопрос

пожалуйста, ответьте.

Поделиться сообщением


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

Сделал так, изменил доп. поле на "одна строка", поставил галочку "перекрёст. ссылки". Подскажите, как в этом случае формируется ссылка на список новостей, в которых это доп. поле называется "best", описание поля "Лучшее", и в его значении в новостях введено "да" (или любое другое значение: +/ок/лучшее и т.п.)? Спасибо.

При выводе доп. поля на сайте, оно будет выведено уже с формированной ссылкой.

12 часа назад, ks95 сказал:

Но всё равно странно, что в документации про /xfsearch/ ничего нет, а знающие люди во всю давно пользуются.

Это не какая то вручную вставляемая ссылка. Такие ссылки использует DLE  при выводе доп. полей.

12 часа назад, ks95 сказал:

Кстати, допустимо ли использовать кириллицу ("да"), или лучше надо латиницу ("da")?

По вашему желанию

12 часа назад, ks95 сказал:

И с "+" точно не работает, зато работает с цифрой.

Потому что выводить ссылки должен DLE, тогда он сделает все правильно. "+" один из служебных символов URL кодирования, и должен быть корректно экранирован для использования в URL, а не просто выведен напрямую в URL

12 часа назад, ks95 сказал:

И не понятно, почему обязательно нужен параметр в этом случае "перекрёстные ссылки"?

 Потому что этот параметр определяет что новость должна быть соответствующим образом проиндексирована, и по этому индексу ищет скрипт корректно.

22 часа назад, Gameer сказал:

Да, увидел. Но сделав правку небольшую все будет ок.

В engine/engine.php найти

Тоже не правильно. При определенном положении поля в списке полей и заполнении публикации в определенной комбинации, подобная правка не будет работать и корректного поиска также не будет. Корректный поиск возможен только для полей имеющий опцию "Перекрестные ссылки", т.к. информация потом из этих полей вносится в соответствующий индекс для корректного и правильного поиска публикаций.

Поделиться сообщением


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

Огромное спасибо за ваши разъяснения!

23 минуты назад, celsoft сказал:

При выводе доп. поля на сайте, оно будет выведено уже с формированной ссылкой.

34 минуты назад, celsoft сказал:

Это не какая то вручную вставляемая ссылка. Такие ссылки использует DLE  при выводе доп. полей.

Поймите меня правильно как конечного пользователя ДЛЕ, и исходите из того, что я должен опираться на документацию вашего движка. Так вот, только из сообщений пользователей на форуме я понял, как формируется эта ссылка. А в документации этого нет. (Просто возьмите на заметку, как разработчик, ибо не я один на это внимание обратил).

Про использование доп.полей описано только это:

Для того чтобы использовать поле на странице с новостями, Вам необходимо в шаблон добавить переменную [xfvalue_X], где X - значение поля (имя, которое Вы ввели при добавлении нового поля). Также можно использовать связку [xfgiven_X]...[/xfgiven_X], которые выводят текст указанный в них если дополнительное поле было задано.

И приведён пример:

[xfgiven_source]Источник - <a href=[xfvalue_source]>нужный текст</a>.[/xfgiven_source]

Если использовать пример из образца с включёнными "перекрёст. ссылками", то получается белиберда (проверьте сами). Документированный пример работает только если "перекрёст. ссылки" вЫключены. А если их включить, то пример [xfvalue_source] сразу принимает вид ссылки при вставке в код, и выглядит, как введённое в это доп. поле значение.

Таким образом, если мне нужно формирование ссылки вида "Самые красивые и вкусные в мире помидоры", то эту фразу я каждый раз при необходимости должен вводить в это доп. поле, причём, в этом строго неизменном виде. Тогда действительно достаточно будет указать в тексте [xfvalue_source].

А вот если знать про чудесный недокументированный функционал /xfsearch/, то достаточно в доп. поле вводить простой текст, например, "1", и выдачу списка таких статей можно делать по ссылке сайт.ру/xfsearch/source/1/. Плюс в шаблоне ссылку можно оформить в любом нужном виде, вместо жёстко предустановленного "Самые красивые и вкусные в мире помидоры".

Ладно, это я делюсь своим открытием, а разработчик и опытные пользователи об этом и без меня знают.

ПС

Главное, что на данном этапе я разобрался. Спасибо.

Пожалуйста, уточните ещё про это:

20 часов назад, ks95 сказал:

При отключённом ЧПУ можно ли использовать для указания категорий ссылку типа website.com/soft/ вместо положенной website.com/?do=cat&category=soft ? У меня ЧПУ выключено, но вариант типа website.com/soft/ почему-то тоже работает.

Спасибо.

Поделиться сообщением


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

Тоже не правильно. При определенном положении поля в списке полей и заполнении публикации в определенной комбинации, подобная правка не будет работать и корректного поиска также не будет. Корректный поиск возможен только для полей имеющий опцию "Перекрестные ссылки", т.к. информация потом из этих полей вносится в соответствующий индекс для корректного и правильного поиска публикаций.

О каком положении идет речь? В xfields записывается "доп поле|значение", именно так я прописал для поиска именно по доп полю, если он в ссылке есть, но нет именно в базе в той самой таблице куда записываются значения перекрестных ссылок для поиска в дальнейшем.

Поделиться сообщением


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

Так вот, только из сообщений пользователей на форуме я понял, как формируется эта ссылка. А в документации этого нет. (Просто возьмите на заметку, как разработчик, ибо не я один на это внимание обратил).

Что вы ищите в документации? Я вам выше написал что это не вручную генерируемая ссылка, ее делает DLE автоматически. Поэтому и в документации про нее ничего нет, и быть не может. А в теме что вы дали сейчас ссылку, речь идет о совершенно другом. Вы путаете теги DLE c ссылками URL. Это совершенно разные вещи. В вы все смешали в одну кучу.

 

В 09.09.2017 в 19:02, ks95 сказал:

Офтоп, дополнительный вопрос.

При отключённом ЧПУ можно ли использовать для указания категорий ссылку типа website.com/soft/ вместо положенной website.com/?do=cat&category=soft ? У меня ЧПУ выключено, но вариант типа website.com/soft/ почему-то тоже работает.

Можно если присутствует файл .haccess в корне сайта. Чтобы полностью отключить ЧПУ от поддержки скриптом, необходимо удалить файл .htaccess в корне вашего сайта.

  • Поддерживаю 1

Поделиться сообщением


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

Спасибо.

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас