Простот вариант, не претендует на игдеальное решение:
Игдем по пути: 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 } ?>