pdoResources, pdoPage, Masonry
Доброго всем дня и всяческих успехов)))
Поделитесь пожалуйста решением связки pdoResources, pdoPage, Masonry.
Предварительно подключаем скрипты Masonry
Поделитесь пожалуйста решением связки pdoResources, pdoPage, Masonry.
[[!pdoPage?
&parents=`4`
&ajaxMode=`button`
&limit=`5`
&ajaxTplMore=`tplAjaxButton`
&depth=`1`
&tpl=`tplInterieri`
&includeTVs=`projectFaceImg,yearProgect`
&sortdir=`ASC`
&sortby=`menuindex`
]]
Пробую вызывать таким образом.Предварительно подключаем скрипты Masonry
<script src="[[++assets_url]]js/masonry/imagesloaded.pkgd.min.js"></script>
<script src="[[++assets_url]]js/masonry/masonry.pkgd.min.js"></script>
<script>
//этот код срабатывает когда мы открываем страницу в первый раз
$(document).ready(function() {
var $container = $(".masonry-container");
$container.imagesLoaded(function () {
$container.masonry({
columnWidth: 1,
itemSelector: ".item"
});
});
});
// этот код призван отработать, когда мы нажимаем на кнопку подгрузки ресурсов
// в моем случае это tplAjaxButton (<button class="btn btn-default btn-more">Показать еще 10</button>)
$(document).on('pdopage_load', function() {
var $container = $(".masonry-container");
$container.imagesLoaded(function () {
$container.masonry({
columnWidth: 1,
itemSelector: ".item"
});
});
});
</script>
С такой конструкцией новые ресурсы выводятся поверх старых, если убрать один из кусков кода, то все начинает работать. Комментарии: 4
Возможно, это обсуждение поможет
Спасибо большое благодаря вам все получилось.
Вот решение
$(document).ready(function() {
var $container = $(".masonry-container");
$container.imagesLoaded(function () {
$container.masonry({
columnWidth: 1,
itemSelector: ".item"
});
});
});
$(document).on('pdopage_load', function() {
var $container = $(".masonry-container");
// вся вишка сводится к добавлении этой строки
$container.masonry('reloadItems');
//конец добавленной строки
$container.imagesLoaded(function () {
$container.masonry({
columnWidth: 1,
itemSelector: ".item"
});
});
});
Тоже пытался заставить работать masonry с подгруппой через pdoPage, но по непонятным причинам, не хотел инициализироваться плагин стандартным способом:
Вот финальный код:
$(document).on('pdopage_load', function (e, config, response) {
var $grid = $(".masonry");
$grid.masonry('reloadItems');
$grid.masonry( 'layout' );
});
Давая небольшую задержку через setTimeout, заработало на ура. Вот финальный код:
$(document).ready(function () {
/* masonry */
var $grid = $('.masonry').masonry({
itemSelector : '.masonry-item',
columnWidth : '.masonry-item',
gutter : 15,
percentPosition : true,
transitionDuration: '0'
});
/* pdopage_load */
$(document).on('pdopage_load', function (e, config, response) {
function masonryUpd () {
var $grid = $(".masonry");
$grid.masonry('reloadItems');
$grid.masonry( 'layout' );
}
setTimeout(masonryUpd, 300);
});
});
Что странно. По идее не нужно никакой задержки.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.