Собственно — это вопрос, и вопрос в следующем. Возникло желание изменить демонстрацию изображений фотосета с «prettyPhoto» на обычные модальные окна от «bootstrap». И вот, в ходе работы по реализации данного функционала, у меня возникло сомнение — не является ли дополнительной нагрузкой (влияющей, в частности, на время загрузки страницы) использование «include file», скажем, в «списке» следующей конструкции:
Конкретный пример
<div class="">
<ul class="">
<li class="">
<a href="#" data-toggle="modal" data-target="#{$oPhoto->getId()}">
<img src="{$oPhoto->getUrl('x80')}" />
</a>
</li>
</ul>
{include file="modals/modal.open_img.tpl"}
</div>
Думаю, содержание шаблона «modal.open_img.tpl» и так понятно — это стандартное модальное окно с выводом самого изображения по его «id» .
Ключевая часть шаблона модального окна
<div class="modal" id="{$oPhoto->getId()}">
[...]
<div class="modal-body">
<img src="{$oPhoto->getUrl()}" />
</div>
[...]
</div>
— как мы понимаем, данный список может содержать различное количество элементов, в зависимости от того, сколько изображений было загружено в сам фотосет. И, соответственно, опциональная задача {include file="modals/modal.open_img.tpl"} отработает каждый из элементов списка при загрузке страницы, содержащей сам этот список. Налицо существенное влияние на время загрузки страницы полученного в результате кода, который теперь будет содержать в себе все модальные окна с изображениями относящимися к определенным элементам списка связанными по «id». Т.е., если количество элементов списка (изображений фотосета) — 30, то соответственно и код всех 30-ти модальных окон со всем содержимым будет подгружаться на странице со списком.
Правильно ли я всё понял? И есть ли какой-то грамотный выход из данной ситуации?
В данном случае, если волнует, не будет ли файл каждый раз считываться с диска — нет, не будет. Если есть 100 фото и, соответственно, 100 раз встречается директива {include...} с одним именем файла, то прочитан файл будет только один раз.
Другое дело, что на странице, в итоге, будет 100 совершенно одинаковых модальных окон, которые отличаются только ссылкой на изображение — вот это, конечно, уже не есть гуд. Вы ведь не стремитесь к тому, чтобы 100 окон одновременно были на экране, не так ли? Значит, модальное окно надо только один раз включать в шаблон. И писать небольшой скрипт, который по клику на миниатюру будет сначала подставлять нужную ссылку в модальное окно на большое изображение, а потом уже открывать само модальное окно.
Нужно обмозговать. Спасибо!