Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Допполе как перекрестные гиперссылки

Допполе как перекрестные гиперссылки


     05.04.2014    дополнительные поля, перекрестные гиперссылки    Все вопросы » Общие вопросы    3182

вопрос
Есть допполе "Год выхода", значения этого допполя используются как перекрестные гиперссылки. И получается, что при переходе по ссылке http://мойсайт/xfsearch/2014/ выводятся не только новости, в которых значения допполя "Год выхода" 2014, а и проскакивают новости с годом 2013, 2012... (не все, только некоторые). Почему нет жесткого отбора по году? Где копать, что бы заставить движок выводить только 100% совпадения допполя?

Ответил: rocksmart


Engine.php

Попробуй так
elseif ($do == 'xfsearch') {

// Определение искомого слова число или текст
            $assearch = (intval($xf)) ? "xfields regexp '[[:<:]](" . $xf . ")[[:>:]]'" : "xfields LIKE '%{$xf}%'";
            
            //Старый запрос
            /* $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_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}{$assearch} AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

8 комментариев

G-3p
Юзер

G-3p - 5 апреля 2014 16:29 -

Возможно где-то в содержании этих новостей есть число 2014.

morefilms
Юзер

morefilms - 5 апреля 2014 17:12 -

Цитата: G-3p
G-3p

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

vitnet
PHP-developer

vitnet - 5 апреля 2014 17:42 -

Вот пример, для теста можете изменить год в ссылке.

Жаль, что нельзя конкретно по доп. полю "Год выхода" выводить новости, т.е. не искать во всем содержании новости совпадений

Вы хоть раз смотрели как происходит выбор?
$sql_select = "SELECT SQL_CALC_FOUND_ROWS ... 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" ...;
Как видите поиск происходит в xfields LIKE '%{$xf}%'

morefilms
Юзер

morefilms - 6 апреля 2014 22:08 -

Цитата: vitnet
Как видите поиск происходит в xfields LIKE '%{$xf}%'

Что нужно прописать, что бы выбор в xfields не производился в полной новости, только в краткой?

vitnet
PHP-developer

vitnet - 6 апреля 2014 22:13 -

Здесь нет определенного места (полной / краткой), поиск происходит в общей колонке xfields принадлежащий новости

Gopr
Юзер

Gopr - 5 апреля 2014 16:44 -

Это кривизна dle не знаю почему, но короткие перекрестные гиперссылки на подобии 2, 20, 201, 2014 работают плохо. Из-за этого невозможно нормально указывать цены, даты, возраст...

В вашем случае проблема должна пропасть если в поле "Год выхода" указывать не "2014", а "2014 год", но это будет не то в плане оформления. Символов в поле должно быть точно больше 4х, вот только на сколько хз :)

morefilms
Юзер

morefilms - 5 апреля 2014 17:40 -

Нуда, есть такое, что HDTVRip будет выводиться и со значением TVRip или HDTV, потому что есть совпадение, но как заставить искать только среди значений данного допполя, а не везде...

Kane
Юзер

Kane - 5 апреля 2014 17:10 -

Не используйте эти убогие длешные доп. поля, воспользуйтесь хаком "дополнительные поля от d0gmatist" и будет вам счастье

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 18.10.2014 mixa920808  Общие вопросы
наверх