Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Вывод списка студий из доп поля в меню?

Вывод списка студий из доп поля в меню?


     13.01.2015    Общие вопросы по PHP, Модули, Хаки    1559

вопрос
Мне нужно сделать автоматический вывод в меню из дополнительных полей.
То есть в новости есть доп. поле с названием авторы - которое сделано как перекрестные гиперссылки.
Есть меню "Авторы", чтобы человек быстро нашел подходящего.
Вручную забивать долго.
Вот и нужно чтобы меню "Авторы" автоматически пополнялось ссылками из доп поля в новостях.

Ответил: serg91100


<?php
/*
вывод списка введенных значений любого дополнительного поля
автор: ravchik
*/

if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }

$xflist = dle_cache( $xfname, $config['skin'] );
if(!$xflist) {
    $sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE approve=1" );
    while ( $rows = $db->get_row( $sql_result ) ) {
        $xfields[] = $rows;
    }    
    $stack = array();
    foreach($xfields as $value){
        if($value[xfields]){
            $row = xfieldsdataload($value[xfields]);
            if($row[$xfname]){
                $rowdata = explode( "~", $row[$xfname]);
                foreach($rowdata as $value){
                    if($value){
                        $value = trim($value);
                        array_unshift($stack, $value);
                    }
                }
            }
        }
    }
    $stack = array_unique($stack);
    sort ($stack);    
    foreach( $stack as $value ){
        $xflist .= "<li><a href='/xfsearch/" . $value . "'>" . $value . "</a></li>\n";
    }
    create_cache( $xfname, $xflist, $config['skin'] );
}
echo "<ul>" . $xflist . "</ul>";

Комментарии пользователей (10)

Twelvee
15

124 | 25

Twelvee - 13 января 2015 12:36 - Юзер

Реализовать возможно, но это в стол заказов

serg91100
3

242 | 37

serg91100 - 13 января 2015 12:57 - Юзер

Почему же?
<?php
/*
вывод списка введенных значений любого дополнительного поля
автор: ravchik
*/

if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }

$xflist = dle_cache( $xfname, $config['skin'] );
if(!$xflist) {
    $sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE approve=1" );
    while ( $rows = $db->get_row( $sql_result ) ) {
        $xfields[] = $rows;
    }    
    $stack = array();
    foreach($xfields as $value){
        if($value[xfields]){
            $row = xfieldsdataload($value[xfields]);
            if($row[$xfname]){
                $rowdata = explode( "~", $row[$xfname]);
                foreach($rowdata as $value){
                    if($value){
                        $value = trim($value);
                        array_unshift($stack, $value);
                    }
                }
            }
        }
    }
    $stack = array_unique($stack);
    sort ($stack);    
    foreach( $stack as $value ){
        $xflist .= "<li><a href='/xfsearch/" . $value . "'>" . $value . "</a></li>\n";
    }
    create_cache( $xfname, $xflist, $config['skin'] );
}
echo "<ul>" . $xflist . "</ul>";

Да, вот проблема. Выводит он в список через запятую, а мне нужно, чтобы выводил каждого введеннго автора с новой строки и со своей ссылкой:
Автор
Автор
Автор

ravchik
66

375 | 123

ravchik - 13 января 2015 13:08 - Юзер

В каком смысле через запятую? Этот скрипт выводит каждое уникальное значение допполя на новой строчке (<li>...</li>).
Возможно у вас в допполе данные введены таким образом (через запятую)? Тогда попробуйте заменить
$rowdata = explode( "~", $row[$xfname]);
на
$rowdata = explode( ",", $row[$xfname]);

serg91100
3

242 | 37

serg91100 - 13 января 2015 13:20 - Юзер

О, просто прекрасно. Большое спасибо и еще маленький вопрос, есть возможность вывода в алфавитном порядке?

ravchik
66

375 | 123

ravchik - 13 января 2015 14:38 - Юзер

попробуйте заменить
sort ($stack);
на
asort ($stack);

serg91100
3

242 | 37

serg91100 - 13 января 2015 15:53 - Юзер

Заменил. А года можно отфильтровать по убыванию? Сейчас 2012, 2013 и т.д.

FastFud
50

1599 | 588

FastFud - 13 января 2015 16:16 - Юзер

arsort ($stack);

serg91100
3

242 | 37

serg91100 - 13 января 2015 16:28 - Юзер

Делал, нуль внимания

FastFud
50

1599 | 588

FastFud - 13 января 2015 16:34 - Юзер

Кэш чистили ?

serg91100
3

242 | 37

serg91100 - 14 января 2015 09:19 - Юзер

Да, чистил. Слова идут по алфавиту, но с годами проблема.

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

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