Добавляем виртуальный "путь" к скачиваемому файлу.
Для примера, пусть выводятся эл-ты в XSL:
...
<ul>
<xsl:for-each select="informationsystem_item">
<li>
<a class="download" href="{name}.pdf" data-id="{@id}"><xsl:value-of select="name"/></a>
</li>
</xsl:for-each>
</ul>
...
Добавляем перехват "кликов" через JS:
$(function(){
var downloadBtns = $('li a.download');
downloadBtns.on('click',function(e){
e.preventDefault();
var self = $(this);
var id = self.data('id');
var form = $('<form />', {method: 'post', style: 'display: none;'});
$('<input />', {type: 'hidden', name: 'action', value: 'download'}).appendTo(form);
$('<input />', {type: 'hidden', name: 'id', value: id}).appendTo(form);
form.appendTo('body').submit();
});
});
Добавляем обработчик в настройки динамической страницы или ТДС:
<?php
...
$itemId = Core_Array::getRequest('id', 0);
if ($action == 'download' && $itemId)
{
Core_File::download(
// Путь к физическому файлу на сервере
$oItem->getItemPath() . $oItem->image_large,
// Фиктивное название, под которым будет скачиваться файл
urlencode($oItem->name . '.' . Core_File::getExtension($oItem->image_large),
array('attachment')
);
exit();
}
...