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

Как вывести блок через custom, чтобы он брал данные из dle_xfsearch?


     05.06.2024    dle_xfsearch, custom    Все вопросы » Общие вопросы по вёрстке    102

вопрос
Блок на сайте выводится через

{custom xfields="cikl|[xfvalue_cikl limit="70"]"}

В таком виде он берет данные из таблицы dle_post. Как сделать что бы он брал их из dle_xfsearch?

Это запрос при переходе по гиперссылке из доп поля. Выполняется быстро.

[ SELECT p.id, p.autor, p.date, p.short_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p INNER JOIN dle_xfsearch xf on (xf.news_id=p.id) LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE xf.tagname = 'cikl' AND xf.tagvalue='Третья Мировая война' AND p.approve=1 ORDER BY date DESC LIMIT 0,27 ]

А это {custom xfields="cikl|[xfvalue_cikl limit="70"]"}, выполняется медленно.

[ SELECT p.id, p.date, p.short_story, p.xfields, p.title, p.category, p.tags, e.allow_rate, e.rating, e.vote_num FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE (p.xfields LIKE '%cikl|I.M.M.O.R.T.A.L.%') AND approve=1 ORDER BY title ASC LIMIT 0,200 ]

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

Ответа пока нет


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

chelovek42
Юзер

chelovek42 - 5 июня 2024 17:20 -

Или так. Есть вот такой код, он выдает кол-во новостей с одинаковым допполем, как сделать что бы он выдавал не кол-во а id всех этих новостей через запятую?

<?php
/**
* Подсчет данных по дополнительным полям
*
* @link https://lazydev.pro/
* @author LazyDev <email@lazydev.pro>
**/

defined('DATALIFEENGINE') || die('go your way stalker');

$action = strip_tags(stripslashes(trim($action)));

$xfield = $db->safesql(strip_tags(stripslashes(trim($xfield))));
$value = $value ? $db->safesql(strip_tags(stripslashes(trim($value)))) : false;

if ($action == 'news') {
if (!$value) {
return;
}

$cache_count_xfield = dle_cache('news_count_xfield', $config['skin'] . $xfield . $value);
if ($cache_count_xfield) {
echo $cache_count_xfield;
} else {
$thisdate = date('Y-m-d H:i:s', time());
if ($config['no_date'] AND !$config['news_future']) {
$where_date = " AND date < '" . $thisdate . "'";
} else {
$where_date = '';
}

$xfArray = xfieldsload();
$ourXf = array_filter($xfArray, function($item) use ($xfield) {
return $item[0] == $xfield && $item[6] == 1;
});

if ($ourXf) {
$count = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_xfsearch LEFT JOIN " . PREFIX . "_post ON(" . PREFIX . "_xfsearch.news_id=" . PREFIX . "_post.id) WHERE tagname='{$xfield}' AND tagvalue='{$value}' AND approve='1'" . $where_date);
} else {
$count = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(xfields, '{$xfield}|', -1), '||', 1) LIKE '%{$value}%' AND SUBSTRING_INDEX(SUBSTRING_INDEX(xfields, '{$xfield}|', -1), '||', 1) NOT LIKE '%|%' AND approve='1'" . $where_date);
}
echo $count['count'];
create_cache('news_count_xfield', $count['count'], $config['skin'] . $xfield . $value);
}
} elseif ($action == 'galery' || $action == 'text') {
global $row;
if ($dle_module == 'showfull') {
if (!is_array($row) && intval($_GET['newsid']) > 0) {
$id = intval($_GET['newsid']);
$xf = $db->super_query("SELECT xfields FROM " . PREFIX . "_post WHERE id='{$id}'");
$xf = $xf['xfields'];
} else {
$xf = $row['xfields'];
$xf = xfieldsdataload($xf);
$xf = stripslashes($xf[$xfield]);
}
} else {
$xf = stripslashes($xf);
}

$count = 0;

if ($xf != '') {
if ($action == 'galery') {
$count = explode(',', $xf);
$count = count($count);
} elseif ($action == 'text') {
$count = dle_strlen($xf, $config['charset']);
}
}

echo $count;
}

chelovek42
Юзер

chelovek42 - 6 июня 2024 04:59 -

Скрип допилил, теперь не работает связка

{custom id="{include file="engine/modules/countXfield.php?action=news&xfield=cikl&value=[xfvalue_cikl]"}" template="shortstory3" order="title" sort="asc" limit="200" cache="yes"}

Не инклудит в custom, это вообще возможно?

chelovek42
Юзер

chelovek42 - 6 июня 2024 05:18 -

Так тоже не получилось

{custom id="{include file='engine/modules/countXfield.php?action=news&xfield=cikl&value=[xfvalue_cikl]'}" template="shortstory3" order="title" sort="asc" limit="200" cache="yes"}

chelovek42
Юзер

chelovek42 - 6 июня 2024 12:36 -

при такой конструкции

{custom id="{include file='engine/modules/countXfield.php?action=news&xfield=cikl&value=[xfvalue_cikl]'}" template="shortstory3" order="title" sort="asc" limit="200" cache="yes"}

отдает

" template="shortstory3" order="title" sort="asc" limit="200" cache="yes"}

Почему он принимает первый } как закрывающий для {custom а не для {include file

chelovek42
Юзер

chelovek42 - 6 июня 2024 20:20 -

Админ, удали эту новость. Оказалось Это полная чушь. Я нормально вопрос создам.

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

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

наверх