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

Вывод доп. поля с limit, DLE 9.6


     07.12.2012    Общие вопросы    2963

вопрос
В DLE 9.7 появился тег [xfvalue_X limit="X2"], но как вывести информацию в краткой новости из доп. поля с ограниченным количеством символов на DLE 9.6 ?

Ответил: BR0kEN


В show.short.php найти две закомментированные строки:
// Обработка дополнительных полей

и между ними заменить код:
        if( $xfound ) {
            $xfieldsdata = xfieldsdataload( $row['xfields'] );
            
            foreach ( $xfields as $value ) {
                $preg_safe_name = preg_quote( $value[0], "'" );

                if ( $value[6] AND !empty( $xfieldsdata[$value[0]] ) ) {
                    $temp_array = explode( ",", $xfieldsdata[$value[0]] );
                    $value3 = array();

                    foreach ($temp_array as $value2) {

                        $value2 = trim($value2);
                        $value2 = str_replace("'", "'", $value2);

                        if( $config['allow_alt_url'] == "yes" ) $value3[] = "" . $value2 . "";
                        else $value3[] = "" . $value2 . "";
                    }

                    $xfieldsdata[$value[0]] = implode(", ", $value3);

                    unset($temp_array);
                    unset($value2);
                    unset($value3);

                }
        
                if( empty( $xfieldsdata[$value[0]] ) ) {
                    $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[/xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                } else {
                    $tpl->copy_template = preg_replace( "'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[xfgiven_{$value[0]}]", "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( "[/xfgiven_{$value[0]}]", "", $tpl->copy_template );
                }
                
                $xfieldsdata[$value[0]] = stripslashes( $xfieldsdata[$value[0]] );

                if ( preg_match( "#\\[xfvalue_{$preg_safe_name} limit=['\"](.+?)['\"]\\]#i", $tpl->copy_template, $matches ) ) {
                    $count= intval($matches[1]);
        
                    $xfieldsdata[$value[0]] = str_replace( "", " ", $xfieldsdata[$value[0]] );
                    $xfieldsdata[$value[0]] = strip_tags( $xfieldsdata[$value[0]], "" );
                    $xfieldsdata[$value[0]] = trim(str_replace( "", " ", str_replace( "", " ", str_replace( "\n", " ", str_replace( "\r", "", $xfieldsdata[$value[0]] ) ) ) ));
        
                    if( $count AND dle_strlen( $xfieldsdata[$value[0]], $config['charset'] ) > $count ) {
                            
                        $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $count, $config['charset'] );
                            
                        if( ($temp_dmax = dle_strrpos( $xfieldsdata[$value[0]], ' ', $config['charset'] )) ) $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $temp_dmax, $config['charset'] );
                        
                    }
        
                    $tpl->set( $matches[0], $xfieldsdata[$value[0]] );
        
                } else    $tpl->copy_template = str_replace( "[xfvalue_{$value[0]}]", $xfieldsdata[$value[0]], $tpl->copy_template );



            }
        }

И использовать в шаблоне нужный тег: [xfvalue_x limit=""]

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

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 7 декабря 2012 21:33 - Админ

width: 150px;
height: 20px;
overflow: hidden;

Каков вопрос - таков и ответ. Просто помните об этом.

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

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