Простой вариант, не претендует на идеальное решение:
Идем по пути: catalog/controller, создаем новую папку, называем Download. Внутри нее создаем файл main.php.
В этот файл кладем следующий код:
<?php
class ControllerDownloadMain extends Controller {
public function index() {
$name = $this->request->get['pdf'] . ".pdf";
$path = "https://www.dropbox.com/s/" . $this->request->get['pdf'] . "?dl=1";
header("HTTP/1.1 200 OK");
header("Content-type: application/pdf");
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
$agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
$ie = preg_match('@MSIE ([0-9].[0-9]{1,2})@', $agent);
if ($ie){
header('
Content-Disposition: attachment; filename="' . $name . '"'
);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}else{
header('Content-Disposition: attachment;filename="' . $name . '"');
header('Pragma: no-cache');
}
readfile($path);
}
}
?>
В переменной $path меняем Dropbox на то, что Вам нужно
Во фронт вставляем ссылку вида:
<a href="https://site.ru/index.php?route=download/main&pdf=l1t1dicz8og1aa6">Ссылка</a>
Где l1t1dicz8og1aa6 идентификатор скачиваемого файла. Хранить его можем в каком-нибудь поле, например location
Тогда ссылка будет
<a href="https://site.ru/index.php?route=download/main&pdf=<?php echo $location; ?>">Ссылка</a>
Если файлов несколько, то вставляем их идентификаторы в поле (Location, например) через запятую
l1t1dicz8og1aa6,d5f1dicz8og1qd1,gfdg7fd65363
Во фронте пишем это:
<?php
$location = explode(",", $location);
foreach ($location as $pdfs) {
?>
<a href="https://site.ru/index.php?route=download/main&pdf=<?php echo $pdfs; ?>">Ссылка</a>
<?php } ?>