Kopusha |
|
---|---|
Мне надо на лету добавлять в выводимом html с помощью скрипта у картинок с определенным стилем определенный атрибут. Но в TPL комментариев эта конструкция <script>
document.addEventListener("DOMContentLoaded",function(){
$('._add-fancy-lone').attr('data-fancybox', 'gallery-lone-{COMMENTS_ROW_ID}');
});
</script>
дает ВСЕ комментарии с разными ID как одно последнее, теряется весь смысл.
Нужно для каждой картинки с стилем _add-fancy-lone в комментариях добавить аттрибут data-fancybox с уникальным значением для этого комментария. То есть Вася добавил 4 картинки и они собрали свою галерею из 4 картинок в фансибоксе, Петя потом еще 3 и его 3 крутятся в ротации отдельно от Васиных. У меня как ни пробую - всюду атрибут один. Пробовал вне цикла js ставить и через глобальную переменную туда пихать 0 толку ноль. {COMMENTS_ROW_ID} всегда один. Что то я не догоняю)
Все получают data-fancybox="gallery-lone-141" хотя у двух комментариев ID 140 141 как ни пихаю.
![]() Два разным коммента с разными ID естественно.
![]() И не могу добится что бы они не вместе в 1 карусели были. А по отдельности. Вот тут видно что это 2ая картинка из трех, а надо две отдельно и одна отдельно (разные комментарии - разные фансибоксы.)
![]() Added 2 minutes later: UPD!!! Я в цикле луплю идентичные яваскрипты и последний перезаписывает предыдущие. Есть у кого то мысли как можно выкрутится? Added 34 seconds later: Я же не могу ВНЕ цикла получить COMMENTS_ROW_ID уникальность? Added 1 hour later: Вот так тоже что логично не получается(((( <!-- BEGIN: COMMENTS_ROW -->
<script>
var commentID = '{COMMENTS_ROW_ID}';
</script>
<!-- END: COMMENTS_ROW --> <script>
document.addEventListener("DOMContentLoaded",function(){
$(".comment").click(function() {
alert(commentID);
});
});
</script>
Added 1 hour later: Решил кардинально через // Hack for fancybox
document.addEventListener("DOMContentLoaded",function(){
var fancyiii=0;
$("._add-fancy-lone").each(function(){
fancyiii++;
$(this).attr("data-fancybox","gallery-lone-"+fancyiii);
});
});
Мне РАЗНЫЕ надо было циферки...Теперь с коммента на другой коммент не перескакивает карусель фансибокса. Но с вопросом выше так и не понял как делать. Если у кого будет терпение расписать буду благодарен)
|
|
This post was edited by Kopusha (2017-12-12 14:54, 7 years ago) |
Macik |
|
|
---|---|---|
`COMMENTS_ROW_ID` меняется только внутри шаблона комемнтария при проходе цикла вывода комментов. Поэтому один из вариантов примерно такой: - в шаблоне комментариев сделать контейнер с data-id соотв. ID коммента,
В скрипте (после загрузки всей ленты комментов, или при ее обновлении) пробегаем по всем элементам `.commentbox` и назначаем соотв. ID внутренним элментам типа `img`. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Kopusha |
|
|
---|---|---|
|
Roffun |
|
|
---|---|---|
#43185 Kopusha: Что за стиль такой ? Возможно имели ввиду class ? #43187 Kopusha: Возможно не успевает загрузиться параметр, я недавно для своих нужд делал галерею на js, тоже некоторые параметры не видело, оказалось нужно было вешать событие onload. Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|
Kopusha |
|
---|---|
В принципе сделал счетчиком простым - у 1 коммента id1, у второго id2 и тд - а не их родные id, тоже работает. А события пробовал разные-разные. |
Roffun |
|
---|---|
В comments.tpl код по умолчанию ? Картинки каким образом загружаются в комментарии или это просто ссылки ? Картинки являются ссылками, и у них нужно добавить параметр data- со своим классом + id комментария, я правильно понял ? Немного позже попытаюсь воспроизвести у себя ситуацию, когда код под рукой, удобнее решение видеть. Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|
Kopusha |
|
---|---|
#43190 Roffun: Тут кусок кода и пару мыслей) https://fex.net/#!080315840819
|
Roffun |
|
||||
---|---|---|---|---|---|
В общем придумал решение, правда тестировал на comments.tpl по умолчанию, а ссылку на файлик увидел уже после, если не разберетесь с примером, завтра на прикрепленном файле применю, а пока покажу пример реализации по умолчанию, в нем достаточно изменить:
на
и скрипт:
Это по умолчанию в comments.tpl:
Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|
Kopusha |
|
---|---|
#43192 Roffun: Working like a charm straight out of the box! Сам я так сложно смог бы js написать, спасибо большое. Added 2 minutes later: Кстати спрошу сразу что бы не забыть - вот к примеру мне этот кусочек js нужен исключительно в комментах. А бывают еще более редкие случаи - к примеру js только на 1 стенделоне плагина. По уму пихать его в код прямо в tpl или все таки выносить в js.js через rc подключаемый? |
Roffun |
|
---|---|
#43193 Kopusha: Если скрипт нужен точечно, и это выражение, а не библиотека какая-нибудь, то лучше в конкретном файле tpl выводить, тем более в приведенном выше примере скрипт сработает по событию onload. В случае с cooments.tpl - файл выводится только в комментариях, поэтому удобно в него добавить. Если standalone плагин, то можно добавить конкретно в его tpl файл, например для плагина "кто онлайн" это файл whosonline.tpl. А если добавлять через rc файл шаблона или в глобальных файлах (header.tpl footer.tpl) , то нужно будeт условный оператор проверочный добавить, чтобы выводить в конкретном месте. Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|