Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Модуль сиквелы и приквелы фильма

Тема в разделе "Модули DLE", создана пользователем TacTics, 10 июл 2022.

10.07.22 в 09:37
08.04.25 в 23:18
29
5.032
1
  1. reanimator692

    reanimator692 Зелёный

    Регистрация:
    16 апр 2018
    Сообщения:
    10
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Загрузил плагин на тестовый DLE 14, открыл его и скопировал код на DLE 12.1. Прекрасно работает! :)
    [sequels]Обворачиваем весь блок [/sequels]
    Доп.поле - Одна строка,Использовать при желании (можно оставить поле пуcтым).
    Блок будет выводится если что то будет найдено. Иначе будет спрятан.
    Сколько выводить добавляем -лимит. Пример:
    {custom sequels="[xfvalue_sequels]" template="sequels" limit="5" cache="yes"}
     
    #21 reanimator692, 23 сен 2023
    Последнее редактирование: 23 сен 2023
  2. ok_daa

    ok_daa Бывалый

    Регистрация:
    24 мар 2023
    Сообщения:
    256
    Лучших ответов:
    0
    Рейтинги:
    +42 / 14 / -0
    Нашел мод, работает на 17.2
    Мод от MrDeath
     

    Вложения:

    • Нравится Нравится x 2
  3. Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    635
    Лучших ответов:
    2
    Рейтинги:
    +81 / 19 / -0
    Работает и на 17.3
    Только иногда ошибка возникает, при переходе в полную новость, пока не разобрался от чего, возможно конфликт с каким-то плагином возникает.
     
  4. ok_daa

    ok_daa Бывалый

    Регистрация:
    24 мар 2023
    Сообщения:
    256
    Лучших ответов:
    0
    Рейтинги:
    +42 / 14 / -0
    Его нужно немного переписать, там если ответ приходит null то возникает ошибка
     
  5. Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    635
    Лучших ответов:
    2
    Рейтинги:
    +81 / 19 / -0
    Ага, вот изза этого null и возникает ошибка, но не каждый раз. И если повторно заходишь на новость или, если после отображения ошибки, обновляешь страницу, то уже все норм. Еще бы кто подсказал, в какую сторону копать)))
     
  6. ok_daa

    ok_daa Бывалый

    Регистрация:
    24 мар 2023
    Сообщения:
    256
    Лучших ответов:
    0
    Рейтинги:
    +42 / 14 / -0
    Если не забуду, часика через 3 скину

    Только так с телефона могу...
    <?xml version="1.0" encoding="utf-8"?>
    <dleplugin>
    <name>Сиквелы и приквелы фильма</name>
    <description>Модификация на заказ</description>
    <icon></icon>
    <version></version>
    <dleversion></dleversion>
    <versioncompare>==</versioncompare>
    <upgradeurl></upgradeurl>
    <filedelete>0</filedelete>
    <needplugin></needplugin>
    <mnotice>0</mnotice>
    <mysqlinstall><![CDATA[ALTER TABLE `{prefix}_post` ADD `god` int(11) unsigned NOT NULL DEFAULT '0';]]></mysqlinstall>
    <mysqlupgrade><![CDATA[]]></mysqlupgrade>
    <mysqlenable><![CDATA[]]></mysqlenable>
    <mysqldisable><![CDATA[]]></mysqldisable>
    <mysqldelete><![CDATA[ALTER TABLE `{prefix}_post` DROP `god`;]]></mysqldelete>
    <phpinstall><![CDATA[]]></phpinstall>
    <phpupgrade><![CDATA[]]></phpupgrade>
    <phpenable><![CDATA[]]></phpenable>
    <phpdisable><![CDATA[]]></phpdisable>
    <phpdelete><![CDATA[]]></phpdelete>
    <notice><![CDATA[]]></notice>
    <file name="engine/modules/show.full.php">
    <operation action="after">
    <searchcode><![CDATA[$tpl->set( '{full-story}', $row['full_story'] );]]></searchcode>
    <replacecode><![CDATA[//настройки
    $kinopoisk_xf = 'kinopoisk_id';
    $x_api_key = 'ваш_апи_ключ';
    //настройки

    $this_kp_id = $xfieldsdata[$kinopoisk_xf];

    if ( $xfieldsdata[$kinopoisk_xf] && !$xfieldsdata['sequels'] ) {

    $xffieldsdata = xfieldsdataload( $row['xfields'] );

    $kp_api = kinopoiskapiunofficial("https://kinopoiskapiunofficial.tech/api/v2.1/films/".$xfieldsdata[$kinopoisk_xf]."/sequels_and_prequels", $x_api_key);
    $movies_id = [];

    if ( $kp_api ) {
    foreach ( $kp_api as $kp_movie ) {
    if ( $kp_movie['filmId'] ) {
    $kp_movie_api = kinopoiskapiunofficial("https://kinopoiskapiunofficial.tech/api/v2.2/films/".$kp_movie['filmId'], $x_api_key);
    if ( $kp_movie_api['year'] ) $movies_id[$kp_movie['filmId']] = $kp_movie_api['year'];
    unset($kp_movie_api);
    }
    }
    $kp_movie_api = kinopoiskapiunofficial("https://kinopoiskapiunofficial.tech/api/v2.2/films/".$xfieldsdata[$kinopoisk_xf], $x_api_key);
    if ( $kp_movie_api['year'] ) $movies_id[$xfieldsdata[$kinopoisk_xf]] = $kp_movie_api['year'];
    $movies_id_clone = $movies_id;
    asort($movies_id);
    $movies_id_flipped = array_flip($movies_id);
    $part_id = implode(',', $movies_id_flipped);
    unset($kp_movie_api);
    }
    else $part_id = 'none';

    $xffieldsdata['sequels'] = $part_id;
    $year = $db->safesql( $movies_id_clone[$xfieldsdata[$kinopoisk_xf]] );
    $xffieldsdata = $db->safesql( xfieldsdatasave($xffieldsdata) );
    $db->query( "UPDATE " . PREFIX . "_post SET god='{$year}', xfields='{$xffieldsdata}' WHERE id='{$row['id']}'" );
    clear_cache( 'full_'.$row['id'] );
    unset($xffieldsdata);
    unset($kp_api);
    unset($year);

    if (is_array($movies_id_flipped) && count($movies_id_flipped) > 1) {
    $where_movie = [];
    foreach ($movies_id_flipped as $movie_id) {
    if ($this_kp_id != $movie_id) {
    $where_movie[] = "xfields LIKE '%{$kinopoisk_xf}|{$movie_id}|%'";
    }
    }
    $where_movie = implode(' OR ', $where_movie);
    $db->query("SELECT id, xfields FROM " . PREFIX . "_post WHERE " . $where_movie);
    $news_arr = [];
    $n_num = 0;
    while ($sequel_movie = $db->get_row()) {
    $news_arr[$n_num]['id'] = $sequel_movie['id'];
    $news_arr[$n_num]['xfields'] = $sequel_movie['xfields'];
    $n_num++;
    }
    $db->free();
    unset($where_movie, $sequel_movie, $n_num);

    foreach ($news_arr as $sequel_movie) {
    $xffieldsdata = xfieldsdataload($sequel_movie['xfields']);
    $xffieldsdata['sequels'] = $part_id;
    $year = $db->safesql($movies_id_clone[$xffieldsdata[$kinopoisk_xf]]);
    $xffieldsdata = $db->safesql(xfieldsdatasave($xffieldsdata));
    $db->query("UPDATE " . PREFIX . "_post SET xfields='{$xffieldsdata}', god='{$year}' WHERE id='{$sequel_movie['id']}'");
    clear_cache('full_' . $sequel_movie['id']);
    unset($xffieldsdata, $year);
    }
    unset($news_arr, $sequel_movie);
    }
    unset($part_id);

    }

    if ( $xfieldsdata['sequels'] && $xfieldsdata['sequels'] != 'none' ) {
    $tpl->set( '[sequels]', "" );
    $tpl->set( '[/sequels]', "" );
    }
    else $tpl->set_block( "'\\[sequels\\](.*?)\\[/sequels\\]'si", "" );]]></replacecode>
    <enabled>1</enabled>
    </operation>
    </file>
    <file name="engine/modules/functions.php">
    <operation action="before">
    <searchcode><![CDATA[if( preg_match( "#xfields=[\"](.+?)[\"]#i", $param_str, $match ) ) {]]></searchcode>
    <replacecode><![CDATA[//настройки
    $kinopoisk_xf = 'kinopoisk_id';
    //настройки

    if( preg_match( "#sequels=[\"](.+?)[\"]#i", $param_str, $match ) ) {
    $match[1] = explode (',', $match[1]);
    $temp_array = array();
    foreach ($match[1] as $value) {
    $value = $db->safesql(trim($value));
    $temp_array[] = "p.xfields LIKE '%{$kinopoisk_xf}|{$value}|%'";
    }
    $where[] = "(".implode(' OR ', $temp_array).")";
    $sequels_enabled = true;
    }
    else $sequels_enabled = false;]]></replacecode>
    <enabled>1</enabled>
    </operation>
    <operation action="before">
    <searchcode><![CDATA[function custom_print( $matches=array() ) {]]></searchcode>
    <replacecode><![CDATA[if (!function_exists('xfieldsdatasave')) {
    function xfieldsdatasave($xfields) {
    $filecontents = [];
    foreach ($xfields as $xfielddataname => $xfielddatavalue) {
    if ($xfielddatavalue === '') continue;
    $xfielddataname = str_replace( "|", "&#124;", $xfielddataname);
    $xfielddataname = str_replace( "\r\n", "__NEWL__", $xfielddataname);
    $xfielddatavalue = str_replace( "|", "&#124;", $xfielddatavalue);
    $xfielddatavalue = str_replace( "\r\n", "__NEWL__", $xfielddatavalue);
    $filecontents[] = "$xfielddataname|$xfielddatavalue";
    }
    $filecontents = join('||', $filecontents );
    return $filecontents;
    }
    }

    if (!function_exists('kinopoiskapiunofficial')) {
    function kinopoiskapiunofficial($url, $x_api_key) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $headers = [
    'Content-Type: application/json',
    'X-API-KEY: '.$x_api_key
    ];

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $kp_api = curl_exec ($ch);
    curl_close ($ch);

    return json_decode($kp_api, true);
    }
    }]]></replacecode>
    <enabled>1</enabled>
    </operation>
    <operation action="replace">
    <searchcode><![CDATA[$sql_select .= " WHERE ".implode(' AND ', $where)." ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;]]></searchcode>
    <replacecode><![CDATA[if ( $sequels_enabled === true ) $sql_select .= " WHERE ".implode(' AND ', $where)." ORDER BY p.god ASC LIMIT " . $custom_from . "," . $custom_limit;
    else $sql_select .= " WHERE ".implode(' AND ', $where)." ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;]]></replacecode>
    <enabled>1</enabled>
    </operation>
    <operation action="replace">
    <searchcode><![CDATA[$sql_select = "SELECT p.id, p.autor, p.date]]></searchcode>
    <replacecode><![CDATA[$sql_select = "SELECT p.id, p.autor, p.date, p.god]]></replacecode>
    <enabled>1</enabled>
    </operation>
    </file>
    <file name="engine/modules/show.custom.php">
    <operation action="after">
    <searchcode><![CDATA[$i ++;]]></searchcode>
    <replacecode><![CDATA[$tpl->set( '{numeration}', $i );]]></replacecode>
    <enabled>1</enabled>
    </operation>
    </file>
    </dleplugin>
     
    #26 ok_daa, 7 апр 2025
    Последнее редактирование: 7 апр 2025
  7. Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    635
    Лучших ответов:
    2
    Рейтинги:
    +81 / 19 / -0
    Нашел под DLE 17.3 php 8.1 (выше автор не проверял) У меня DLE 17.3 php 8.5, пока полет нормальный, ошибки не вылетают, специально полчаса шастал по новостям без сиквелов)))
     

    Вложения:

  8. ok_daa

    ok_daa Бывалый

    Регистрация:
    24 мар 2023
    Сообщения:
    256
    Лучших ответов:
    0
    Рейтинги:
    +42 / 14 / -0
    web...pro? скачал оттуда
     
  9. Tolstyak87

    Tolstyak87 Бывалый

    Регистрация:
    21 мар 2018
    Сообщения:
    635
    Лучших ответов:
    2
    Рейтинги:
    +81 / 19 / -0
    Не, там я его что-то не увидил, на скриптерсе нашел. По мне, так там форум намного живее стал, хотя про раздел тоже есть. Тут же, в паблике ничего толкового не найти, все в про закрыли, еще и никого не пускают туда:D
     
  10. ok_daa

    ok_daa Бывалый

    Регистрация:
    24 мар 2023
    Сообщения:
    256
    Лучших ответов:
    0
    Рейтинги:
    +42 / 14 / -0
    Ну что ж поделать
     
Похожие темы
  1. paxan
    Ответов:
    5
    Просмотров:
    2.515
  2. LEX
    Ответов:
    2
    Просмотров:
    1.973
  3. Darkensand
    Ответов:
    7
    Просмотров:
    919
  4. DLEPlugins
    Ответов:
    69
    Просмотров:
    19.981
  5. Bayko
    Ответов:
    16
    Просмотров:
    1.451
Загрузка...
Яндекс.Метрика