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

Тема в разделе "DLE", создана пользователем coka1n, 23 мар 2013.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. coka1n

    coka1n Создатель

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

    [​IMG]

    Как ее побороть,может кто нибудь подскажет?
    в этом файле на 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" не помогло.

    Это модуль слайдера паблик шаблона - http://www.dle9.com/besplatnye/shabloni/2544-kino-shablony-dle-mstarter-97-96-kr
    asivyy-onlayn-kinoteatr.html
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.034
    В ДЛЕ 9.8 таблица с новостями была разделена на 2: dle_post и dle_post_extras. Так вот параметр news_read перекочевал именно в dle_post_extras... Так что модуль работать на ДЛЕ 9.8 не может, нужно править код и делать запрос через INNER JOIN.
     
  3. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    439
    Симпатии:
    96
    В качестве временной меры, можно поменять запрос:
    Код:
    $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.
     
    fail.uz нравится это.
  4. coka1n

    coka1n Создатель

    Регистр.:
    20 июл 2012
    Сообщения:
    10
    Симпатии:
    1
    Если в 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 и слайдер заработал.Но дело в том что ссылка на фильм идет такого типа с него - http://site.ru/2012/03/19/novosti.html а по идеи должна быть такой - http://site.ru/kategory1/kategory2/novosti.html То что я удалил эту строчку могло повлиять на ссылку полной новости?

    И еще сайт стал грузиться очень долго даже на локалке.Отключил пока модуль.
     
  5. Demon425

    Demon425

    Регистр.:
    9 июл 2008
    Сообщения:
    439
    Симпатии:
    96
    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.
     
    fail.uz нравится это.
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.034
    Demon425, ты сейчас пытаешься объяснить сложные запросы человеку, который не знает и простых... Понимаю твоё рвение, но это бесполезно =)

    null.com, я сейчас спать. Проснусь - перепишу для тебя этот модуль... А вообще, слайдеры надо делать на теге {custom} и шаблонах, а не сторонними модулями...
     
    Demon425 и Forza.Baron нравится это.
  7. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.034
    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 под слайдер.
     
Статус темы:
Закрыта.