Mini: PHP-кастомизация — передаем HTML-код в модальное окно
Этот пример создан для улучшения понимания принципов работы Фотогалереи. Он поможет научиться решать схожие задачи.
Задача №1: научиться передавать wiki-код в окно с фотографией
Решение задачи состоит в создании Mini-пресета, адаптированного для синтаксиса https://fotorama.io/docs/4/html/
Будем использовать комбинацию с атрибутом data-img
так, чтобы HTML-код можно было разместить поверх изображения. Этом случае, передавая в атрибут путь до полноразмерного изображения, в самом блоке мы сможем разместить любой HTML-код.
Необходимый PHP-код (из файла /local/Cooks.Wikirama-Demos-Mini-PHPCustomization-AddHTML.php ):
$FmtPV['$UploadsUrl'] = '$_SERVER["HTTP_HOST"]."/uploads"'; // host without HTTP/HTTPS $HTMLHeaderFmt['styles']['Mini'] = "<style> .ph-fotoramer { font-size: 125%; background: rgba(222, 222, 222, 0.7); } </style>"; // some CSS $Mini["LinkFmt3"] = "<div class='col-xs-4'> <a href='%2\$s' class='ph-mini' id='transID_%2\$s' %3\$s><img src='%1\$s'></a> </div>";
$UploadsUrl
нужен потому, что движок PmWiki превращает в ссылку любой текст, начинающийся с http* , а для атрибута data-img нужен чистый текст.
$Mini["LinkFmt3"]
переопределяет дефолтный Mini3: просто убирая часть, содержавшую ссылку на исходную фотографию.
В результате применения этого PHP-кода, команда Mini3:
по прежнему генерирует превью картинки, но больше не генерирует транслируемую в Фотораму ссылку на полноразмерную картинку. Это сделано затем, что вместо полноразмерной картинки мы будем использовать вручную созданный <div> c data-img :
Mini3:Doom_20140302.jpg (:div class='ph-fotoramer hidden' data-img="[=http://=]{$UploadsUrl}/{$Group}/{$Name}/Doom_20140302.jpg":) Это wiki-код для первого блока: * [[http://www.ph-ph.ru|Ссылки работают!]] * списки тоже работают. * работать будет вся базовая вики-разметка Но, конечно, вставлять сюда вызов других фотогалерей не стоит :) А вот таблицы можно попробовать. (:divend:) Mini3:Doom_20140514.jpg (:div class='ph-fotoramer hidden' data-img="[=http://=]{$UploadsUrl}/{$Group}/{$Name}/Doom_20140514.jpg":) Пробуем, вот таблица: || class="table table-bordered" ||!ЗагЛев ||! ЗагЦент ||! ЗагПрав|| ||cell 1 || cell 2 || cell 3|| (:divend:) |
[=http://=]
- позволяет обойти дефолтное поведение PmWiki: автоматическое преобразование в ссылку;
{$UploadsUrl}
- это PTV без http, определенная в php-коде выше.
Задача №2: научиться передавать текст не в caption, а в свой собственный блок в окне с фотографией
Эту задачу будем решать через модификацию Mini4: .
Mini4:[= Doom_20140522_005210.jpg"Живые какодемоны" Doom_20140506_021640.jpg"Мертвые какодемоны" Doom_20140606_232515.jpg Doom_20140621_234143.jpg =]"Дефолтное описание, дается всем фото без своего уникального описания" |
Общая HTML-ссылка
Живые какодемоны
Общая HTML-ссылка
Мертвые какодемоны
Общая HTML-ссылка
Дефолтное описание, дается всем фото без своего уникального описания
Общая HTML-ссылка
Дефолтное описание, дается всем фото без своего уникального описания
|
Mini4:Doom_2015*"Общее описание для группы фотографий:" |
Общая HTML-ссылка
Общее описание для группы фотографий:
Общая HTML-ссылка
Общее описание для группы фотографий:
|
Необходимая крупица PHP-кода (из файла /local/Cooks.Wikirama-Demos-Mini-PHPCustomization-AddHTML.php ):
$Mini["LinkFmt4"] = "<div class='col-xs-3'> <a href='%2\$s' class='ph-mini' id='transID_%2\$s' %3\$s><img src='%1\$s'></a> <div class='ph-fotoramer' data-img='%2\$s' data-thumb='%1\$s'> <a class='btn btn-primary' href='https://www.ph-ph.ru/' target='_blank'>Общая HTML-ссылка</a> %5\$s </div> </div>";
Суть состоит в замене <a class='ph-fotoramer'
на <div class='ph-fotoramer'
, внутрь которого можно добавлен собственный HTML-код, а также передается title
изображения..