DLE — Хак attachment. Изменяем стандартный attachment

dle attachment 1 - DLE — Хак attachment. Изменяем стандартный attachment
dle attachment 2 - DLE — Хак attachment. Изменяем стандартный attachment

Полностью на CSS3 без картинок скрипт для вывод кнопки на скачивания файлов в DLE.

В комплекте возможен вариант с установкой модального окна и подтверждением скачивания (исключает искажение статистики со случайными нажатиями).

Начиная примерно с версии DLE 11.0 в шаблон был введен новый файл — attachment.tpl, который убирает необходимость в данных манипуляциях. Для него просто заменяем его содержимое на код из комментария #13

Установка скрипта

Открыть engine/modules/function.php и где-то на 650-й строке найти следующий код:

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

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

Заменить на:

//attachment
$replace_1[] = "
<div align=\"center\">
<hr class=\"att_hr\"/>
<div class=\"DownLoadWindow\"><div id=\"attachment\"><a href=\"#\" onclick=\"showDownLoad(); return false;\">Скачать <b>{$row['name']}</b></a></div></div>
<div id=\"attachment2\">Размер: <span>{$size} </span> Скачиваний: <span>{$row['dcount']} </span></div>
</div>
<div id=\"DownLoadWindow\"  style=\"display:none;\" ><div id=\"attachment3\"> <a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >cкачать</div>

<script type=\"text/javascript\">
function showDownLoad() {
$(function(){
    $('#DownLoadWindow').dialog({
        autoOpen: true,
        autoClose: true,
        width: 520,
        buttons: {
            \"Закрыть окно\" : function() {
                $(this).dialog(\"close\");
            },
        }

    });
});
}
</script>";
            $replace_2[] = "
<div align=\"center\">
<hr class=\"att_hr\"/>
<div class=\"DownLoadWindow\">
<div id=\"attachment\">             
<a href=\"#\" onclick=\"showDownLoad(); return false;\">Скачать <b>{$row['name']}</b></a>
</div></div>
<div id=\"attachment2\">  
Размер: <span>{$size} </span> Скачиваний: <span>{$row['dcount']} </span>
</div>
</div>
<div id=\"DownLoadWindow\"  style=\"display:none;\" >

<div id=\"attachment3\"> <a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >cкачать</div>

</div>
<script type=\"text/javascript\">
function showDownLoad() {
$(function(){
    $('#DownLoadWindow').dialog({
        autoOpen: true,
        autoClose: true,
        width: 520,
        buttons: {
            \"Закрыть окно\" : function() {
                $(this).dialog(\"close\");
            },
        }

    });
});
}
</script>";
//end attachment

3. Открыть файл стилей CSS в шаблоне и вставить:

/*---Ссылка на скачивание прикрепленного файла---*/

/*---Полоса с названием файла---*/
#attachment  { 
  text-align:center;
  border:1px solid #000;
  border-radius:3px; 
  background: #013027; 
  color: #808080; 
  width:500px; 
  padding:2px; 
  float:center; 
  min-height:20px;
  box-shadow: 1px 1px 2px #000;
}

#attachment a {color: #ccc; text-shadow: 5px 5px 10px #fff; }

/*---Показатели файла (размер и скачано)---*/
#attachment2{
  text-align:center;
  text-shadow: 5px 5px 5px #013027;
  color:#000;
  margin-top:5px;
  font-weight:700;  
}
#attachment2 span{color:#ff0000;}

/*---Кнопка на скачивание в всплывшем окне---*/
#attachment3  { 
  text-align:center;
  border:1px solid #000;
  border-radius:3px; 
  background: #013027; 
  padding:2px; 
  float:center; 
  box-shadow: 1px 1px 2px #000;
  margin:7px 0px 0px 0px;
}

#attachment3 a {font:40px bold; color: #ccc; text-shadow: 5px 5px 10px #fff; }

.att_hr{width:300px; margin:18px 0px;}

Вариант с модальным окном в какой-то момент перестал работать. Разбираться особого желания нет, да и с DLE я уже давно ушел, поэтому использую простую кнопку. Вместо огромного кода чуть выше, который мы заменяли в первом шаге. используем следующий укороченный вариант:

$replace_1[] = "
<div align=\"center\">
<hr class=\"att_hr\"/>
<div id=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >Скачать <b>{$row['name']}</b></a></div>
<div id=\"attachment2\">Размер: <span>{$size} </span> Скачиваний: <span>{$row['dcount']} </span></div>
</div>
";

            $replace_2[] = "
<div align=\"center\">
<hr class=\"att_hr\"/>
<div id=\"attachment\"><a href=\"{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}\" >Скачать <b>{$row['name']}</b></a></div>
<div id=\"attachment2\">Размер: <span>{$size} </span> Скачиваний: <span>{$row['dcount']} </span></div>
</div>
";

Для тех, кто так и не разобрался в особенностях скрипта attachment.tpl, данный скрипт используется для вывода прикрепленного к записи файла на скачивание. Загружается и публикуется в редакторе статьи. Более современный в стиле Material Design шаблон и его место в редакторе статьи на скриншоте ниже

dle attachment com - DLE — Хак attachment. Изменяем стандартный attachment

Похожие записи


