» » » Скачивание файлов на отдельной странице
17 0  

Скачивание файлов на отдельной странице

Название: Downpage
Версия: 1.0
Дата выпуска: 31.10.2019 года
Версия DLE: 13 <
Автор:  ~

Плагин для DLE 12 + 13 который позволяет скачать файл из модального окна с таймером ожидания и показом рекламы.

Плагин Downloade  для 13 версии скачать можно тут - https://kylaksizov.ru/167-ks-downloader.html


Для 12 версии нужно сделать 2 операции:

№1) В вашем шаблоне нужно создать файл - downpage.tpl  с таким содержимым:

<!DOCTYPE html>
<html lang="ru-RU">
<head>
<meta http-equiv="Content-Type" content="text/html; charset={charset}">
<title>{title} &raquo; Скачивание файла</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="robots" content="noindex, nofollow">
<style type="text/css">
*,*:after,*:before{
	margin:0;
	padding:0;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
body{
	background: #78a6d8 url(/templates/Color/images/down_bg.jpg) no-repeat 50% 50%;
	background-attachment: fixed;
	font: normal 13px/21px Verdana;
	color: #444;
}
.wrapper{
	width: 100%;
	max-width: 560px;
	margin: 40px auto 20px;
	box-shadow: 0 2px 5px rgba(0,0,0,.1);
}
.header{
	padding: 0 20px;
	line-height: 45px;
	background: rgba(0,0,0,.5);
	color: #eee;
	border-radius: 3px 3px 0 0;
	display: none;
}
.main{
	border-radius: 3px 3px 0 0;
	background: #f8f8f8;
}

h1{
	font-size: 21px;
	font-weight: normal;
	padding: 30px;
	color: #243133;
	text-align: center;
}
h1 a{
	text-decoration: none;
}
a{
	color: #f57c00;
}
a:hover{
	color: #111;
}
ul{
	max-width: 66%;
	margin: 0 auto;
	padding: 0;
	border-top: 1px solid #eee;
	list-style: none;
}
ul li{
	border-bottom: 1px solid #eee;
	padding: 3px 25px;
	font-size: 12px;
	color: #777
}
ul li b{
	color: #333;
}

.download{
	padding: 30px;
	text-align: center;
}
.timer b{
	padding-right: 24px;
	background: url(dаta:image/gif;base64,R0lGODlhFAAUAJEDAMzMzLOzs39/f////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgADACwAAAAAFAAUAAACPJyPqcuNItyCUJoQBo0ANIxpXOctYHaQpYkiHfM2cUrCNT0nqr4uudsz/IC5na/2Mh4Hu+HR6YBaplRDAQAh+QQFCgADACwEAAIADAAGAAACFpwdcYupC8BwSogR46xWZHl0l8ZYQwEAIfkEBQoAAwAsCAACAAoACgAAAhccMKl2uHxGCCvO+eTNmishcCCYjWEZFgAh+QQFCgADACwMAAQABgAMAAACFxwweaebhl4K4VE6r61DiOd5SfiN5VAAACH5BAUKAAMALAgACAAKAAoAAAIYnD8AeKqcHIwwhGntEWLkO3CcB4biNEIFACH5BAUKAAMALAQADAAMAAYAAAIWnDSpAHa4GHgohCHbGdbipnBdSHphAQAh+QQFCgADACwCAAgACgAKAAACF5w0qXa4fF6KUoVQ75UaA7Bs3yeNYAkWACH5BAUKAAMALAIABAAGAAwAAAIXnCU2iMfaRghqTmMp1moAoHyfIYIkWAAAOw==) no-repeat 100% 50%;
}
.download img{
	vertical-align: middle;
}
.downlink{
	display: none;
}
.downlink a{
	display: block;
	width: 300px;
    line-height: 18px;
    padding: 9px;
	margin: 0 auto;
	text-align: center;
	background: #388E3C url(dаta:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAIAAACw1AcgAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAIUlEQVQImWNwXuDOxMDAwPT//38UmuE/A3l8BiqZA+EDADU7KVH6TsQQAAAAAElFTkSuQmCC) repeat-x 0 0;
	color: #fff;
	text-decoration: none;
	border-radius: 2px;
	border: 1px solid #2E7D32;
}
.downlink a:hover{
	background-image: url(dаta:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAoCAIAAACw1AcgAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAHklEQVQImWOw6LNhYmBggGNGRkYIm5EyPiMDVcwBAMLuAXZsjCntAAAAAElFTkSuQmCC);
	background-position: 0 100%;
}

.footer{
	text-align: center;
	padding: 15px;
	color: #ccc;
	font-size: 12px;
	background: #24292A;
	border-radius: 0 0 3px 3px;
}
.footer a:hover{
	color: #fff;
}
</style>
</head>
<body>

<div class="wrapper">
	<div class="header">Скачать файл</div>

	<div class="main">
		<h1><a href="{full_link}">{title}</a></h1>
		<ul>
			<li>Добавлено: <b>{date}</b></li>
			<li>Категория: <a href="{category-link}">{category}</a></li>
			<li>Загрузил на сайт: {author}</li>
			<li>Размер файла: <b>{size}</b></li>
			<li>Количество загрузок: <b>{count}</b></li>
		</ul>
		
		<div class="download">
			<div class="timer">Подготовка... Ссылка будет доступна через <b>{timer}</b></div>
			<div class="downlink"><a href="{downlink}">Скачать: <b>{filename}</b></a></div>
		</div>
	</div>
	
	<div class="footer">
		2017 &copy; <a href="//sx2.name/" target="_blank">WWW.SX2.NAME</a>
	</div>
</div>

<script>
var timeout = {timer};
var timer = setInterval(function(){
	timeout--;
	document.querySelector('.timer b').innerHTML = timeout;
	if( timeout == 0 ){
		clearInterval(timer);
		document.querySelector('.timer').style.display = 'none';
		document.querySelector('.downlink').style.display = 'block';
	}
},1000);
</script>
</body>
</html>


№2) Открыть файл engine/download.php

Найти строку:

$url = @parse_url ( $row['onserver'] );

После нее вставить:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$timer = 5;    //обратный отсчет, секунды
$offline_time = 1;    //Сколько минут ссылка будет рабочей
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if( !$_GET['hash'] OR !$_SESSION['download_timer'] OR $_GET['hash'] != md5( $id . $row['onserver'] . $_SESSION['download_timer'] ) OR $_SESSION['download_timer'] > time() OR $_SESSION['download_timer'] + $offline_time*60 < time() )
{
    $_SESSION['download_timer'] = time() + $timer;

    $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_map("stripslashes",$row);
        set_vars( "category", $cat_info );
        $db->free();
    }
  
    $tpl = file_get_contents( ROOT_DIR . "/templates/{$config['skin']}/downpage.tpl" );

    $row['category'] = intval( $row['category'] );

    $tpl = str_ireplace( "{category}", $cat_info[$row['category']]['name'], $tpl );
    $tpl = str_ireplace( "{category-link}", $config['http_home_url'] . get_url( $row['category'] ) . "/", $tpl );
    $tpl = str_ireplace( "{author}", "<a href=\"" . $config['http_home_url'] . "user/" . urlencode( $row['author'] ) . "/" . "\">" . $row['author'] . "</a>", $tpl );
    $tpl = str_ireplace( "{title}", stripslashes( $row['title'] ), $tpl );
  
    if( $row['category'] and $config['seo_type'] == 2 ) $full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['news_id'] . "-" . $row['alt_name'] . ".html";
    else $full_link = $config['http_home_url'] . $row['news_id'] . "-" . $row['alt_name'] . ".html";
    $tpl = str_ireplace( "{full_link}", $full_link, $tpl );
  
    $tpl = str_ireplace( "{filename}", stripslashes( $row['name'] ), $tpl );
    $tpl = str_ireplace( "{size}", formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ), $tpl );
    $tpl = str_ireplace( "{date}", date( "d.m.Y, H:i", $row['date'] ), $tpl );

    $tpl = str_ireplace( "{count}", $row['dcount'], $tpl );
    $tpl = str_ireplace( "{timer}", $timer, $tpl );
    $tpl = str_ireplace( "{downlink}", "/engine/download.php?id=$id&hash=" . md5( $id . $row['onserver'] . $_SESSION['download_timer'] ), $tpl );

    $tpl = str_ireplace( "{charset}", $config['charset'], $tpl );
    $tpl = str_ireplace( "{THEME}", $config['http_home_url'] . 'templates/' . $config['skin'], $tpl );
  
    echo $tpl;
    die();
}else $_SESSION['download_timer'] = time();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Найти строку:

$row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='{$id}'" );

Заменить на:

$row = $db->super_query ( "SELECT f.*, p.title, p.category, p.alt_name FROM " . PREFIX . "_files f LEFT JOIN ".PREFIX."_post p ON p.id=f.news_id WHERE f.id = $id" )



Оставить свой комментарий:

Опыт в веб разработке:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
1979
2019