Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru Стол заказов Модуль лента рекомендуемых новостей

Модуль лента рекомендуемых новостей


 xtremal29    21.09.2011    Стол заказов    2604    6

Здравствуйте! Я купил модуль "Лента рекомендуемых новостей", там выводится картинка в ленту из новости. Нужно сделать что бы модуль брал картинку с дополнительного поля.

код модуля
Внимание! У вас нет прав для просмотра скрытого текста.

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

MozgFx
1

39 | 23

MozgFx - 21 сентября 2011 21:03 - Юзер

Это возможно если Вы хорошо программируете на PHP.
Так же можно влезть в код движка и подсмотреть как реализован механизм Вывода доп полей.
Могу сказать что все доп поля хранятся в одном столбце с именем "xfields" в следующем формате:
если поле 1 то:
названиеполя1|значениеполя1
если поля два то
названиеполя1|значениеполя1||названиеполя2|значениеполя2

MozgFx
1

39 | 23

MozgFx - 21 сентября 2011 21:07 - Юзер

____
Когда я писал про столбец, то имелось ввиду база данных в частности:
[ваш префикс]_post - та таблица в которой хранятся новости

В частности для доработки вам понадобятся файлы:
/engine/modules/show.full.php
/engine/modules/show.short.php
Там как раз можно подглядеть как реализовано обращение к базе и выборка конкретных значений.
Но так же хочу заметить чтобы Ваше модуль работал то доп поля должны быть у всех новостей, а иначе будут одни сплошные заглушки.

MozgFx
1

39 | 23

MozgFx - 21 сентября 2011 21:25 - Юзер

Вот текст структуры обращений к дополнительным полям.
чтобы не лезть в код я написал прямо сюда:
if( strpos( $tpl->copy_template, "[xfvalue_" ) !== false ) {
            
            $xfieldsdata = xfieldsdataload( $row['xfields'] );
            
            foreach ( $xfields as $value ) {
                $preg_safe_name = preg_quote( $value[0], "'" );
                
                if( empty( $xfieldsdata[$value[0]] ) ) {
                    $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                } else {
                    $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "\\1", $tpl->copy_template );
                }
                
                $tpl->copy_template = str_replace( "[xfvalue_{$preg_safe_name}]", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
            }
        }

xtremal29
1

14 | 11

xtremal29 - 21 сентября 2011 21:30 - Юзер

Спасибо за ответ smile но я плохо разбираюсь в php.

https://dle-faq.ru/faq/phpquest/418-kartinka-iz-dop-polya-modulya-lenta-rekomentduemyh-novostey.html

rashpil
33

232 | 182

rashpil - 22 сентября 2011 16:14 - Эксперт

Высер кода это хорошо, но здесь он не к чему. Ну или в таком его проявлении точно :)

Я хоть и не гуру в php, но синтаксис и принципы работы мне известны, в следствии чего как решение предлогаю вот такой вариант http://paste.pro/5132272 . Этот вариант будет создавать уменьшенные копии первой картинки которую он поймает в доп полях. От лишних действий не стал избавлять код, т.к. лениво.

Если будет работать, буду рад полтинику на R271354629291

xtremal29
1

14 | 11

xtremal29 - 22 сентября 2011 22:39 - Юзер

Спасибо!!! Теперь все работает отлично! деньгу отправил smile

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