18-03-2014, 23:12 Посмотрели: 8930 Добавил: Alex V

Модуль страница скачивания Downpage Ultimate для DLE 9.7 - 10.1


Пару дней назад решил найти для одного проекта модуль или хак отдельная страница скачивания для dle, чтобы при клике в полной новости человека перекидывало на другую страницу, а на ней будет расположена все информация о файла, авторе, размере и собственно ссылка на скачивание. Не буду называть основную цель для чего я его искал, я думаю если вы сейчас это читаете, то вы явно уже знаете для чего нужен вам этот модуль Downpage Ultimate.

Самая распространенная методика использования этого модуля, это конечно же реклама на этой странице, но это не единственное её предназначения, однако давайте её возьмем за основу и посмотрим как его используют другие. Так как все страницы с файлами в DLE имеют такой адрес:

http://w9y.ru/engine/download.php?id=*

А с модулем он меняется, на вот такой:

http://w9y.ru/getfile-*

Где используется *, это ID файла, обычно он выглядит как /download.php?id=12, а с модулем так /getfile-12

То, мы сможем составить Дорк и посмотреть на сайты в поисковых системах, для этого достаточно вписать такой запрос в поисковую строку:

inurl:getfile-12

Или перейти по этой ссылке http://yandex.ua/yandsearch?text=inurl%3Agetfile-12

После этого в запросе, можете поиграться с цифрой ID или поискать ещё в Google точно по такому же запросу. Но, мне хватило и этого примера:

Модуль страница скачивания Downpage Ultimate для DLE 9.7 - 10.1


Думаю рекламу видно без проблем, правда? Это же любимый AdvMaker, которые несколько дней назад проводил хорошую акцию по увеличению доходов.

Модуль страница скачивания Downpage Ultimate для DLE 9.7 - 10.1


А тут вообще шикарная картинка, ссылку на скачивание почти не видно, одна реклама, даже очень агрессивная реклама и я знаю что по ней кликают и владельцы зарабатывают на этом дополнительную копейку, которую вы до этого момента просто не монетизировали. Так же плавающий блок сможет поднять немного ваши доходы, так что не забудьте его тоже поставить. Так что теперь даже если не хотели ставить модуль downpage для dle, то наверное поменяли свое мнение ;)

Что умеет модуль Downpage Ultimate?!

- Отдельная страница для вашего шаблона с возможностью установки рекламных кодов;

- Таймер обратного отсчета перед скачиванием. Для каждой группы можно указать свой период задержки времени в секундах перед скачиванием файла. (Данная установка делается через настройку групп по ссылке http://www.site.ru/admin.php?mod=usergroup)

Обратите внимание! Если у вас не работает таймер обратного отсчета, значит вы не установили группе Гости или Посетители таймер (30-60 секунд), сначала сделайте это в НАСТРОЙКАХ ГРУППЫ. Я сам долго не мог понять почему не работает таймер, но как выяснялось все работает, если настроить все правильно!


- Все настройки можно сделать через удобную админ панель.

- Нет конфликтов с интеграцией от Kaliostro для связки DLE + IPB

Как установить Downpage Ultimate?!

1. Нужно сначала его скачать, скажу сразу что тестил downpage на 9.7, 10 и 10.1 версиях DLE. Как обстоят дела на более ранних версиях не знаю, так как протестить на таких "диназарах" у меня нет где.



2. В архив вложил инструкцию, мало ли будите тестировать на локалке, но сразу предупреждаю без разметки и нормальных комментариев ставить её сложно, по этому лучше напишу нормальную инструкцию для вас дорогие читатели, на нормальном языке. И так начнем.

3. Разархивируем архив и заходим в папку "templates", в ней лежит папка "avaload", её нужно переименовать на имя вашего АКТИВНОГО шаблона.

4. Теперь заливаем все файлы (кроме папки init.php_97) на ваш сайт, через FTP или файловый менеджер:

Модуль страница скачивания Downpage Ultimate для DLE 9.7 - 10.1


Содержимое папки "init.php_97" заливаем в ручную, только в том случаи если у вас DLE 9.7 и файл init.php закодированный.

5. Переходим в адресной строке браузера по адресу:

http://ваш_домен.ru/dp_ultimate_install.php


После установки, можете зайти и сразу удалить этот файл dp_ultimate_install.php.

6. Открываем файл engine/modules/functions.php и ищем строку:

$db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_static_files WHERE $where" );


Заменяем на:

$db->query( "SELECT id, name, onserver, dcount, size FROM " . PREFIX . "_static_files WHERE $where" );


7. Ищем код примерно с таким содержанием (по началу строки и концу кода, так как в мануале код для апдейта версии с 1 на 2):

 $db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_files WHERE $where" );
		
		$area = "";
	
	}
	
	while ( $row = $db->get_row() ) {
		
		$size = formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) );
		$row['name'] = explode( "/", $row['name'] );
		$row['name'] = end( $row['name'] );

		$find_1[] = '[attachment=' . $row['id'] . ']';
		$find_2[] = "#\[attachment={$row['id']}:(.+?)\]#i";

		if ( ! $user_group[$member_id['user_group']]['allow_files'] ) {

			$replace_1[] = "<span class=\"attachment\">{$lang['att_denied']}</span>";
			$replace_2[] = "<span class=\"attachment\">{$lang['att_denied']}</span>";

		} elseif( $config['files_count'] == 'yes' ) {

			$replace_1[] = "<div class=\"DownLoadWindow\">



ТУТ БЫЛ КУСОК КОДА СО СТАРОЙ ВЕРСИИ DOWNPAGE. Ищите по началу строке код и по окончанию кода!


		} else {

			$replace_1[] = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >{$row['name']}</a> [{$size}]</span>";
			$replace_2[] = "<span class=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >\\1</a> [{$size}]</span>";

		}

	}

	$db->free();


