• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Не работает модуль (нужно адаптировать)

Статус
В этой теме нельзя размещать новые ответы.

coka1n

Создатель
Регистрация
20 Июл 2012
Сообщения
10
Реакции
1
Есть слайдер,крутятся постеры на главной,он работает на dle 9.5, если включать его на 9.8 версии то выдается такая ошибка:

1363938502-clip-7kb.png


Как ее побороть,может кто нибудь подскажет?
в этом файле на 27 строчке прописанно вот что:

Код:
$sql = $db->query( "SELECT id, title, date, alt_name, comm_num, news_read, category, xfields, autor, flag FROM " . PREFIX . "_post WHERE approve=1 ORDER BY news_read DESC  LIMIT 0,20" );
Сразу скажу что пробовал удалять "news_read" не помогло.

Это модуль слайдера паблик шаблона - Для просмотра ссылки Войди или Зарегистрируйся
asivyy-onlayn-kinoteatr.html
 
В ДЛЕ 9.8 таблица с новостями была разделена на 2: dle_post и dle_post_extras. Так вот параметр news_read перекочевал именно в dle_post_extras... Так что модуль работать на ДЛЕ 9.8 не может, нужно править код и делать запрос через INNER JOIN.
 
В качестве временной меры, можно поменять запрос:
Код:
$sql = $db->query( "SELECT id, title, date, alt_name, comm_num, category, xfields, autor, flag FROM " . PREFIX . "_post WHERE approve=1 LIMIT 0,20" );
И далее по контексту закомментировать участки, в которых "news_read". Последствия? Не будет выводится количество просмотров.

Относительно INNER JOIN.

Код:
$sql = $db->query( "SELECT * FROM " . PREFIX . "_post JOIN dle_post_extras ON dle_post.id=dle_post_extras.id WHERE approve=1 ORDER BY news_read DESC LIMIT 0,20" );

Примерно так, только в секции dle_post.id=dle_post_extras.id нужно проверить ключи по которым идёт связывание таблиц. Для лучшего понимания алгоритм:

Таблица1.ID = Таблица2.ID2

К сожалению, под руками нет 9.8, не могу сказать какие ключи в dle_post_extras, но скорее всего тот же id.
 
В качестве временной меры, можно поменять запрос:
Код:
$sql = $db->query( "SELECT id, title, date, alt_name, comm_num, category, xfields, autor, flag FROM " . PREFIX . "_post WHERE approve=1 LIMIT 0,20" );
И далее по контексту закомментировать участки, в которых "news_read". Последствия? Не будет выводится количество просмотров.

Относительно INNER JOIN.

Код:
$sql = $db->query( "SELECT * FROM " . PREFIX . "_post JOIN dle_post_extras ON dle_post.id=dle_post_extras.id WHERE approve=1 ORDER BY news_read DESC LIMIT 0,20" );

Примерно так, только в секции dle_post.id=dle_post_extras.id нужно проверить ключи по которым идёт связывание таблиц. Для лучшего понимания алгоритм:

Таблица1.ID = Таблица2.ID2

К сожалению, под руками нет 9.8, не могу сказать какие ключи в dle_post_extras, но скорее всего тот же id.

Если в php и css еще что то есть то бд для меня темный лес.Вобщем удалил всю строчку и вставил эту:

Код:
$sql = $db->query( "SELECT * FROM " . PREFIX . "_post JOIN dle_post_extras ON dle_post.id=dle_post_extras.id WHERE approve=1 ORDER BY news_read DESC LIMIT 0,20" );

Тк, я не чего не понял из слов: "Примерно так, только в секции dle_post.id=dle_post_extras.id нужно проверить ключи по которым идёт связывание таблиц." Тк не шарю в этом,то просто удалил dle_post_extras.id и слайдер заработал.Но дело в том что ссылка на фильм идет такого типа с него - Для просмотра ссылки Войди или Зарегистрируйся а по идеи должна быть такой - Для просмотра ссылки Войди или Зарегистрируйся То что я удалил эту строчку могло повлиять на ссылку полной новости?

И еще сайт стал грузиться очень долго даже на локалке.Отключил пока модуль.
 
dle_post_extras.id удалять нельзя, т.к. он отвечает за связывание таблиц, а точнее ячеек.

Ещё раз объясняю принцип dle_post.id=dle_post_extras.id:

1) есть таблица dle_post, у неё столбец id это primary key, т.е. ключ, который нигде не дублируется
2) вторая таблица dle_post_extras, у неё тоже есть столбец primary key, вот нужно узнать его название

dle_post.id=dle_post_extras.id означает, что к первой таблице dle_post нужно добавить таблицу dle_post_extras в тех местах, где ID первой таблицы соответствуют значения со второй по ID. Какой ID у второй таблицы я не знаю, это предстоит узнать вам. Достаточно открыть таблицу dle_post_extras и посмотреть название primary key.
 
Demon425, ты сейчас пытаешься объяснить сложные запросы человеку, который не знает и простых... Понимаю твоё рвение, но это бесполезно =)

null.com, я сейчас спать. Проснусь - перепишу для тебя этот модуль... А вообще, слайдеры надо делать на теге {custom} и шаблонах, а не сторонними модулями...
 
51 строка, удалить:
PHP:
if( $row['flag'] and $config['seo_type'] ) {
Заменить на:
PHP:
if($config['seo_type'] ) {
flag - не помню за что отвечал, но более не используется.
Запрос в базу будет такой:
PHP:
$sql = $db->query( "SELECT `p`.`id`, `p`.`title`, `p`.`date`, `p`.`alt_name`, `p`.`comm_num`, `e`.`news_read`, `p`.`category`, `p`.`xfields`, `p`.`autor`,  FROM `" . PREFIX . "_post` AS `p` INNER JOIN `" . PREFIX . "_post_extras` AS `e` ON `p`.`id` = `e`.`news_id` WHERE approve=1 ORDER BY news_read DESC  LIMIT 0,20" );

Альтернатива на custom:
HTML:
{custom limit="10" template="custom" order="reads" cache="yes"}
Останется только сделать шаблон custom.tpl под слайдер.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху