Хак Прикрепленные файлы к новости
Сегодня хочу поделиться не большим скриптом, который делал для себя. Его суть вывести в определенное место все файлы(кроме картинок), которые были добавлены в новость. Притом сами файлы в новости можно удалить. Возможно он покажется вам бесполезным, но все таки выкладываю его, т.к. он пригодился мне в одним из моих проектов.
Теперь расскажу как его установить.
Нам потребуется изменить вывод самих файлов в новости, для чего мы откроем файл function.php в папке /engine/modules/ и заменим:
elseif( $config['files_count'] == 'yes' ) {
$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>";
} 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>";
}
на этот код:
elseif( $config['files_count'] == 'yes' ) {
$replace_1[] = "<span class="attachment possible_to"><a href="{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}" >{$row['name']}</a> [<span class="size">{$size}</span>] ({$lang['att_dcount']} <span class="dcount">{$row['dcount']}</span>)</span>";
$replace_2[] = "<span class="attachment possible_to"><a href="{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}" >1</a> [<span class="size">{$size}</span>] ({$lang['att_dcount']} <span class="dcount">{$row['dcount']}</span>)</span>";
} else {
$replace_1[] = "<span class="attachment possible_to"><a href="{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}" >{$row['name']}</a> [<span class="size">{$size}]</span></span>";
$replace_2[] = "<span class="attachment possible_to"><a href="{$config['http_home_url']}engine/download.php?id={$row['id']}{$area}" >1</a> [<span class="size">{$size}]</span></span>";
}
Так как, в большинстве случаев, файл добавляют только в полную новость, то и прикрепленные файлы мы будем выводи в полной новости, открываем шаблонный файл fullstory.tpl и в самый верх вставляем код предоставленный ниже:
<script type="text/javascript">
$(document).ready(function(){
if ($(".attachment.possible_to").length > 0){
$('.attachments').append('<br/>Прикрепленные файлы:<br/>')
$('.attachment.possible_to').each(function(i){
var link = $(this).find('a').attr('href');
name = $(this).find('a').text();
size = $(this).find('.size').text();
count = $(this).find('.dcount').text();
$('.attachments').append('<div class="attach_file"><a href="'+link+'">Скачать</a><span>'+name+'</span><span>Размер: '+size+'</span><span>Скачиваний: '+count+'</span></div><br/>');
})
$('.attachment.possible_to').remove();
}
})
</script>
В этом же файле после {full-story} пишем:
<div class="attachments"></div>
Собственно в этом блоке и будет находится список файлов.
Теперь стилизуем наш список, вставив css код к в свой css файл, который, обычно, находится в папке /style/ и называется styles.css
.attach_file{background:#dddcdc;display:inline-block;margin-top:3px;border:solid 1px #dddcdc;overflow:hidden;}
.attach_file a, .attach_file span{background:#a5a5a5;float:left;display:block;text-decoration:none;padding:0 7px;line-height:17px;color:#fff;border:solid 1px #fff;}
.attach_file a:hover{background:#398DD8;}
.attach_file span{margin-left:1px;}
Я конечно не дизайнер, поэтому "придумать" смог только так, по мне вышло довольно не плохо.
В принципе вот и все, но мне бы хотелось разобрать сам скрипт
if ($(".attachment.possible_to").length > 0)
Проверяем на наличие добавленных файлов в новости
$('.attachments').append('<br/>Прикрепленные файлы:<br/>')
этим кодом мы добавляем заголовок нашему блоку.
var link = $(this).find('a').attr('href');
name = $(this).find('a').text();
size = $(this).find('.size').text();
count = $(this).find('.dcount').text();
объявляем переменные, собственно в них хранятся:
link - ссылка на скачку файла;
name - название;
size - его размер и
count - количество скачавших.
$('.attachments').append('<div class="attach_file"><a href="'+link+'">Скачать</a><span>'+name+'</span><span>Размер: '+size+'</span><span>Скачиваний: '+count+'</span></div><br/>');
здесь мы уже выводим наши файлы в блок.
$('.attachment.possible_to').remove();
Удаляем все файлы из нашей новости, тем самым они остаются в нашем списке прикрепленных файлов. Если это не требуется, то без проблем можно удалить.
Автор: Arteom
Комментариев 0