Пользователи uboom Опубликовано 20 октября Пользователи Опубликовано 20 октября Представляю вашему вниманию модуль рейтинг ожиданий фильмов/сериалов/дорам/аниме. С его помощью вы можете реализовать систему голосований пользователями за будущие премьеры, на основе которых у анонсов будет формироваться рейтинг ожиданий. Принцип работы: В админке выбираем категорию новостей, в которых размещены наши анонсы/будущие премьеры. В полной новости таких новостей появится шкала рейтинга ожиданий, с возможностью голосования при помощи двух кнопок - жду или не жду. Нажав на одну из кнопок по средствам ajax новости присваивается рейтинг, шкала обновляется без перезагрузки страницы. Нажать посетитель может лишь раз, менять свою оценку он не сможет. Есть отдельная страница на сайте, на которой по убыванию размещены самые ожидаемые премьеры на сайте. Рано или поздно фильм/сериал будет опубликован у вас на сайте, значит нам необходимо убрать его из рейтинга ожиданий. Для этого подключаем по крону скрипт, который осуществляет проверку по ожидаемым премьерам - если у новости была убрана выбранная в админке категория анонсов, то новость удаляется из рейтинга ожиданий Предусмотрены стили для темной версии сайта. Кеширование. Привязок к домену нет. Ионкуб не нужен. Способ установки RewriteRule ^expected(/?)$ index.php?do=expected [L] RewriteRule ^expected/([0-9]+)(/?)$ index.php?do=expected [L] Код css /* Модуль рейтинг ожидания премьер */ .movie-rate-watchlist .watchlist_btn_success i { color: #f60; } .movie-rating__green-number { color: #093; } .movie-rating__grey-number { color: #aaa; } .movie-rating__red-number { color: red; } .movie-expected { margin-bottom: 35px; } .movie-expected__actions { display: flex; align-items: flex-end; } .movie-expected__wrapper { display: flex; } .movie-expected__percent { color: #093; font-size: 24px; line-height: 27px; font-weight: 500; } .movie-expected__count { color: rgba(255, 255, 255, 0.4); margin-left: 8px; font-size: 18px; line-height: 22px; align-self: flex-end; } .movie-expected__btns { margin: 0 0 0 20px; align-self: flex-end; } .movie-expected__btns button { margin-right: 10px; padding: 5px 11px 5px 8px; border-radius: 3px; color: #333; background: #fff; font-size: 13px; font-weight: 500; line-height: 16px; border: 1px solid rgba(0,0,0,.1); -webkit-box-shadow: 0 1px 2px rgb(0 0 0 / 4%); box-shadow: 0 1px 2px rgb(0 0 0 / 4%); cursor: pointer; text-transform: none; } .movie-expected__btns button:hover { opacity: 0.8; } .movie-expected__btns button:active { -webkit-transform: translateY(1px); transform: translateY(1px); } .movie-expected__wait.success { background-color: #093; color: white; } .movie-expected__nowait.success { background-color: #f66600; color: white; } .movie-expected__wait.success i, .movie-expected__nowait.success i { color: white; } .movie-expected__wait i { color: #093; margin-right: 3px; } .movie-expected__nowait i { color: #f66600; margin-right: 3px; } .movie-expected__most { margin-top: 9px; font-size: 14px; text-decoration: none; color: rgb(255, 255, 255); margin-left: auto; } .movie-expected__most:hover { color: #f66600; } .movie-expected__bar { height: 15px; width: 100%; color: #fe000b; border-radius: 0 2px 2px 0; background-color: rgb(255 206 173); margin-bottom: 8px; } .movie-expected__green { height: 15px; width: 90%; position: relative; color: #093; border-radius: 2px 0 0 2px; background-color: rgb(134 199 156); } .movie-expected__green::after { display: block; width: 2px; height: 22px; content: ""; background: #093; position: absolute; right: 0; top: -3px; } @media only screen and (max-width:525px){ .movie-expected__most { margin-left: 0; } .movie-expected__actions { flex-direction: column; align-items: flex-start; } } @media only screen and (max-width:480px){ .movie-expected { margin-bottom: 25px; } } @media only screen and (max-width:360px){ .movie-expected__percent { font-size: 21px; } .movie-expected__count { font-size: 16px; } } .movie-rated__list { margin-bottom: 35px; } .movie-rated__list .watchlist_parent { border-radius: unset; cursor: unset; width: unset; display: flex; } .movie-rated__item { display: flex; padding: 20px; position: relative; border-radius: 5px; } .movie-rated__list .movie-rated__item.movie-rated__item-is-watching { background-color: rgba(255,102,0,0.13); } .movie-rated__item .movie-item__rating { top: 6px; left: -7px; } .movie-rated__item::before { content: ''; display: block; background: rgba(0,0,0,0.08); position: absolute; left: 20px; right: 20px; height: 1px; width: calc(100% - 40px); top: 0; -webkit-transition: opacity 0.15s ease-out; transition: opacity 0.15s ease-out; } .movie-rated__item:hover::before, .movie-rated__item:hover+.movie-rated__item::before { opacity: 0; } .movie-rated__item:hover { background: #f7f7f7; } .movie-rated__item:last-of-type { border-bottom: none; } .movie-rated__parent { display: flex; margin-right: auto; } .movie-rated__img { height: 95px; width: 65px; margin-right: 15px; position: relative; flex-shrink: 0; } .movie-rated__parent .movie-rated__img img { width: 100%; height: 100%; object-fit: cover; border-radius: 3px; } .movie-rated__info { display: flex; flex-direction: column; } .movie-rated__name { font-size: 16px; font-weight: 500; line-height: 20px; margin-bottom: 4px; color: #1f1f1f; } .movie-rated__other-names { line-height: 18px; font-size: 13px; color: #333; margin-bottom: 3px; } .movie-rated__genres { font-size: 13px; color: #777; } .movie-rated__number { font-size: 16px; font-weight: 500; line-height: 20px; margin-right: 15px; color: #1f1f1f; min-width: 28px; } .movie-rated__rating { margin-right: 20px; margin-left: 10px; margin-top: 5px; flex-shrink: 0; } .profile__movie-list .movie-rated-rating { text-align: right; } .movie-rated-rating__number{ font-size: 15px; font-weight: 500; line-height: 1.2; margin-right: 6px; } .movie-rated-rating__count { color: #777; font-size: 11px; } .movie-rated__buttons { display: flex; align-items: center; margin-top: 5px; } .movie-rated__plus, .movie-rated__minus { background-color: #fff; height: 28px; width: 28px; color: #333; display: flex; justify-content: center; align-items: center; border-radius: 3px; border: 1px solid #cccccc7a; font-weight: 500; } .movie-rated__plus:hover, .movie-rated__minus:hover { background-color: #f7f7f7; } .movie-rated__rating-count { margin:0 10px; color: #093; font-size: 0.8em; } .movie-rate-watchlist { color: #333; font-weight: 500; font-size: 13px; line-height: 1.23; display: flex; flex-shrink: 0; } .movie-rate-watchlist i { font-size: 0.8em; color: #333; } .movie-rate-watchlist button { border: solid 1px rgba(0,0,0,0.1); padding: 8px 10px; border-radius: 4px; cursor: pointer; background: #fff; height: 33px; color: #1f1f1f; text-transform: none; } .movie-rate-watchlist button:hover { background-color: #f7f7f7; } .movie-rate-watchlist .movie-rate-watchlist__will { border-right-color: rgba(0,0,0,0.1); border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-right: none; } .movie-rated__watchlist .movie-rate-watchlist__remove { width: 207px; border-right: 1px solid rgba(0,0,0,0.1); border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .movie-rate-watchlist__will i { margin-right: 7px; } .movie-rate-watchlist .movie-rate-watchlist__seen { margin-right: 7px; border-top-left-radius: unset; border-bottom-left-radius: unset; } .movie-rated__upcoming .movie-rate-watchlist__remove { width: 159px; } .movie-rated__upcoming .movie-rate-watchlist__seen { margin-right: 0; } @media only screen and (max-width:768px){ .movie-rated__item { flex-direction: column; padding: 20px 0; border-radius: 0; } .movie-rated__parent { display: flex; margin-bottom: 10px; } .movie-rated__item-is-watching { margin: 0 -15px; padding-left: 15px; padding-right: 15px; } .movie-rated__item-is-watching .movie-rated__buttons, .movie-rated__item-is-watching .movie-rated__number { right: 15px; } .movie-rated__buttons { position: absolute; bottom: 20px; right: 0; } .movie-rate-watchlist button { height: 28px; padding: 5px 7px; } .movie-rated__name { padding-right: 35px; } .movie-rated__number { color: #595959; background-color: rgba(89,89,89,.05); text-align: center; position: absolute; top: 20px; right: 0px; font-size: 14px; font-weight: 400; margin-right: 0; border-radius: 3px; } .movie-rate-watchlist__remove { width: 155px; } } @media only screen and (max-width:320px){ .movie-rate-watchlist .movie-rate-watchlist__seen { margin-right: 5px; } } .movie-rated__rating__favor { display:flex; } /* Темный стиль для рейтинга ожидания премьер */ .dark .movie-expected__count, .dark .movie-rate-watchlist i { color: #868e96; } .dark .movie-expected__btns button { background-color: #1a1a1a; color: #868e96; border-color: #191a1a; } .dark .movie-rated__item:hover, .dark .suggestion__item:hover { background-color: #272626; } .dark .movie-rated__item::before, .dark .profile__item:hover { background: rgb(0 0 0 / 13%); } .dark .movie-rate-watchlist button { background-color: #1a1a1a; color: #868e96; border-color: #191a1a; } .dark .movie-rated__name, .dark .movie-rated__number, .dark .main-title, .dark .top-description { color: #fff; } Код JavaScript function changeTheme(){setTimeout(function(){if($('body').hasClass('dark')){$('link[href="/templates/movibazar-light-ria3/css/commondark.css"]').attr("href","/templates/movibazar-light-ria3/css/common.css");$('body').removeClass('dark');setcookie('theme-class','light');}else{$('link[href="/templates/movibazar-light-ria3/css/common.css"]').attr("href","/templates/movibazar-light-ria3/css/commondark.css");$('body').addClass('dark');setcookie('theme-class','dark');}},16);} function ExpectedClick(post_id,reaction) {$.get(dle_root+"engine/ajax/controller.php?mod=anons_rating",{post_id:post_id,reaction:reaction,user_hash:dle_login_hash},function(data){if(data.status=="done"){$('#expected_percent_'+post_id).html(data.rating+'%');$('#expected_count_'+post_id).html(data.count);document.getElementById("expected_bar_"+post_id).style="width:"+data.rating+"%;";}else{DLEalert(data.error,'Внимание');}},"json");} function ExpectedList(post_id,type) {if(dle_group==5){DLEalert('Доступо только авторизованным пользователям',dle_info);return false;} $.get(dle_root+"engine/ajax/controller.php?mod=favorites",{fav_id:post_id,action:type,skin:dle_skin,alert:0,user_hash:dle_login_hash},function(data){if(data.success){if(type=='plus'){document.getElementById('watchlist_seen_'+post_id).style.display='block';document.getElementById('watchlist_noseen_'+post_id).style.display='none';}else if(type=='minus'){document.getElementById('watchlist_seen_'+post_id).style.display='none';document.getElementById('watchlist_noseen_'+post_id).style.display='block';}}else if(data.error){DLEalert(data.content,dle_info);}},"json");return false;} function Ajaxsend(mod,method,data,callback,error,always,options){data||(data={});data.method=method;data.user_hash=dle_login_hash;data.skin=dle_skin;var config={DLEloading:true,};if(typeof options=='object'){for(var i in options){config[i]=options[i];}} $.ajax({url:dle_root+'engine/ajax/controller.php?mod='+mod,type:'POST',dataType:'json',data:data,}).done(function(d){if(d.error){if(error){error();}else{DLEalert(d.errorinfo,'Внимание');}}else{callback&&callback(d);}}).fail(function(e){if(error){error(e);}else{DLEalert(e.responseText,'Internal server error')}}).always(function(){always&&always();});} function show_react(id){var elem=document.querySelector("#react_wrapper_"+id);if(elem.classList.contains("show_react"))elem.classList.remove("show_react");else elem.classList.add("show_react");} function hide_react(id){var elem=document.querySelector("#react_wrapper_"+id);elem.classList.remove("show_react");} function do_react(id,reaction){Ajaxsend('do_react','reaction',{comm_id:id,reaction:reaction},function(d){$('#all_reactions_'+id).html(d.reaction_box);var elem=document.querySelector("#react_wrapper_"+id);elem.classList.remove("show_react");})} function all_react(id){Ajaxsend('do_react','all_reaction',{comm_id:id},function(d){var shadow='none';$('#comm_reactions_show').remove();$('body').prepend("<div id='comm_reactions_show' title='Реакции' class='ui-dialog-content ui-widget-content' style='display:none'></div>");var wh=$(window).height()*0.5;var ww=$(window).width()*0.5;if(ww>1024){ww=1024;} $('#comm_reactions_show').dialog({autoOpen:true,width:ww,height:wh,resizable:false,dialogClass:"modalfixed dle-popup-quickedit",dragStart:function(event,ui){shadow=$(".modalfixed").css('box-shadow');$(".modalfixed").css('box-shadow','none');},dragStop:function(event,ui){$(".modalfixed").css('box-shadow',shadow);},close:function(event,ui){$(this).dialog('destroy');$('#modal-overlay').fadeOut(function(){$('#modal-overlay').remove();});}});if($(window).width()>830&&$(window).height()>530){$('.modalfixed.ui-dialog').css({position:"fixed"});$('#comm_reactions_show').dialog("option","position",{my:"center",at:"center",of:window});} $('#comm_reactions_show').css({overflow:"auto"});$('#comm_reactions_show').css({'overflow-x':"hidden"});$("#comm_reactions_show").html(d.all_reactions);})} modul-rejting-ozhidanij.zip 1 Цитата
Пользователи 777 Опубликовано 20 октября Пользователи Опубликовано 20 октября 1 час назад, uboom сказал: Представляю вашему вниманию модуль рейтинг ожиданий фильмов/сериалов/дорам/аниме. С его помощью вы можете реализовать систему голосований пользователями за будущие премьеры, на основе которых у анонсов будет формироваться рейтинг ожиданий. Принцип работы: В админке выбираем категорию новостей, в которых размещены наши анонсы/будущие премьеры. В полной новости таких новостей появится шкала рейтинга ожиданий, с возможностью голосования при помощи двух кнопок - жду или не жду. Нажав на одну из кнопок по средствам ajax новости присваивается рейтинг, шкала обновляется без перезагрузки страницы. Нажать посетитель может лишь раз, менять свою оценку он не сможет. Есть отдельная страница на сайте, на которой по убыванию размещены самые ожидаемые премьеры на сайте. Рано или поздно фильм/сериал будет опубликован у вас на сайте, значит нам необходимо убрать его из рейтинга ожиданий. Для этого подключаем по крону скрипт, который осуществляет проверку по ожидаемым премьерам - если у новости была убрана выбранная в админке категория анонсов, то новость удаляется из рейтинга ожиданий Предусмотрены стили для темной версии сайта. Кеширование. Привязок к домену нет. Ионкуб не нужен. Способ установки не мог найти modul-rejting-ozhidanij.zipНедоступно От души за модуль ) Цитата
Пользователи Alexbik Опубликовано 24 октября Пользователи Опубликовано 24 октября А как сделать саму страничку, подскажите Цитата
Пользователи uboom Опубликовано 25 октября Автор Пользователи Опубликовано 25 октября [anons_rating] <h1 class="top-title">Рейтинг ожидания</h1> {anons_rating} [/anons_rating] Цитата
Пользователи DarkLane Опубликовано 27 октября Пользователи Опубликовано 27 октября Модуль не завершен - отсутствуют файлы expected.tpl и expected_shortstory.tpl. Цитата
Пользователи 777 Опубликовано 29 октября Пользователи Опубликовано 29 октября (изменено) Новая инструкция 2 часа понадобилось мне чтобы сделать 1е создаем категорию Имя: анонсы Альтернативное имя: expected Шаблон короткой новости: expected_shortstory Шаблон полной новости: expected 2e создаем два файла в шаблоне expected.tpl внутрь всталяем [anons_rating]{anons_rating}[/anons_rating] expected_shortstory.tpl внутрь всталяем и доделайте <div class="movie-rated__item movie-rated__item-is-watching"> <!-- Изображение фильма --> <div class="movie-rated__img"> <img src="{image-1}" loading="lazy" alt="{title}"> </div> <!-- Информация о фильме --> <div class="movie-rated__info"> <div class="movie-rated__name"> <a href="{full-link}">{title}</a> </div> <div class="movie-rated__other-names">{title}</div> <div class="movie-rated__genres">Жанры 3</div> </div> <!-- Номер позиции в списке --> <div class="movie-rated__number">3</div> <!-- Рейтинг фильма --> <div class="movie-rated__rating"> <span class="movie-rated-rating__number">7.5</span> <span class="movie-rated-rating__count">голосов</span> </div> <!-- Кнопки для управления избранным --> <div class="movie-rated__buttons"> <!-- Кнопка добавления в избранное --> <button class="movie-rated__plus" onclick="ExpectedList(post_id, 'plus')"> <i class="fas fa-plus"></i> добавление </button> <!-- Кнопка удаления из избранного --> <button class="movie-rated__minus" onclick="ExpectedList(post_id, 'minus')"> <i class="fas fa-minus"></i> удаление </button> </div> </div> 4е js в самый вниз function ExpectedClick(post_id, reaction) { $.get(dle_root + "engine/ajax/controller.php?mod=anons_rating", { post_id: post_id, reaction: reaction, user_hash: dle_login_hash }, function(data) { if (data.status == "done") { $('#expected_percent_' + post_id).html(data.rating + '%'); $('#expected_count_' + post_id).html(data.count); document.getElementById("expected_bar_" + post_id).style = "width:" + data.rating + "%;"; } else { DLEalert(data.error, 'Внимание'); } }, "json"); } function ExpectedList(post_id, type) { if (dle_group == 5) { DLEalert('Доступо только авторизованным пользователям', dle_info); return false; } $.get(dle_root + "engine/ajax/controller.php?mod=favorites", { fav_id: post_id, action: type, skin: dle_skin, alert: 0, user_hash: dle_login_hash }, function(data) { if (data.success) { if (type == 'plus') { document.getElementById('watchlist_seen_' + post_id).style.display = 'block'; document.getElementById('watchlist_noseen_' + post_id).style.display = 'none'; } else if (type == 'minus') { document.getElementById('watchlist_seen_' + post_id).style.display = 'none'; document.getElementById('watchlist_noseen_' + post_id).style.display = 'block'; } } else if (data.error) { DLEalert(data.content, dle_info); } }, "json"); return false; } function Ajaxsend(mod, method, data, callback, error, always, options) { data || (data = {}); data.method = method; data.user_hash = dle_login_hash; data.skin = dle_skin; var config = { DLEloading: true, }; if (typeof options == 'object') { for (var i in options) { config[i] = options[i]; } } $.ajax({ url: dle_root + 'engine/ajax/controller.php?mod=' + mod, type: 'POST', dataType: 'json', data: data, }).done(function(d) { if (d.error) { if (error) { error(); } else { DLEalert(d.errorinfo, 'Внимание'); } } else { callback && callback(d); } }).fail(function(e) { if (error) { error(e); } else { DLEalert(e.responseText, 'Internal server error') } }).always(function() { always && always(); }); } function show_react(id) { var elem = document.querySelector("#react_wrapper_" + id); if (elem.classList.contains("show_react")) elem.classList.remove("show_react"); else elem.classList.add("show_react"); } function hide_react(id) { var elem = document.querySelector("#react_wrapper_" + id); elem.classList.remove("show_react"); } function do_react(id, reaction) { Ajaxsend('do_react', 'reaction', { comm_id: id, reaction: reaction }, function(d) { $('#all_reactions_' + id).html(d.reaction_box); var elem = document.querySelector("#react_wrapper_" + id); elem.classList.remove("show_react"); }) } function all_react(id) { Ajaxsend('do_react', 'all_reaction', { comm_id: id }, function(d) { var shadow = 'none'; $('#comm_reactions_show').remove(); $('body').prepend(""); var wh = $(window).height() * 0.5; var ww = $(window).width() * 0.5; if (ww > 1024) { ww = 1024; } $('#comm_reactions_show').dialog({ autoOpen: true, width: ww, height: wh, resizable: false, dialogClass: "modalfixed dle-popup-quickedit", dragStart: function(event, ui) { shadow = $(".modalfixed").css('box-shadow'); $(".modalfixed").css('box-shadow', 'none'); }, dragStop: function(event, ui) { $(".modalfixed").css('box-shadow', shadow); }, close: function(event, ui) { $(this).dialog('destroy'); $('#modal-overlay').fadeOut(function() { $('#modal-overlay').remove(); }); } }); if ($(window).width() > 830 && $(window).height() > 530) { $('.modalfixed.ui-dialog').css({ position: "fixed" }); $('#comm_reactions_show').dialog("option", "position", { my: "center", at: "center", of: window }); } $('#comm_reactions_show').css({ overflow: "auto" }); $('#comm_reactions_show').css({ 'overflow-x': "hidden" }); $("#comm_reactions_show").html(d.all_reactions); }) } и css вставте будет по ссылке доступно /expected/ Изменено 29 октября пользователем 777 1 Цитата
Пользователи 777 Опубликовано 5 ноября Пользователи Опубликовано 5 ноября Вот готовая версия работает 100% expected.zip Цитата
slivator Опубликовано 14 ноября Опубликовано 14 ноября В 05.11.2024 в 09:45, 777 сказал: Вот готовая версия работает 100% expected.zip 21.16 kB · 3 загрузки Я не понял вот это 6). В main.tpl найдите у тебя пример у все по разному, добавьте класс count-items Помоги! Цитата
Пользователи DarkLane Опубликовано 15 ноября Пользователи Опубликовано 15 ноября 19 часов назад, slivator сказал: Я не понял вот это 6). В main.tpl найдите у тебя пример у все по разному, добавьте класс count-items Помоги! На самом деле он должен работать с [available=cat|favorites] <div class="sect__content count-items">{content}</div> [/available] Но это не обязанность, у меня как у Сиси <div class="sect__content count-items">{content}</div> И он прекрасно работает без [available=cat|favorites] С другой стороны, я собираюсь попробовать переделать весь дизайн и прогресс-бар, особенно в extended_shortstory, при наведении мыши на него все бланшируется, это некрасиво и невозможно убрать. поэтому в css я удалил все, что связано с :hover К вашему сведению, код htaccess бесполезен - он нам не нужен. Цитата
slivator Опубликовано 15 ноября Опубликовано 15 ноября 3 минуты назад, DarkLane сказал: На самом деле он должен работать с [available=cat|favorites] <div class="sect__content count-items">{content}</div> [/available] Но это не обязанность, у меня как у Сиси <div class="sect__content count-items">{content}</div> И он прекрасно работает без [available=cat|favorites] С другой стороны, я собираюсь попробовать переделать весь дизайн и прогресс-бар, особенно в extended_shortstory, при наведении мыши на него все бланшируется, это некрасиво и невозможно убрать. поэтому в css я удалил все, что связано с :hover К вашему сведению, код htaccess бесполезен - он нам не нужен. ну в принципе интересная задумка! как раз для анонсов то что нужно Цитата
Пользователи 777 Опубликовано 16 ноября Пользователи Опубликовано 16 ноября (изменено) count-items класс который идёт для разделов категоии , нужен для нумерованный список 1,2,3,4 и.т.д для краткой его надо обернуть <div class="count-items "> {content} </div> Вот пример от шаблона webrambo <main class="content"> {info} [not-available=main|cat|search]<div class="speedbar ws-nowrap">{speedbar}</div>[/not-available] [available=main]{include file="main-page.tpl"}[/available] [available=cat|favorites] <section class="sect"> <div class="sect__header d-flex ai-center r-gap-20 c-gap-20"> [available=cat]<h1 class="sect__title flex-1">{category-title}</h1>[/available] [available=favorites]<h1 class="sect__title flex-1">Ваше избранное</h1>[/available] [available=cat]<button class="filter-block__title js-show-filter fal fa-sliders-h">Фильтр</button>[/available] </div> [available=cat]{include file="main-filter.tpl"}[/available] <div class="sect__content grid-items count-items" id="grid-items"> {content} </div> </section> [/available] [not-available=main|cat|favorites]<div class="grid-items">{content}</div>[/not-available] {include file="main-seo.tpl"} </main> Изменено 16 ноября пользователем 777 1 Цитата
slivator Опубликовано 16 ноября Опубликовано 16 ноября 4 часа назад, 777 сказал: count-items класс который идёт для разделов категоии , нужен для нумерованный список 1,2,3,4 и.т.д для краткой его надо обернуть <div class="count-items "> {content} </div> Вот пример от шаблона webrambo <main class="content"> {info} [not-available=main|cat|search]<div class="speedbar ws-nowrap">{speedbar}</div>[/not-available] [available=main]{include file="main-page.tpl"}[/available] [available=cat|favorites] <section class="sect"> <div class="sect__header d-flex ai-center r-gap-20 c-gap-20"> [available=cat]<h1 class="sect__title flex-1">{category-title}</h1>[/available] [available=favorites]<h1 class="sect__title flex-1">Ваше избранное</h1>[/available] [available=cat]<button class="filter-block__title js-show-filter fal fa-sliders-h">Фильтр</button>[/available] </div> [available=cat]{include file="main-filter.tpl"}[/available] <div class="sect__content grid-items count-items" id="grid-items"> {content} </div> </section> [/available] [not-available=main|cat|favorites]<div class="grid-items">{content}</div>[/not-available] {include file="main-seo.tpl"} </main> Спасибо очень полезно. Проверял на dle 17.2 все норм встало 1 Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.