Инструкция по установке модуля:
1. Зайти в Управление плагинами => Загрузить плагин => выбераем архив DLE Serials x.x.zip
2. Папку dle_serials из templates\Default\dle_serials переместите в templates\Ваш шаблон
3. Открываем .htaccess в корне сайта, ищем в нем код
RewriteEngine On
ниже вставляем
RewriteRule ^([0-9]+)-(.*)/season/([0-9]+)/episode/([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/episode/([0-9]+).html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/season-([0-9]+)/episode-([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/episode-([0-9]+).html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-season/([0-9]+)-episode.html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-episode.html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/season-([0-9]+)-episode-([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-season-([0-9]+)-episode.html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)-season-([0-9]+)-episode-([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)-episode-([0-9]+).html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)-([0-9]+)-season-([0-9]+)-episode.html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)-([0-9]+)-episode.html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/sezon/([0-9]+)/seriya/([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/seriya/([0-9]+).html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/sezon-([0-9]+)/seriya-([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/seriya-([0-9]+).html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-sezon/([0-9]+)-seriya.html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-seriya.html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)/sezon-([0-9]+)-seriya-([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-sezon-([0-9]+)-seriya.html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)-sezon-([0-9]+)-seriya-([0-9]+).html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)-seriya-([0-9]+).html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
RewriteRule ^([0-9]+)-(.*)-([0-9]+)-sezon-([0-9]+)-seriya.html$ index.php?newsid=$1&seourl=$2&season=$3&episode=$4 [L]
RewriteRule ^([0-9]+)-(.*)-([0-9]+)-seriya.html$ index.php?newsid=$1&seourl=$2&episode=$3 [L]
4. Открываем любой подключенный в шаблон css файл и в самый низ вставляем стили
#player{background:#000;min-height:460px}
.b-player{background:#000;padding-top:10px;position:relative}
.b-player iframe{overflow:hidden;width: 100% !important}
.b-player iframe::-webkit-scrollbar{display:block}
.b-post__lastepisodeout{position: relative; background: #12171b url(../dle_serials/dle_serials.png); color: #ccc; height:20px}
.b-post__lastepisodeout_full{position: relative; background: #12171b url(../dle_serials/dle_serials.png); color: #ccc; height:20px}
@media only screen and (max-width: 590px) {
.b-post__lastepisodeout_full{position: relative; background: #12171b url(../dle_serials/dle_serials.png); color: #ccc; height:40px}
}
.b-post__lastepisodeout_full a{color: #fff;text-decoration: none}
.b-episodes__list{margin-left:-16px;padding:32px 0 15px;-webkit-transition
😱pacity 0.5s ease;-moz-transition
😱pacity 0.5s ease;-o-transition
😱pacity 0.5s ease;transition
😱pacity 0.5s ease;}
.b-episodes__list li{float:left;margin:0 0 17px 17px}
.b-simple_seasons__list{margin:0 auto;padding:10px;padding:4px 10px 12px 13px;list-style:none}
.b-simple_seasons__title{color:#fff;font-size:15px;font-weight:bold;padding-top:10px;padding-left:11px;text-align:left}
.b-simple_season__item{background:#2d2d2d;color:#fff;cursor
😛ointer;float:left;font-size:13px;margin: 0 2px 2px 0 !important;min-width:11.8%;padding:5px 7px;text-align:left;list-style: none !important}
.b-simple_episodes__list{margin:0 auto;padding:10px 10px 12px 13px;text-align:left}
.b-simple_episode__item{background:#2d2d2d;color:#fff;cursor
😛ointer;display:inline-block;font-size:13px;margin: 0 2px 2px 0 !important;min-width:11.8%;padding:5px 7px;text-align:left}
#serial_player{min-height:460px}
#simple-episodes-tabs{white-space:nowrap;overflow:hidden;margin:0 30px 0 30px;display:block;position:relative;}
@media only screen and (max-width: 590px) {
#simple-episodes-tabs {-webkit-overflow-scrolling: touch;overflow-x:scroll}
#serial_player{min-height:300px}
#player{background:#000;min-height:300px}
}
#simple-episodes-list{-moz-padding-start:0px;padding-start:0px;-webkit-padding-start:0px;text-align:left}
.b-simple_episode__item{display:inline-block;font-size:11px;background:#242424;color:#F0F0F0;cursor
😛ointer;padding:5px;margin:0 3px;-webkit-transition:background .3s ease;-moz-transition:-moz-background .3s ease;-o-transition:-o-background .3s ease;transition:background .3s ease;text-align:left}
.b-simple_episode__item.active{background:#525252 !important;cursor:default}
.prenext{position:relative}
.prevpl,.nextpl{position:absolute;top:0px;font-size:xx-large;width:25px;height:20px;color:#D5D9D9;cursor
😛ointer;font-weight:bold;z-index:999}
.prevpl{left:0px}
.nextpl{right:0px}
.b-simple_season__item.active,.b-simple_episode__item.active{background:#5d5d5d !important;cursor:default}
.b-changeplayer__list li:hover,.b-simple_season__item:hover,.b-simple_episode__item:hover{background:#4d4d4d}
5. Открываем любой подключенный к шаблону js файл и в самый низ вставляем скрипт
$(document).ready(function() {
scrolltoactive();
});
function scrolltoactive() {
if ( $("div").is("#simple-episodes-tabs") ) {
if ( ($('#serial_player').width() - 30) < document.getElementById('simple-episodes-tabs').scrollWidth ) {
$('#simple-episodes-tabs').scrollTo($("#simple-episodes-list > .active"), 300);
} else {
$('.prevpl').hide();
$('.nextpl').hide();
$('#simple-episodes-tabs').css({'margin':'0px 5px'});
}
}
}
function prevpl(){
var scroll = $('#serial_player').width()/2;
$('#simple-episodes-tabs').scrollTo("-=" + scroll + "px", 300);
}
function nextpl(){
var scroll = $('#serial_player').width()/2;
$('#simple-episodes-tabs').scrollTo("+=" + scroll + "px", 300);
}
/**
* Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com |
flesler - Overview
* Licensed under MIT
* @author Ariel Flesler
* @version 2.1.2
*/
;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m]))
🙁d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l
,k)};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
6. Открываем Ваш шаблон/dle_serials/episode_page.tpl, копируем сюда содержимое вашего fullstory.tpl и перенастраиваем под страницу серий.
В данном файле доступны следующие теги:
{player} - выводит сам плеер с плейлистом
{episode} - выводит номер текущей серии
{season} - выводит номер текущего сезона
{quality} - выводит качество
7. Открываем ваш fullstory.tpl и в то место, в котором будет выводится плеер вставляем тег
[dle_serials]{player}[/dle_serials]
{player} - выводит сам плеер с плейлистом
[dle_serials]...[/dle_serials] все что внутри тега будет показано в случае, если плеер в модуле доступен
[no_dle_serials]...[/no_dle_serials] - все что внутри будет показано в случае, если модуль не отработал
8. В main.tpl вам доступна конструкция
[available=dle_serials] текст [/available] - выводит текст заключенный в теги если просматривается страница серий
[not-available=dle_serials] текст [/not-available] - выводит текст заключенный в теги если не просматривается страница серий
9. В файлах shortstory.tpl, fullstory.tpl и в файле шаблона конструкции custom доступен тег
{last-episode-link} - данный тег выводит чистую ссылку на последнюю вышедшую серию. К примеру, его можно использовать для блока обновления сериалов вместо тега {full-link}
10. По вашим просьбам сделал возможным формирование карты сайта со списком серий. Для этого делаем следующее:
а) открываем файл cron.php в корне сайта и ищем в нем код
include_once (DLEPlugins::Check(ROOT_DIR.'/engine/inc/googlemap.php'));
die ("done");
}
НИЖЕ вставляем код
elseif ($cronmode == "sitemap_episodes") {
$_POST['action'] = "create";
$_POST['priority'] = "0.7";
$_POST['stat_priority'] = "0.6";
$_POST['cat_priority'] = "0.5";
$_POST['limit'] = 0;
$member_id = array();
$user_group = array();
$member_id['user_group'] = 1;
$user_group[$member_id['user_group']]['admin_googlemap'] = 1;
$cat_info = get_vars( "category" );
if( ! is_array( $cat_info ) ) {
$cat_info = array ();
$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
while ( $row = $db->get_row() ) {
$cat_info[$row['id']] = array ();
foreach ( $row as $key => $value ) {
$cat_info[$row['id']][$key] = stripslashes( $value );
}
}
set_vars( "category", $cat_info );
$db->free();
}
if( count( $cat_info ) ) {
foreach ( $cat_info as $key ) {
$cat[$key['id']] = $key['name'];
$cat_parentid[$key['id']] = $key['parentid'];
}
}
include_once (DLEPlugins::Check(ROOT_DIR.'/engine/inc/googlemap_episodes.php'));
die ("done");
}
б) Скачиваем плагин и добавляем его в системе управления плагинами.
в) Запустите один раз в браузере ссылку http://сайт/cron.php?cronmode=sitemap_episodes (http://сайт/ меняем на ваш домен) и проверьте появился ли в папке /uploads/ файл с именем sitemap_episodes.xml.
г) Если файл появился то добавляем крон задание в вашей панели управления сервером на следующую ссылку http://сайт/cron.php?cronmode=sitemap_episodes (http://сайт/ меняем на ваш домен). Период выполнения - раз в день или на ваше усмотрение. Если не появился - пишем мне в телеграм @deviloper_ru
Для обновления модуля перезаливаем все файлы кроме /engine/modules/deviloper/dle_serials/data/dle_serials.config.php!!!
Таким образом сохранятся внесенные вами настройки.