В чистой версии DLE 10.1 это строки от 784 до 818.

Модуль страница скачивания Downpage Ultimate для DLE 9.7 - 10.1




Заменяем его на код:

       $db->query("SELECT id, name, onserver, dcount, size FROM " . PREFIX . "_files WHERE $where");

        $area = "";
    }

    while ($row = $db->get_row()) {

        $size = formatsize(@filesize(ROOT_DIR . '/uploads/files/' . $row['onserver']));
        $row['name'] = explode("/", $row['name']);
        $row['name'] = end($row['name']);

        $find_1[] = '[attachment=' . $row['id'] . ']';
        $find_2[] = "#\[attachment={$row['id']}:(.+?)\]#i";

        require ENGINE_DIR . '/modules/functions.dp.php';
    }

    $db->free();


8. Открываем файл engine/inc/include/functions.inc.php и ищем строку:

if (!defined('DATALIFEENGINE')) {
    die("Hacking attempt!");
}


Заменяем её на:

if (!defined('DATALIFEENGINE')) {
    die("Hacking attempt!");
}
function size_http($url, $host) {
    $fp = @fsockopen($host, 80, $errno, $errstr, 20);
    if (!$fp) {
        $ret = 0;
    } else {
        fputs($fp, "HEAD " . $url . " HTTP/1.1\r\n");
        fputs($fp, "HOST: " . $host . "\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        $headers = "";
        while (!feof($fp)) {
            $headers .= fgets($fp, 128);
        }
        fclose($fp);
        $headers = strtolower($headers);
        $array = preg_split("|[\s,]+|", $headers);
        $key = array_search('content-length:', $array);
        $ret = $array[$key + 1];
    }
    if ($array[1] == 200)
        return $ret;
    else
        return -1 * $array[1];
}

function size_ftp($url, $user, $pass, $dir, $file) {
    $fp = @fsockopen($url, 21, $errno, $errstr, 30);
    fputs($fp, "USER $user\r\n");
    $s = fgets($fp);
    fputs($fp, "PASS $pass\r\n");
    $s = fgets($fp);
    fputs($fp, "PWD\r\n");
    $s = fgets($fp);
    fputs($fp, "CWD $dir\r\n");
    $s = fgets($fp);
    fputs($fp, "SIZE $file\r\n");
    $s = fgets($fp);
    fputs($fp, "PWD\r\n");
    $result = fgets($fp);
    fclose($fp);
    preg_match("#(\d*)\s(\d*)#", $result, $out);
    $file_size = $out[2];
    return $file_size;
}


9. Переходим в файл engine/download.php и ищем:

require_once ENGINE_DIR . '/classes/download.class.php';


Заменяем на код:

require_once ENGINE_DIR . '/classes/download.class.php';
require_once ENGINE_DIR . '/data/dp_conf.php';


Продолжаем дальше искать в этом файле, теперь ищем код:

if ($_REQUEST['area'] == "static")
	$row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_static_files WHERE id ='$id'" );
else
	$row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='$id'" );


Заменяем его на:

if ($_REQUEST['area'] == "static")
    $row = $db->super_query("SELECT name, onserver,size FROM " . PREFIX . "_static_files WHERE id ='$id'");
else
    $row = $db->super_query("SELECT name, onserver,size FROM " . PREFIX . "_files WHERE id ='$id'");


Далее ищем:

$file = new download ( FILE_DIR . $row['onserver'], $row['name'], $config['files_force'], intval($user_group[$member_id['user_group']]['files_max_speed']) );


Меняем на:

if ($row['size'] and $row['size'] != 0) {
    $file = "";
    header("Location: {$row['onserver']}");
} else {
$file = new download ( FILE_DIR . $row['onserver'], $row['name'], $config['files_force'], intval($user_group[$member_id['user_group']]['files_max_speed']) );    
}


10. На этом dle страница скачивания почти готова, вы уже большой молодец и скоро будет конец этого тяжкого труда, продолжаем дальше, осталось немного fellow

Открываем /engine/inc/usergroup.php и ищем:

$max_pm_value = $user_group[$id]['max_pm'];


Меняем на код:

$max_pm_value = $user_group[$id]['max_pm'];
$dp_timer = $user_group[$id]['dp_timer'];


Снова ищем в этом файле:

$max_files = intval( $_REQUEST['max_files'] );


Изменяем:

$max_files = intval( $_REQUEST['max_files'] );
$dp_timer = intval($_REQUEST['dp_timer']);


Снова ищем (ещё немного осталось):

$db->query( "UPDATE " . USERPREFIX . "_usergroups SET group_name='$group_name',


Изменяем на:

$db->query("UPDATE " . USERPREFIX . "_usergroups SET group_name='$group_name', dp_timer='$dp_timer',


И последнее изменение в этом файле, ищем:

    <tr>
        <td style="padding:4px;" class="option"><b>{$lang['group_mpm']}</b><br /><span class="small">{$lang['hint_gmpm']}</span></td>
        <td style="padding-top:2px;padding-bottom:2px;"><input class="edit bk" type="text" size="10" name="max_pm" value="{$max_pm_value}"></td>
    </tr>


Меняем на:

    <tr>
        <td style="padding:4px;" class="option"><b>Ожидание перед скачивание файла</b><br />
 <span class="small">Вы можете указать количичество секунд которые необходимо ждать пользователю перед тем как начнётся скачивание файла. 
Если установить значение в "0" - Выводится сразу ссылка на загрузку файла. Если оставить пустым будет выведенно сообщение мол "Вы не можите скачивать файлы"</span></td>
 <td style="padding-top:2px;padding-bottom:2px;"><input class="edit" type="text" size="10" name="dp_timer" value="{$dp_timer}"></td></tr>
 <tr><td background="engine/skins/images/mline.gif" height=1 colspan=2></td></tr>
 <tr><td style="padding:4px;" class="option"><b>{$lang['group_mpm']}</b><br /><span class="small">{$lang['hint_gmpm']}</span></td>
        <td style="padding-top:2px;padding-bottom:2px;"><input class="edit bk" type="text" size="10" name="max_pm" value="{$max_pm_value}"></td>
    </tr>


11. В файле engine\inc\include\init.php найти строку:

require_once (ENGINE_DIR . '/data/dbconfig.php');


Ниже неё вставить (!!!) :

extract( $_REQUEST,EXTR_SKIP );


Если у вас версия DLE 9.7 и файл закодирован, то достаем файл из 4-го пункта инструкции, смотрите на скрине.

12. И последний штрих, заходим в главную директорию (там где лежит файл admin.php) и заходим в файл /.htaccess

Ищем строку:

RewriteEngine On


Заменяем на код:

RewriteEngine On
# ЧПУ для DownPage
 RewriteRule ^getfile-([0-9]+)+$ /engine/downpage.php?get=$1 [L]
 RewriteRule ^getstfile-([0-9]+)+$ /engine/downpage.php?get=$1&area=static [L]


Все!!! Вы настоящий молодец и вы все таки поставили этот модуль!!!! Поздравляю вас!

Теперь заходите в папку /templates/НАЗВАНИЕ-ВАШЕГО-ШАБЛОНА/downpage.tpl подстраивайте шаблон под себя, ставьте свою рекламу и пусть она приносит вам хороший доход, ведь вы это заслужили feel
Рубрика записи: Модули

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

№ 1. 19-03-2014 00:24 Alex V из групы: Администраторы сказал :
Будет интересно узнать ваше мнение по моей инструкции и инструкции из архива smile
 
Ваши комментарии мотивируют меня делать хорошие вещи, на забывайте их оставлять здесь.

Коллектив WebNine Young (w9y)
№ 2. 20-03-2014 20:35 DonaldSl из групы: Посетители сказал :
Ура!!! Наконец-то нашел рабочую версию для 10.1! Большое спасибо!
№ 3. 08-04-2014 11:26 Hermankilm из групы: Посетители сказал :
Спасибо автору, очень нужная вещь
№ 4. 01-06-2014 15:54 Lancelot из групы: Посетители сказал :
Уважаемый автор, установил данный модуль на движок dle 10.1, но при нажатие на ссылку скачивания выдаёт белую страницу. Два раза проверял по инструкции никаких ошибок, в чём же дело?
№ 5. 02-06-2014 19:40 Alex V из групы: Администраторы сказал :
Lancelot, ставили на чистую версию? У меня стоит на 10.1 этот модуль, все отлично работает. Больше всего, что где-то допустили все таки ошибку.

Коллектив WebNine Young (w9y)
№ 6. 27-08-2014 16:56 aleexeey из групы: Посетители сказал :
Спасибо за модуль! На DLE 9.4 работает
 
P.S. У вас при регистрации не выводится кнопка (Принимаю / Не принимаю) ({ACCEPT-DECLINE1})
№ 7. 29-08-2014 21:57 Alex V из групы: Администраторы сказал :
Алексей, спасибо поправил!

Коллектив WebNine Young (w9y)
№ 8. 03-12-2014 11:25 paulyuzvyshen из групы: Посетители сказал :
Здравствуйте! У меня DLE 10.1 win-1251, чистая. Вроди все сделал по инструкции шаг за шагом. Файл отображается нормально, но при клике открывается 
Внимание, обнаружена ошибка По данному адресу публикаций на сайте не найдено, либо у вас нет доступа для просмотра информации по данному адресу.
и все. В админке модуль отображается нормально. Может что-то нужно в движке поправить, так как чистый. Помогите пожалуйста

Короче решил проблему отключением ЧПУ в самом модуле, у кого проблемы на движке 10.1 - рекомендую тоже попробовать, не знаю, может есть и еще способы заставить модуль работать
№ 9. 04-12-2014 22:07 Alex V из групы: Администраторы сказал :
paulyuzvyshen, спасибо возможно кому-то поможет. 
 
Сам ставил на 10.1, тоже Win 1251, но такой проблемы не было.

Коллектив WebNine Young (w9y)

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Юзер панель
Я тебя не знаю!
Зарегистрируйся, либо

войди под своим логином!

Fuck, я забыл свой пароль!

Восстановить данные =0
Новое на сайте
Известная социальная сеть Instagram приступила к тестированию новой...
Недавно, в приложения для Android и iOS социальной сети Twitter была...
Недавно, в Google "Мой бизнес" разработчики добавили новейший способ, как...
Недавно стало известно о том, что соцсеть Facebook по упоминанию в русских...
Недавно, представитель корпорации Google, Джон Мюллер (John Mueller)...
Голосуем

Ваша любимая CMS?


DataLife Engine
WordPress
Joomla
Drupal
LiveStreet
UCOZ
Самопис
Php+Includ
Статика