PHP — простой ротатор баннеров, ротатор для DLE и WordPress
Аналог на javascriptАналог на PHP для больших кодов Очень простой ротатор кода на PHP. Сначала мы объявляем простой двумерный массив...
Как изменить пароль пользователя CMS DLE и WordPress через SQL-запрос
Перебираю старые статьи с целью их оптимизации и наткнулся на эту. В принципе, способ подойдет для любой системы на любом...
Полный гайд по миграции с CMS DLE на WordPress
Данный сайт в апреле 2019 года полностью переехал на CMS WordPress и в июне, после завершения всех правок (а их...
DLE – быстрый переезд на хостинг не используя инсталятор
Установка движка DLE на хостинг происходит через специальный файл — инсталятор, в котором необходимо заполнить все поля (имя базы данных,...
DLE — монетизируем загруженные в новостях файлы через отдельный домен
Как много у вас загруженных файлов (приложений к постам) не считая картинок? У меня много и придумал способ их монетизировать!...

Комментарии

  1. @Seriy пишет:

    Подскажите новичку , ато я никак не могу разобраться. Никогда прежде не ставил ( неменял ) вид атача . Все сделал как у вас в инструкции … но никакого результата, т.е. Я просто выполнил пункт 1, 2 , 3 … Дальше иду в админку , добавляю новость, там где вставить ссылку как и обычно вставляю ссылку и пишу скачать … ну и эфекта никакого …. все как и было, или еще какието доп. поля нужно делать или что- еще сделать или как правильно вставлять ссылку на скачивание, чтоб все было красиво

  2. @devarts пишет:

    Цитата: Seriy
    Подскажите новичку , ато я никак не могу разобраться. Никогда прежде не ставил ( неменял ) вид атача . Все сделал как у вас в инструкции … но никакого результата, т.е. Я просто выполнил пункт 1, 2 , 3 … Дальше иду в админку , добавляю новость, там где вставить ссылку как и обычно вставляю ссылку и пишу скачать … ну и эфекта никакого …. все как и было, или еще какието доп. поля нужно делать или что- еще сделать или как правильно вставлять ссылку на скачивание, чтоб все было красиво

    Возможно что то не так сделали. Никаких дополнительных полей не нужно. Помочь вслепую я не смогу. Нужно взглянуть на ваш сайт

    Цитата: Seriy
    там где вставить ссылку как и обычно вставляю ссылку и пишу скачать …

    Этот код не для ссылок, а для [attachment=X], т.е. для загруженных на сайт файлов и выведеных в новость

  3. @Seriy пишет:

    Спасиб за ответ, а можете еще подсказать как сделать у себя кнопку как у вас CTRL + Enter – для ошибок в тексте , dle 9.8

  4. @devarts пишет:

    Цитата: Seriy
    Спасиб за ответ, а можете еще подсказать как сделать у себя кнопку как у вас CTRL + Enter – для ошибок в тексте , dle 9.8

    Такая штука уже встроена в дле, а сбоку у меня обычная картинка.

  5. @AntetuebyBype пишет:

    Спасибо за статью

  6. @devarts пишет:

    Цитата: AntetuebyBype
    Спасибо за статью

    Незачто! Пользуйтесь на здоровье.

  7. @good1 пишет:

    у меня почему то не работает и все сделал правельно,
    стало как стандартный аттач

  8. @good1 пишет:

    пробовал на денвере работает нормально когда ставлю на сайт не работает что делать помоги пж

  9. @devarts пишет:

    Цитата: good1
    пробовал на денвере работает нормально когда ставлю на сайт не работает что делать помоги пж

    А подробнее можно. Быть может css не добавили

  10. @Rie пишет:

    Your answer shows real inceeligentl.

  11. @xatabich10 пишет:

    Базара нет, все работает как часы, малость CSS заточил под себя размеры и т.п. Но функционал отличный! Респект и уважуха тому Вебмастеру кто написал, мне бы с ним поработать… если что пиши xatabich10 есть заказы…

    xatabich10,
    xatabich10 это скайп ))) wink

    И еще.. хотел бы организовать во всплывающем окне таймер. Допустим чел заходит кликает скачать… тут вышло это окно, но вместо клавиши скачать идет отсчет времени до начала скачивания, допустим 20 сек… Буду пробовать сам, но если что автор напиши в скайп мне… куплю работы…

  12. @Twoface пишет:

    Цитата: artemmian

    Цитата: AntetuebyBype
    Спасибо за статью

    Незачто! Пользуйтесь на здоровье.

    Здравствуйте, прошу у Вас помощи, Ваш хак работает на версии 11.1, но к сожалению не показывает размер файла, помогите пожалуйста, как сделать чтобы размер файла тоже выводился.
    Спасибо.

  13. @devarts пишет:

    Цитата: Twoface
    Здравствуйте, прошу у Вас помощи, Ваш хак работает на версии 11.1, но к сожалению не показывает размер файла, помогите пожалуйста, как сделать чтобы размер файла тоже выводился.
    Спасибо.

    Я ушел с DLE, но попробую разобраться. Скорей всего изменилась переменная, отвечающая за размер файла

    Все гениально и просто. Используйте файл шаблона attachment.tpl 🙂

    Замените его содержимое на:

    
    [allow-download]
    <div align=\\"center\\">
    <hr class=\\"att_hr\\"/>
    <div id=\\"attachment\\"><a href="{link}" >Скачать <b>{name}</b></a></div>
    <div id=\\"attachment2\\">Размер: <span>[count] [{size}] </span> Скачиваний: <span>{count} [/count]</span></div>
    </div>
    [/allow-download]
    
    [not-allow-download]<span class="attachment">У вас нет доступа к скачиванию файлов с нашего сервера</span>[/not-allow-download]
    

    Не уверен насчет квадратных скобок вокруг {size}, возможно, простой элемент дизайна! Если будут мешать, просто уберите.

    Код данного аттача уже давно пора переписать на современный лад, но и так он вполне себе рабочий 🙂

  14. @Alegator79i пишет:

    На версии ДЛЕ 12,0 работает 100% но нет размера, то есть не показывает.

  15. @devarts пишет:

    Цитата: Alegator79i
    На версии ДЛЕ 12,0 работает 100% но нет размера, то есть не показывает.

    На столь поздних версиях все значительно проще т.к. в папку с шаблоном добавлен файл attachment.tpl

    Прочитайте мой комментарий чуть выше #13

  16. @astrikus пишет:

    А на 13,0 есть еще и посмотреть онлайн.

Добавить комментарий