DLE xfsearch ilave alan adı / değeri aramasındaki hata | Atari Kaseti | Güncel Oyun ve Oyuncu Platformu

DLE xfsearch ilave alan adı / değeri aramasındaki hata

Parodo

New member
Ara 8, 2018
21
1
1
Kayseri
#1
Yeni sürümlerde xfsearch/year/2017 şeklinde arama yapısı destekleniyor. Fakat bunun için xfsearch tablosuna bakılıyor veritabanından.
Eğer o tabloda veri yoksa ve gelinen URL xfsearch/year/2017 veya xfsearch/2017 da olsa sorguda yalnızca 2017 aratılıyor.
Ayrıca admin panelden konuları topluca güncelleyince bile bu durum değişmiyor. Yani eksik veriler tamamlanmıyor. Veritabanındaki xfsearch tablosunda ilave alan adı, ilave alana girilen değer ve makale id si tutuluyor.
Aşağıdaki düzenleme ile şunu sağlamış olacaksınız: Eğer ilave alan adı/değeri şeklinde bir URL girildiyse, o tabloda olmasa dahi SQL'de o şekilde aratılması.

Dosya: engine/engine.php
Bul:
PHP:
$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'];
İle Değiştir:


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


PHP:
{$xf}
yerine


PHP:
{$xfname}|{$xf}
olması.