Дата: Вторник, 16.06.2026, 21:30 | Сообщение # 1 |
|
Написал: Известный
Автор темы
Мурчанн
не в сети
Сообщений: 288
Продолжаем развитие системы комментариев для uCoz Работа над системой комментариев продолжается, и за последнее время удалось провести достаточно серьёзную оптимизацию как внешнего вида, так и внутренней логики работы скрипта. Главным нововведением текущей версии стала полноценная система подписки и отписки от комментариев. Теперь пользователи могут следить за обсуждениями интересующих материалов и получать уведомления о новых сообщениях. Этот функционал давно планировался и наконец занял своё место в проекте. Также была проведена большая работа над визуальной частью системы: 1. переработаны стили всплывающих уведомлений; 2. обновлён дизайн рейтинга комментариев; 3. улучшен внешний вид блока анонимной отправки комментариев; 4. доработаны элементы управления; 5. улучшена адаптация под мобильные устройства; 6. повышена общая удобность интерфейса.Однако основная работа велась не над дизайном, а над внутренней архитектурой скрипта. Во время тестирования была обнаружена серьёзная проблема, которая негативно влияла на работу всего функционала. Причина оказалась достаточно простой: скрипт подключался внутри каждого материала. Соответственно, если на главной странице отображалось 20 новостей, то браузер одновременно загружал и запускал 20 одинаковых копий скрипта. Это приводило к множественным конфликтам, дублированию обработчиков событий, лишним запросам и серьёзным сбоям в работе комментариев. Именно этот момент долгое время являлся главным источником нестабильности.После анализа было принято решение полностью изменить способ подключения системы. Теперь: 1. CSS стили вынесены в общую часть сайта и подключаются перед закрывающим тегом ; 2. основной JavaScript вынесен в единый файл и подключается один раз перед закрывающим тегом ; 3. часть вспомогательных скриптов объединена в общий модуль; 4. оптимизирована логика обработки событий; 5. уменьшено количество лишних обращений к DOM; 6. улучшена работа кеширования.Результат оказался заметен сразу после внедрения изменений. Практически все проблемы со стабильностью исчезли, а скорость работы системы значительно выросла. На данный момент скрипт работает намного быстрее, стабильнее и надёжнее по сравнению с предыдущими версиями. Планы на следующую версию уже есть. В первую очередь хочу добавить индивидуальный рейтинг для каждого комментария в виде привычного сердечка или лайка, как это реализовано в большинстве современных социальных сетей. Также рассматриваю возможность внедрения дополнительных социальных функций для повышения активности пользователей. Несмотря на уже проделанную работу, проект ещё далёк от завершения. Всегда находятся новые идеи и возможности для улучшения системы. Любой желающий может использовать данный скрипт в качестве основы для создания собственного оформления материалов, комментариев и социальной активности на сайте uCoz. Если сравнить текущую версию с тем, что было несколько месяцев назад, становится очевидно, насколько сильно проект продвинулся вперёд. На мой взгляд, система уже начинает напоминать полноценную социальную сеть: есть комментарии, рейтинги, подписки, уведомления, интерактивные элементы и современные механики взаимодействия пользователей.А если продолжить развитие функционала и дальше, то идея вполне может превратиться в действительно мощное решение для сайтов на uCoz. Каталог статей - вид материалов Код
<!-- ЛЕНТА НОВОСТЕЙ --> <div class="vk-modern-feed"> <div class="vk-modern-post"> <!-- HEADER --> <div class="vk-modern-header"> <div class="vk-modern-avatar"> <?if($AVATAR_URL$)?><img src="$AVATAR_URL$" alt="$USERNAME$"><?else?><img src="https://bro.usite.pro/icon/p1_3004531_da07dd0f.jpg"><?endif?> </div> <div class="vk-modern-author"> <div class="vk-modern-name"><a href="$PROFILE_URL$">$USERNAME$</a></div> <div class="vk-modern-time" title="$TIME$"> <img src="https://bro.usite.pro/icon/clock-icon.png" alt="Дата публикации" height="22"> <span>$DATE$</span> </div> </div> <!-- КНОПКА ПОДПИСКИ — теперь в шапке, справа --> <div class="vk-subscribe-wrapper"> <button class="vk-subscribe-btn" onclick="toggleSubscribe(this)"> <span class="subscribe-text">Подписаться</span> </button> </div> <?if($MODER_PANEL$)?><div class="entry-moder-container">$MODER_PANEL$</div><?endif?> </div> <!-- TEXT --> <?if($MESSAGE$)?><div class="vk-modern-text"> <div class="post" data-id="$ID$">$MESSAGE$</div> </div><?endif?> <!-- IMAGE --> <?if($COVER_IMAGE$)?><div class="vk-modern-attach"> <picture> <source srcset="$COVER_SMALL_URL$" media="(min-width:769px)"> <img src="$COVER_URL$" alt="$TITLE$" loading="lazy"> </picture> </div><?endif?> <!-- ACTIONS --> <div class="vk-modern-actions"> <div class="vk-actions-left"> <div class="vk-like" data-entryid="$ID$"> <span class="likeHeart" title="Поставить лайк"></span> <span class="uLikeCount">$RATED$</span> </div> <script src="/js/likeSystem.js" defer></script> <?if($COMMENTS_URL$)?> <a class="vk-action vk-comment-toggle" href="$COMMENTS_URL$" data-bro-ucoz-comment-toggle data-bro-ucoz-comments-url="$COMMENTS_URL$" aria-expanded="false" title="Комментарии"> <svg viewBox="0 0 24 24"> <path d="M21 6h-18v10h4v4l4-4h10z"/> </svg> <span>$COMMENTS_NUM$</span> </a> <?endif?> <div class="vk-action"> <button class="vkShareBtn" onclick="vkShare(event)" aria-label="Поделиться" title="Поделиться"> <span class="vkShareRipple"></span> <svg viewBox="0 0 24 24" class="vkShareIcon"> <path d="M11.996 3.725A2.15 2.15 0 0 0 10 5.87l-.001 2.117-.02.005a9.904 9.904 0 0 0-7.827 10.721c.083.811 1.116 1.103 1.611.455l.187-.237a9.08 9.08 0 0 1 5.836-3.265l.213-.026.001 2.494a2.15 2.15 0 0 0 3.476 1.692l7.824-6.132a2.15 2.15 0 0 0 0-3.384l-7.824-6.132a2.15 2.15 0 0 0-1.326-.458z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> <script> function vkShare(e){ const btn = e.currentTarget; const url = location.href; const rect = btn.getBoundingClientRect(); const ripple = btn.querySelector('.vkShareRipple'); ripple.style.left = (e.clientX - rect.left) + 'px'; ripple.style.top = (e.clientY - rect.top) + 'px'; ripple.classList.remove('show'); void ripple.offsetWidth; ripple.classList.add('show'); if (navigator.share) { navigator.share({ url }); } else { window.open('https://vk.com/share.php?url=' + encodeURIComponent(url),'_blank'); } } </script> </div> </div> <a class="vkViewBtn" href="$ENTRY_URL$" title="Перейти к новости"> <svg viewBox="0 0 24 24" class="vkViewIcon" width="20" height="20"> <path d="M1 12s4-7 11-7 11 7 11 7-4 7-11 7S1 12 1 12z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <circle cx="12" cy="12" r="3" fill="currentColor"/> </svg> <span class="vkViewCount"> $READS$ </span> </a> </div> <?if($COMMENTS_URL$)?> <div class="bro-ucoz-comment-panel" data-bro-ucoz-comment-panel > <!-- БЛОК ПРЕВЬЮ КОММЕНТАРИЕВ --> <div class="bro-ucoz-comments-preview" data-bro-ucoz-comments-preview data-bro-ucoz-comments-url="$COMMENTS_URL$" data-post-id="$ID$"> <!-- ← Очень важно! --> <div class="bro-ucoz-comments-preview__state" data-bro-ucoz-comments-state hidden></div> <div class="bro-ucoz-comments-preview__list" data-bro-ucoz-comments-list></div> <button class="bro-ucoz-comments-preview__more" type="button" data-bro-ucoz-comments-more hidden>Загрузить ещё</button> </div> <!-- ФОРМА ОТПРАВКИ КОММЕНТАРИЯ --> <div class="bro-ucoz-comment" data-bro-ucoz-comment-form data-bro-ucoz-comment-url="$COMMENTS_URL$"> <div class="bro-ucoz-comment__editor" data-bro-ucoz-comment-editor> <img class="bro-ucoz-comment__avatar" data-bro-ucoz-comment-avatar src="/.s/src/profile/img/profile_photo_thumbnail.png" alt="Аватар"> <div class="bro-ucoz-comment__field-wrap"> <textarea class="bro-ucoz-comment__textarea" data-bro-ucoz-comment-message rows="1" placeholder="Написать комментарий"></textarea> <div class="bro-ucoz-comment__tools"> <button class="bro-ucoz-comment__tool" type="button" data-bro-ucoz-comment-attach title="Вставить ссылку" aria-label="Вставить ссылку"> <svg viewBox="0 0 24 24"><path d="M8.6 17.9 18.2 8.3a3 3 0 0 0-4.2-4.2L4.6 13.5a5 5 0 0 0 7.1 7.1l8.2-8.2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> <button class="bro-ucoz-comment__tool" type="button" data-bro-ucoz-comment-photo title="Добавить фото" aria-label="Добавить фото"> <svg viewBox="0 0 24 24"><path d="M4.5 7.5h3l1.4-2h6.2l1.4 2h3a2 2 0 0 1 2 2v8.2a2 2 0 0 1-2 2h-15a2 2 0 0 1-2-2V9.5a2 2 0 0 1 2-2Z" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/><circle cx="12" cy="13.3" r="3.4" fill="none" stroke="currentColor" stroke-width="1.7"/></svg> </button> <button class="bro-ucoz-comment__tool" type="button" data-bro-ucoz-comment-smile-toggle title="Смайлы" aria-label="Смайлы"> <svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="1.8"/><path d="M8.4 14.3c.8 1.2 2 1.8 3.6 1.8s2.8-.6 3.6-1.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><circle cx="9" cy="10" r="1.1" fill="currentColor"/><circle cx="15" cy="10" r="1.1" fill="currentColor"/></svg> </button> </div> <div class="bro-ucoz-comment__smiles" data-bro-ucoz-comment-smiles hidden> <button type="button" data-bro-ucoz-smile=">("><img src="/.s/sm/2/angry.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=":D"><img src="/.s/sm/2/biggrin.gif" alt=""></button> <button type="button" data-bro-ucoz-smile="B)"><img src="/.s/sm/2/cool.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=":'("><img src="/.s/sm/2/cry.gif" alt=""></button> <button type="button" data-bro-ucoz-smile="<_<"><img src="/.s/sm/2/dry.gif" alt=""></button> <button type="button" data-bro-ucoz-smile="^_^"><img src="/.s/sm/2/happy.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=":("><img src="/.s/sm/2/sad.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=":)"><img src="/.s/sm/2/smile.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=":o"><img src="/.s/sm/2/surprised.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=":p"><img src="/.s/sm/2/tongue.gif" alt=""></button> <button type="button" data-bro-ucoz-smile="%)"><img src="/.s/sm/2/wacko.gif" alt=""></button> <button type="button" data-bro-ucoz-smile=";)"><img src="/.s/sm/2/wink.gif" alt=""></button> </div> </div> <!-- Кнопка отправки --> <button class="bro-ucoz-comment__send" type="button" data-bro-ucoz-comment-send title="Отправить" aria-label="Отправить комментарий"> <svg viewBox="0 0 24 24"><path d="M4.4 4.7 21 12 4.4 19.3l2.1-6.1L14 12 6.5 10.8 4.4 4.7Z" fill="currentColor"/></svg> </button> </div> <!-- Модальное окно для вставки ссылки/фото --> <div class="bro-ucoz-comment__attach-modal" data-bro-ucoz-attach-modal hidden> <div class="bro-ucoz-comment__attach-overlay" data-bro-ucoz-attach-close></div> <div class="bro-ucoz-comment__attach-box"> <div class="bro-ucoz-comment__attach-title" data-bro-ucoz-attach-title>Вставьте ссылку</div> <input class="bro-ucoz-comment__attach-input" type="text" data-bro-ucoz-attach-input placeholder="https://"> <div class="bro-ucoz-comment__attach-actions"> <button class="bro-ucoz-comment__attach-cancel" type="button" data-bro-ucoz-attach-close>Отмена</button> <button class="bro-ucoz-comment__attach-ok" type="button" data-bro-ucoz-attach-ok>OK</button> </div> </div> </div> </div> </div> <?endif?> </div> </div> <iframe id="broUcozCommentFrame" style="width:0;height:0;border:0;position:absolute;left:-9999px;" title="comment-frame"></iframe> <div class="bro-ucoz-comment-toast" id="broUcozCommentToast" aria-live="polite"> <span class="bro-ucoz-comment-toast__icon">✓</span> <span class="bro-ucoz-comment-toast__text">Комментарий успешно отправлен</span> </div>
Форма комментариев использует различные возможности системы, поэтому доступ к отдельным функциям зависит от настроек групп пользователей. Если после установки какой-либо функционал работает некорректно или форма не отображается должным образом, рекомендую внимательно ознакомиться с предыдущими моими темами, посвящёнными этому проекту. Главная страница каталога статей Код
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>BRO Account</title> <link rel="stylesheet" href="https://bro.usite.pro/css/bro-style.css" media="all"> <link rel="stylesheet" href="https://bro.usite.pro/css/broUcozCommentForm.v6.css?v=2" media="all"> </head> <body> <!-- МЕНЮ --> <div class="header"> <div class="header-inner"> <a href="/" class="logo">DOM <span class="logo-box">LinkUp</span></a> <form class="vk-search" action="/search" method="get"> <span class="vk-search-icon"></span> <input type="text" name="q" placeholder="Поиск" /> </form> $GLOBAL_GLOCKE$ <?if(!$USER_LOGGED_IN$)?> <div class="buttons-row"> <a href="$LOGIN_LINK$" class="btn btn-login">Войти</a> <a href="/index/3" class="btn btn-join">Присоединиться</a> </div> <?endif?> <?if($USER_LOGGED_IN$)?> <div class="nav-cta-wrapper"> <div class="nav-cta"> <!-- Пользователь --> <div class="user-box" id="userMenu"> <!-- Аватар --> <img src="$USER_AVATAR_URL$" alt="$USERNAME$" class="user-avatar real-avatar" onerror="this.style.display='none'; this.nextElementSibling.style.display='block';"> <!-- Дефолтный аватар --> <img src="/.s/src/profile/img/profile_photo_thumbnail.png" alt="default" class="user-avatar default-avatar" style="display:none;"> <!-- Выпадающее меню --> <div class="user-dropdown"> <div class="user-dropdown-header"> <span class="username">$USERNAME$</span> </div> <a href="/index/14" class="dropdown-item icon-messages">Личные сообщения</a> <a href="/index/11" class="dropdown-item icon-settings">Настройки</a> <a href="/index/8" class="dropdown-item icon-profile">Моя страница</a> <a href="/index/15" class="dropdown-item icon-users">Пользователи</a> <div class="dropdown-separator"></div> <a href="$LOGOUT_LINK$" class="dropdown-item icon-logout logout">Выход</a> </div> </div> </div> </div> <script> document.addEventListener("click", function (e) { const userBox = document.getElementById("userMenu"); if (!userBox) return; if (userBox.contains(e.target)) { userBox.classList.toggle("active"); } else { userBox.classList.remove("active"); } }); </script> <?endif?> </div> </div> </div> </div> </div> <!-- КОНТЕНТ --> <div class="container"> <!-- Левая колонка --> <div class=""> $GLOBAL_MENU$ </div> <!-- Центральная колонка --> <div class="center-col"> <div class="cover block"> <img src="https://bro.usite.pro/m0.jpg" alt="cover"> </div> <div class="center-small block"> <!-- Аватар --> <div class="profile-header-bg"> <?if($USER_LOGGED_IN$)?> <div class="profile-photo" style="background-image: url('<?if($USER_AVATAR_URL$)?><?$USER_AVATAR_URL$?><?else?>https://bro.usite.pro/icon/p1_3004531_da07dd0f.jpg<?endif?>');"> </div> <?else?> <div class="profile-photo" style="background-image: url('/.s/src/profile/img/profile_photo_thumbnail.png');"> </div> <?endif?> </div> <!-- Информация профиля --> <div class="profile-info"> <!-- Ник --> <div class="profile-name-main"> <?if($USER_FULL_NAME$)?><h1 class="username"><a href="$PERSONAL_PAGE_LINK$">$USER_FULL_NAME$</a></h1> <?else?><h1 class="username"><a href="$PERSONAL_PAGE_LINK$">$USERNAME$</a></h1><?endif?> </div> <style> /* Контейнер подписи + города */ .profile-signature-wrapper { display: flex; flex-direction: column; justify-content: flex-start; /* подпись сверху */ position: relative; min-height: 70px; /* минимальная высота блока, чтобы город был ниже */ margin-top: -4px; /* поднимаем контейнер чуть выше */ padding-bottom: -10px; /* отступ снизу для города */ } /* Подпись */ .profile-signature-main { font-size: 14px; color: #6d7885; line-height: 1.4; } /* Город — всегда фиксирован снизу */ .profile-city-main { display: flex; align-items: center; position: absolute; bottom: 0; /* всегда снизу */ left: 0; gap: 4px; font-size: 15px; color: #666; } .profile-city-main svg { display: block; vertical-align: middle; color: #666; width: 20px; height: 20px; } </style> <!-- Подпись --> <div class="profile-signature-wrapper"> <!-- Подпись --> <div class="profile-signature-main" id="profileSignature" style="display:none;"> <span class="signature-text-main"></span> </div> <!-- Город --> <div class="profile-city-main" id="profileCity" style="display:none;"> <span class="city-icon-main vk-place-icon-main"> <svg aria-hidden="true" viewBox="0 0 20 20"> <g fill="none" fill-rule="evenodd"> <path d="M0 0h20v20H0z" opacity=".4"></path> <path fill="currentColor" fill-rule="nonzero" d="M10 1c4.148 0 7.5 3.433 7.5 7.5 0 2.85-1.843 6.172-5.435 10.095a2.8 2.8 0 0 1-4.13 0C4.343 14.672 2.5 11.35 2.5 8.5 2.5 4.433 5.852 1 10 1m0 1.5c-3.382 0-6 2.825-6 6q0 3.574 5.041 9.082a1.3 1.3 0 0 0 1.918 0Q15.999 12.075 16 8.5c0-3.175-2.618-6-6-6M10 5a3.5 3.5 0 1 1-.001 7.001A3.5 3.5 0 0 1 10 5m0 1.5a2 2 0 1 0 .001 4.001A2 2 0 0 0 10 6.5"></path> </g> </svg> </span> <span class="city-text-main"></span> </div> </div> </div> <script src="https://bro.usite.pro/js/signature01.js"></script> <!-- Интерактивная форма --> $GLOBAL_SEND$ <!-- Интерактивная форма --> </div> <!-- Лента новостей --> <div class="bottom-row"> <!-- Основной контейнер с материалами --> <div id="ajaxBody"> <!-- ===== ПЕРВЫЙ БЛОК (только для авторизованных) ===== --> <?if($USER_ID$)?> <div class="vk-modern-post1"> <div class="vk-photos-header"> <span class="vk-photos-title">Мои фотографии</span> <span class="vk-photos-count" id="vkPhotosCount">0</span> </div> $GLOBAL_BILD$ <!-- Кнопки справа --> <div class="bro-actions"> <a href="/photo/0-1-0-17-$USER_ID$" class="bro-action-btn" aria-label="Просмотры"> <svg class="bro-icon bro-icon-eye" viewBox="0 0 24 24"> <path d="M12 5C7 5 3 9 1.5 12 3 15 7 19 12 19s9-4 10.5-7C21 9 17 5 12 5zm0 11a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"/> </svg> </a> <a href="/photo/0-0-0-1-2" class="bro-action-btn" aria-label="Скачать всё"> <svg class="bro-icon bro-icon-download" viewBox="0 0 24 24"> <path d="M12 3v10m0 0 4-4m-4 4-4-4M5 21h14"/> </svg> </a> </div> </div> <?endif?> <?if($USER_ID$==0)?> <style> /* ===== ДЛЯ ГОСТЕЙ ===== */ /* Скрываем блок фотографий */ .vk-modern-post1 { display: none; /* полностью скрыт */ } /* Убираем место под блок */ #ajaxBody::before { height: 0px; } </style> <?endif?> <!-- ===== ВТОРОЙ БЛОК ===== --> <div class="vk-post-anchor vk-post-anchor-2"></div> <div class="vk-modern-post2"> <div class="vk-create-post-wrapper"> <!-- Кнопка по центру --> <a href="/publ/1-0-0-0-1" class="vk-btn-create"> <span class="vk-icon">+</span> <span class="vk-text">Создать пост</span> </a> <!-- Кнопки справа --> <div class="vk-btn-right-group"> <a href="/video/viadd" class="vk-btn-icon" aria-label="Клип"> <span class="vk-icon">🎞️</span> </a> <a href="/photo/0-0-0-1-2" class="vk-btn-icon" aria-label="Статья"> <span class="vk-icon">🖼️</span> </a> <a href="/publ/1-0-0-0-1" class="vk-btn-icon" aria-label="Статья"> <span class="vk-icon">📝</span> </a> </div> </div> </div> $BODY$ </div> <!-- Скрытая пагинация --> <div id="selector" style="display:none;"> $PAGE_SELECTOR$ </div> <script src="https://bro.usite.pro/js/ajaxfotonew.js"></script> <!-- Правая колонка (липкая) --> <div class="right-col blockbro"> <div class="right-sticky-limit"> <div class="">$GLOBAL_BRO$</div> <div class="">$GLOBAL_SUBSCRIBE$</div> <div class="">$GLOBAL_TODAY$</div> <div class="">$GLOBAL_MPG$</div> <!-- Статистика --> <div class="vk-info"> <div class="vk-info-head"> <span class="vk-avatar"> <img src="https://www.svgrepo.com/show/509003/avatar-thinking-6.svg" alt="avatar"> </span> <div class="vk-info-title">DOM Link</div> </div> <div class="vk-info-desc"> Социальная платформа общения, обмена контентом и связи между пользователями. </div> <div class="vk-info-meta"> <span class="vk-icon vk-link"></span> Работает на $POWERED_BY$ </div> <!-- ===== СВЁРТКА СТАТИСТИКИ ===== --> <input type="checkbox" id="vk-stats-toggle" class="vk-stats-toggle"> <label for="vk-stats-toggle" class="vk-stats-btn"> <svg class="vk-stats-icon" viewBox="0 0 24 24" fill="none"> <path d="M4 19V5" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> <path d="M4 19H20" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> <path d="M8 15V11" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> <path d="M12 15V7" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> <path d="M16 15V9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> </svg> Статистика </label> <div class="vk-info-stats"> <div class="vk-online-count"> 🟢 Сейчас онлайн: $ONLINE_COUNTER$ чел. </div> <div class="vk-online-users"> <strong>Активные пользователи:</strong> $ONLINE_USERS_LIST$ </div> <div class="vk-today"> <svg class="vk-time-icon" viewBox="0 0 24 24" fill="none"> <path d="M12 22C17.5 22 22 17.5 22 12C22 6.5 17.5 2 12 2C6.5 2 2 6.5 2 12C2 17.5 6.5 22 12 22Z" stroke="currentColor" stroke-width="2"/> <path d="M12 6V12L16 14" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> </svg> <span> Сегодня: $DATE$ | Время: $TIME$ </span> </div> </div> </div> <!-- Статистика --> </div> </div> </div> </div> </div> $GLOBAL_LS$ <script src="https://bro.usite.pro/js/broUcozCommentForm.v9.js"></script> </body> </html>
Как видите скрипт вставлен перед закрывающем тегом Код
<script src="https://bro.usite.pro/js/broUcozCommentForm.v9.js"></script> </body>
Стили CSS перед Код
<link rel="stylesheet" href="https://bro.usite.pro/css/broUcozCommentForm.v6.css?v=2" media="all"> </head>
Скрипт в работе
Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.