Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как вывести полный URL доп. поля (перекрестной ссылки)?

Как вывести полный URL доп. поля (перекрестной ссылки)?


     17.03.2021    доп поле, дополнительные поля    Все вопросы » Хаки    1390

вопрос
Привет. Есть код


<?php
include ('engine/api/api.class.php'); // подключаем api
$table = 'dle_post';  // название таблицы
$fields  = 'xfields'; // нужные поля, * - все поля
$where = 'approve=1'; // условия выборки
$multirow = 1; // забирать ли один ряд или несколько
$start = 0; // начальное значение выборки
$limit = 0; // количество записей для выборки, 0 - выбрать все
$xfield = 'fotomodel'; ///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА
$time = '14000'; //время жизни кеша

$xfields = $dle_api->load_from_cache ($fields, $time, $xfields); //берем наш кеш, если есть конечно ))
if( !$xfields ) { //проверяем взяли ли мы кеш и если не взяли, то делаем запрос
    $xfields = $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit); //делаем запрос к бд
	sort($xfields); // Cортируем по алфавиту
    $dle_api->save_to_cache ( xfields, $xfields); //сохраняем в кеш
    }

$stack = array(); //создаем пустой массив
foreach($xfields as $value){  // перебор значений массива

    if($value[xfields]){ //проверяем есть ли элемент в массиве
	

        $row = xfieldsdataload($value[xfields]); //получаем нужное нам доп поле
        if($row[$xfield]){ //проверяем есть ли значение
       
            $rowdata = explode( ",", $row[$xfield]); //разбиваем наше значение на массив
            foreach($rowdata as $value){    //перебираем значения массива
                if($value){                    //проверяем есть ли значение
                    $value = trim($value);    //убираем пробелы
                    array_push($stack, $value); //добавляем в конец массива полученное значение
                    }
                }
            }
        }
    }
$stack = array_count_values($stack); //считаем повторы и избавляемся от повторных значений
foreach($stack as $key => $count){  //выводим окончательный вариант

    echo "<a href=/xfsearch/";  //открываем ссылку
    echo $key; //подставляем значение для поиска
    echo ">";
    echo $key."(".$count.")"; //имя ссылки и кол-во повторов
    echo "</a><br/>"; //закрываем ссылку
}


Он вывод все доп. поля ссылками на отдельной странице.
Вид каждой получается не такой как нужно
Генерируется
site.com/xfsearch/Dani
А в оригинале он
site.com/xfsearch/fotomodel/Dani%20J/

Собственно вопрос в том как вывести нормальную ссылку) которая показывается и в полной новости

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


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

dj-avtosh
PHP-developer

dj-avtosh - 18 марта 2021 15:47 -

foreach($stack as $key => $count){  //выводим окончательный вариант

    echo "<a href=/xfsearch/" . $xfield . "/";  //открываем ссылку
    echo $key; //подставляем значение для поиска
    echo ">";
    echo $key."(".$count.")"; //имя ссылки и кол-во повторов
    echo "</a><br/>"; //закрываем ссылку
}

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

sosok167
Юзер

sosok167 - 18 марта 2021 16:17 -

Ссылка все равно выводится на полная, если доп. поле состоит из двух частей, то выводится только 1 часть
Например:
должно быть site.com/xfsearch/fotomodel/Dani%20J/
а выводится site.com/xfsearch/fotomodel/Dani/

dj-avtosh
PHP-developer

dj-avtosh - 18 марта 2021 16:23 -

foreach($stack as $key => $count){  //выводим окончательный вариант

    echo "<a href=/xfsearch/" . $xfield . "/";  //открываем ссылку
    echo rawurlencode($key); //подставляем значение для поиска
    echo ">";
    echo $key."(".$count.")"; //имя ссылки и кол-во повторов
    echo "</a><br/>"; //закрываем ссылку
}

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

sosok167
Юзер

sosok167 - 18 марта 2021 16:21 -

Мне тут посоветовали вот такое:

Значение доп поля обернуть в

str_replace(array("&#039;", "&quot;", "&amp;", "&#123;", "&#91;", "&#58;"), array("'", '"', "&", "{", "[", ":"), $pole);

а затем вывести вот так

rawurlencode( $pole )

pole заменить на своё



Но я не понял куда это все вписывать( кто знает, может готовый вариант уже скинет

dj-avtosh
PHP-developer

dj-avtosh - 18 марта 2021 16:24 -

ну пусть до конца посоветуют - ответ приведен выше.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

sosok167
Юзер

sosok167 - 18 марта 2021 16:26 -

дальше не захотел советовать( по этому и обращаюсь за помощью на этом сайте.

dj-avtosh
PHP-developer

dj-avtosh - 18 марта 2021 16:28 -

я вам дал второй ответ, тоже не работает?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

sosok167
Юзер

sosok167 - 18 марта 2021 16:30 -

О, извиняюсь) не заметил) Работает! Спасибо за помощь!)

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

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

наверх