Перейти к содержанию

by_ix

Актив
  • Постов

    2310
  • Зарегистрирован

  • Посещение

  • Победитель дней

    170

Активность репутации

  1. Лайк
    by_ix отреагировал в SlawkA за запись, Добавление бейджей пользователя в postContainer   
    Войдите в ACP, перейдите в Темы - Ваша Тема - postContainer
    Найдите этот код:
    {{if $comment->author()->member_id}} {template="customFieldsDisplay" group="global" app="core" params="$comment->author()"} {{endif}}  
    Над ним добавить:
    {{if \IPS\core\Achievements\Badge::show() AND \IPS\core\Achievements\Badge::getStore()}} {{if \count( $comment->author()->recentBadges($badgecount) )}} <li class="ipsType_break"> <div class="ipsResponsive_showDesktop ipsResponsive_block"> <ul class="ipsType_center ipsList_inline ipsList_csv ipsList_noSpacing" style="margin-top: 21px;"> {{foreach $comment->author()->recentBadges(3) as $badge}} <div class="ipc_badges"> {$badge->html( 'ipsDimension ipc_badges_size', TRUE, FALSE )|raw} </div> {{endforeach}} </ul> </div> </li> {{endif}} {{endif}}  
    Затем добавьте в custom.css:
    .ipc_badges {display: inline-block;padding: 5px 3px;} .ipc_badges_size {width: 30px;height: 43px;}  
    Если вы хотите добавить кнопку для просмотра всех значков пользователя:
    {{if \IPS\core\Achievements\Badge::show() AND \IPS\core\Achievements\Badge::getStore()}} {{if \count( $comment->author()->recentBadges($badgecount) )}} <li class="ipsType_break"> <div class="ipsResponsive_showDesktop ipsResponsive_block"> <ul class="ipsType_center ipsList_inline ipsList_csv ipsList_noSpacing" style="margin-top: 21px;"> {{foreach $comment->author()->recentBadges(3) as $badge}} <div class="ipc_badges"> {$badge->html( 'ipsDimension ipc_badges_size', TRUE, FALSE )|raw} </div> {{endforeach}} </ul> </div> </li> <a id="authorBadges" href="{$comment->author()->url()}/badges/" data-ipsdialog="" data-ipsdialog-size="medium">{$comment->author()->name}'s badges</a> {{endif}} {{endif}}  
    Результат:

     
    Дополнительно:
    Если вы хотите изменить количество значков, отображаемых для каждого пользователя, отредактируйте эту полосу.
    {{foreach $comment->author()->recentBadges(КОЛИЧЕСТВО) as $badge}}
  2. Лайк
    by_ix отреагировал в MrHaim за запись, Individual Font Awesome Icons without extra plugins   
    In this short tutorial we will show you in step 1 how to decorate the entries in the navigation bar with Font Awesome icons and in step 2 how to replace the status icons of the individual forums. It's actually quite simple, Invision Community supports FA by default and you can find a list of currently supported icons HERE.
    When you find something you want to use, click on it and note the Unicode in the detail view...

     
    Next you go to the list of installed themes in the AdminCP and click on the </> symbol for the theme in which you want to use the icons.
    Then click on the CSS tab and look for the template custom.css, in which an unedited theme should usually only show a placeholder.
     

     
    In order to use FA in navigation, it must first be triggered for this position. This code snippet is responsible for this, which you copy into the empty template...
    .ipsNavBar_primary li > a:before { font-family: "FontAwesome"; line-height: 1; font-weight: normal; } OK, now we know where to get the icons and where to put them. Now we only have to tell the theme where it should display which icon.
    To do this, go back to the frontend, right-click on the element you want to assign an icon to and select Inspect from the context menu, whereupon your browser will present you with something like this...

     
    What interests us in this case is the ID 21. Now copy the following into your template, save it and update your page...
    .ipsNavBar_primary li[id="elNavSecondary_21"] > a:before{content:"\f198"} /* Slack */ Now the element with ID 21 should associate the FA icon with Unicode f198, in this case "Slack". Do the same for all other elements in the top navigation bar. It's the same for subnavigation, only the code is a little bit different...
    .ipsNavBar_secondary li[id="elNavSecondary_10"] > a:before{content:"\f086"} /* Comments */ Now we come to step 2, in which we devote ourselves to the status icons of the forums. You can find out their IDs with a right click, just like those of the elements in the navigation. The code to replace a forum icon is just a bit longer and looks like this...
    .ipsDataItem[data-forumid='2'] .ipsItemStatus.ipsItemStatus_large .fa-comments::before, .ipsItemStatus:not( .ipsItemStatus_large ) .fa-comments::before { content: "\f198"; } The icon with the Unicode f198 is assigned to the forum with the ID number 2, that's pretty much it. When you're done, it might look something like this...

  3. Лайк
    by_ix отреагировал в SlawkA за запись, Часы и Таймер для сайта.   
    Всем привет. И с Наступающим Вас.
    Сделал тут давно для себя часики и таймер для приложение Портал. Боковые блоки.

    Может кому что и пригодится.
    Выглядит это так:

    Все настройки размеров и цвета в коде.
    И так Часы:
    <center><script type="text/javascript"> setInterval(function () { date = new Date(), h = date.getHours(), m = date.getMinutes(), s = date.getSeconds(), h = (h < 10) ? '0' + h : h, m = (m < 10) ? '0' + m : m, s = (s < 10) ? '0' + s : s, document.getElementById('time').innerHTML = h + ':' + m + ':' + s; }, 1000); </script> <span style="color:#6c9bd7; font-size:40pt; background:#fffffe; padding:9px;"> <span id="time">00:00:00</span> </span></center> Ничего такого не понятного тут нет. Вставить в блок. И работают.
     
    А вот и таймер:  etimer.js
    <center><script src="https://ССЫЛКА ДО ФАЙЛА/etimer.js"></script> <script type="text/javascript"> jQuery(document).ready(function() { jQuery(".eTimer").eTimer({ etType: 0, etDate: "01.01.2023.00.00", etTitleText: "До Нового 2023 года осталось!", etTitleSize: 20, etShowSign: 1, etSep: ":", etFontFamily: "Impact", etTextColor: "#a3a3a3", etPaddingTB: 15, etPaddingLR: 15, etBackground: "#333333", etBorderSize: 0, etBorderRadius: 2, etBorderColor: "white", etShadow: " 0px 0px 10px 0px #333333", etLastUnit: 4, etNumberFontFamily: "Impact", etNumberSize: 31, etNumberColor: "white", etNumberPaddingTB: 0, etNumberPaddingLR: 10, etNumberBackground: "#495369", etNumberBorderSize: 0, etNumberBorderRadius: 5, etNumberBorderColor: "white", etNumberShadow: " 0px 0px 10px 0px rgba(0, 0, 0, 0.5)" }); }); </script> <div class="eTimer"></div></center>  
    Файл etimer.js перенести в корень или в другую папку на хосте по Вашему желанию.
    Прикреплен файл ниже. Прописать в коде ссылку до файла etimer.js
    Так же в коде можно менять цвета таймера, размер, ширину и длину по вашему и так далее.
    И можете вставлять в блок или куда хотите.
    Изменение таймера времени происходит в коде etDate: "01.01.2023.00.00"
    Тест на моем сайте: ets2atsmods.ru/portal/
    etimer.js
  4. Лайк
    by_ix отреагировал в Maqlao за запись, Как перевести любое приложение.   
    Данная статья о том, как перевести любое приложение с Английского языка на Русский.
    Если же вы установили какое-то приложение которое вам нравиться, но оно полностью на Английском языке?
    Или же вы попросту не можете найти перевод на нужное приложение?
    Тогда эта статья для вас. На примере покажу перевод приложения "Интеграция с YooMoney"
    1: Заходим в Админ-Центр - Кастомизация - Локализация - Языки.
    2: Выбираем наш язык и нажимаем перевести.
    3: В поиске пишете название нужного приложения которое хотите перевести. В моем случае это YooMoney.
    4: И так, мы добрались до самого перевода приложения.
    Думаю здесь все понятно, левая колона там где написано "По умолчанию" соответственно Английский язык.
    Нам нужна правая колона где написано "Русский (RU)" 
    То-есть, первое по порядку у нас идет "Transfer comment" - в правую колонку вписываете ваш перевод -
    на Русском языке. И так каждый пункт, если хотите полностью перевести приложение,
    но не забывайте что вы можете перевести только то, что вам нужно. Сверху есть поиск,
    вводите название пункта и переводите. Не забывайте сохранить все это дело.
    Думаю как переводить с Английского на Русский язык не нужно.) Google в помощь.
    Объяснил своими словами как мог, строго не судите. Если что не понятно, вы можете поинтересоваться,
    я вам всегда помогу.
     
  5. Лайк
    by_ix отреагировал в aLEX49566 за запись, Настройка Cron на выполнение задач   
    1. Заходим в АЦ.
     
    2. Настройка Cron на выполнение задач.
    У меня исполняемый файл находится в директории:
    /var/spool/cron/crontabs/root Прописываем в Cron строку из вашего АЦ и задаем время на выполнение - каждую минуту (мне этого хватало, вы же можете указать и другое время).
    | Ниже приведен пример, его копировать не нужно!

    */1 * * * * /usr/bin/php -d memory_limit=-1 -d max_execution_time=0 /Ваш сайт/html/applications/core/interface/task/task.php 12345678910111213141516  
    3. Перезагружаем cron через ssh командой.
    /etc/init.d/cron restart  
    Всем добра!
    Я делал так и все работает с 2020 года) Есть другие варианты-пишите
  6. Лайк
    by_ix отреагировал в aLEX49566 за запись, Кастомизируем немного страницы ошибок 404, 403..   
    Доброго времени суток.
    Хочу поделиться опытом кастомизации ошибок, которые возникают при тех или иных ситуациях (не найдена страница - 404, нет права на загрузку файла и т.д..).
    На то, чтобы это все понять и собрать, ушло у меня около недели), я не ПРО, поэтому выкладываю все своими словами и так, как делал я, "без лишней суеты"..
    Пример моей работы:
    Где я менял основную страницу:
     
    НЕ ЗАБЫВАЕМ ДЕЛАТЬ БЭКАП!!
    1) Первое, что нужно сделать, это настроить общий шаблон в стилях.
    Я подпишу каждый момент, который менял, чтобы вам легче было ориентироваться. Вы же все, что подписано - //отступ - у себя уберете, после своих внесении изменений, иначе это все будет видно на сайте.
    Код моей страницы:
    По сути, можно кастомизировать как угодно, но мне много не надо было, поэтому я сделал себе по простому
     
    2) Правка текста в вкладках.
    Поменял текст, который отображается при появлении ошибок 401, 404, 403, 500, ибо логично, когда выдается страница 404, то и в вкладке, должно быть соответствующий текст.

    Текст меняется в переводе, это можно сделать из панели АЦ:
     
     
    3) Для тех, у кого php-fpm и Nginx.
    Далее, я обнаружил, что когда открываю страницу, такую как (несуществующую страницу или удаленную) вида -  https://site.blablabla.index.php  редиректит на:

    Я ее заменил на свою страницу (мне показалось, что это куда более правильнее)
    Моя страница 404 ошибки, с внутренним css стилем (она же 403)
    404.html
     
    Если у вас будет такая же ситуация, тогда:
    1.1 Создаем в корне вашего сайта, скажем в директории: /html/error_pages, страницу 404.html.
    1.2 Немного правим php-fpm и вносим корректировки в:
    /etc/nginx/sites-available/ваш конфиг Добавляем:
    try_files $uri = 404; В каждый раздел location ~ ^(.*\.php)$ {
     
    1.3 Добавляем обращение к самой странице 404 в Nginx
    server { ..... error_page 404 /404.html; location = /404.html { root /путь до ПАПКИ с страницами ошибок/html/error_pages; } ..... } } }  
    4) Редирект закрытых директорий.
    И последний момент, это моя папка с файлами, она у меня была открыта для просмотра, но спустя некоторое время, я решил ее закрыть (файлы естественно все остались доступны для просмотра, а вот сам "серфинг" по ней - нет). Такого рода ошибку 403 не цепляет ни ips4 ни Nginx (по умолчанию), я сделал следующее:
    Добавил в Nginx строки (аналогично ошибке 404).
    server { ..... error_page 403 /403.html; location = /403.html { root /путь до ПАПКИ с страницами ошибок/html/error_pages; } ..... } } }  
    Промучился я не мало, гл вроде все стало выглядеть приятнее)
    Всем удачи!
    404.html
  7. Лайк
    by_ix отреагировал в newload за запись, Sticky Sidebar   
    Just go to Template > Core > Front > Global > Sidebar
    and paste this code there:
    {{$adsForceSidebar = ( \IPS\Settings::i()->ads_force_sidebar AND \IPS\core\Advertisement::loadByLocation( 'ad_sidebar' ) );}} {{if (isset( \IPS\Output::i()->sidebar['enabled'] ) and \IPS\Output::i()->sidebar['enabled'] ) && ( ( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) || ( isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) && \count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) || ( \IPS\Dispatcher::i()->application instanceof \IPS\Application AND \IPS\Dispatcher::i()->application->canManageWidgets() ) || $adsForceSidebar )}} <div id='ipsLayout_sidebar' class='ipsLayout_sidebar{$position} {{if !( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) && ( !isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) || !\count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) && \IPS\Dispatcher::i()->application->canManageWidgets() && !$adsForceSidebar}}ipsLayout_sidebarUnused{{endif}}' data-controller='core.front.widgets.sidebar'> {{if $announcements = \IPS\core\Announcements\Announcement::loadAllByLocation( 'sidebar' ) AND ( ( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) OR ( isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) && \count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) )}} {template="announcementSidebar" group="global" app="core" params="$announcements"} {{endif}} <div class='ibtFloatSidebar'> {{if isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== ''}} <aside id="elContextualTools" class='ipsClearfix' {{if isset( \IPS\Output::i()->sidebar['sticky'] )}}data-ipsSticky{{endif}}> {expression="\IPS\Output::i()->sidebar['contextual']" raw="true"} </aside> {{endif}} {{if $adsForceSidebar OR ( \IPS\core\Advertisement::loadByLocation( 'ad_sidebar' ) AND ( ( isset( \IPS\Output::i()->sidebar['contextual'] ) && trim( \IPS\Output::i()->sidebar['contextual'] ) !== '' ) OR ( isset( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) && \count( \IPS\Output::i()->sidebar['widgets']['sidebar'] ) ) ) )}} <div data-role='sidebarAd'> {advertisement="ad_sidebar"} </div> <br><br> {{endif}} {template="widgetContainer" group="global" app="core" params="'sidebar', 'vertical'"} </div></div> {{endif}} <script> // обработчик "прилипания" контента в правой колонке (function(){ var a = document.querySelector('.ibtFloatSidebar'), b = null, K = null, Z = 0, P = 0, N = 0; // если у P ноль заменить на число, то блок будет прилипать до того, как верхний край окна браузера дойдёт до верхнего края элемента, если у N — нижний край дойдёт до нижнего края элемента. Может быть отрицательным числом window.addEventListener('scroll', Ascroll, false); document.body.addEventListener('scroll', Ascroll, false); function Ascroll() { (function(jQuery) { var c = document.querySelector('#ipsLayout_mainArea'), Rc = c.getBoundingClientRect(), Ra = a.getBoundingClientRect(), R1bottom = Rc.bottom; if (b == null) { var Sa = getComputedStyle(a, ''), s = ''; for (var i = 0; i < Sa.length; i++) { if (Sa[i].indexOf('overflow') == 0 || Sa[i].indexOf('padding') == 0 || Sa[i].indexOf('border') == 0 || Sa[i].indexOf('outline') == 0 || Sa[i].indexOf('box-shadow') == 0 || Sa[i].indexOf('background') == 0) { s += Sa[i] + ': ' +Sa.getPropertyValue(Sa[i]) + '; ' } } b = document.createElement('div'); b.className = "stopSticky"; b.style.cssText = s + ' box-sizing: border-box; width: ' + a.offsetWidth + 'px;'; a.insertBefore(b, a.firstChild); var l = a.childNodes.length; for (var i = 1; i < l; i++) { b.appendChild(a.childNodes[1]); } } //просчитываем высоту колонки a.style.height = b.getBoundingClientRect().height + 'px'; a.style.padding = '0'; a.style.border = '0'; var Rb = b.getBoundingClientRect(), Rh = Ra.top + Rb.height, W = document.documentElement.clientHeight, R1 = Math.round(Rh - R1bottom), R2 = Math.round(Rh - W); if (Ra.bottom < R1bottom) { if((Rc.height > Rb.height) /*&& (Rb.height > W)*/) { // проверка того, что высота колонки больше высоты контента if (Rb.height > W) { if (Ra.top < K) { // скролл вниз //console.log('скролл вниз'); if (R2 + N > R1) { // не дойти до низа //if ((Rb.bottom - W + N < 0) && (Rb.top - P < 0)) { // подцепиться if ((parseInt(Rb.bottom) - W + N) <= 0/* && (Rb.top + W < 0)*/) { // подцепиться b.className = 'startSticky'; b.style.top = W - Rb.height - N + 'px'; Z = N + Ra.top + Rb.height - W; } else { b.className = 'stopSticky'; b.style.top = -Z + 'px'; } } else { b.className = 'stopSticky'; b.style.top = -R1 + 'px'; Z = R1; } } else { // скролл вверх //console.log('скролл вверх'); if (Ra.top - P < 0) { // не дойти до верха if (Rb.top - P >= 0) { // подцепиться b.className = 'startSticky'; b.style.top = P + 'px'; Z = Ra.top - P; } else { b.className = 'stopSticky'; b.style.top = -Z + 'px'; } } else { b.className = ''; b.style.top = ''; Z = 0; } } K = Ra.top; } else { if ((Ra.top - P) <= 0) { if ((Ra.top - P) <= R1) { b.className = 'stopSticky'; b.style.top = -R1 + 'px'; } else { b.className = 'startSticky'; b.style.top = P + 'px'; } } else { b.className = ''; b.style.top = ''; } } } else { // если высота контента меньше высоты колонки, то "прибиваем" колонку к верху Z = 0; b.className = 'stopSticky'; b.style.top = Z + 'px'; } window.addEventListener('resize', function() { a.children[0].style.width = getComputedStyle(a, '').width }, false); } })(jQuery) } })() </script> Then on Custom.css you throw this code there:
    #ipsLayout_mainArea {height: auto;} .startSticky {position: fixed; z-index: 101;} .stopSticky {position: relative; z-index: 101;} And that's it!
    Example:

  8. Лайк
    by_ix отреагировал в Maiden8 за запись, Режим разработчика в браузере, или "Я не могу найти это в настройках дизайна"   
    Доброго времени суток дорогие новички, старички т динозавры IPS4.
    Часто я вижу на форуме вопросы типа:
    "А вот нету цвета этой кнопки в настройках моей темы, как же быть?"
    Все очень просто, пользуемся инструментами разработчика в нашем браузере.
    Например, я хочу поменять цвет одного из элементов меню своего форума, естественно этой функции в настройках дизайна нету, а я хочу сделать разделитель другого цвета.
    Наводим мышь на нужный элемент и жмем ПКМ, там видим:

    Называться может по разному (зависит от браузера) может инструмент разработчика, может посмотреть код и тому подобное.
    Суть одна просмотр HTML и CSS кодов определенного, выбранного нами элемента. Тут же есть код его нынешнего цвета и выбор нового цвета этого элемента.
    Когда мы определились с цветом, и увидели что он поменялся в нашем меню, мы понимаем что это то что мы искали. Ниже в соседнем блоке режима разработчика, можно найти:
    форму, толщину, цвет фона, много дополнительных свойств которые помогут нам всегда изменить все что мы хотим.
    Копируем нужные нам элементы кода, теперь идем в админку в свой шаблон в css и коды, находим там custom.css и вставляем скопированный ранее код.
    И вот добавив код:
    Мы видим, наши разделители поменяли цвет на указанный:
    Нужный элемент поменял цвет. Ну вот и все в принципе, может это не супер урок какой то, но многие об этом не знают.


  9. Лайк
    by_ix отреагировал в Arteas за запись, Новый способ оформления ников.   
    Играл с форматированием групп, стоял градиент:
    <span style='font-weight: bold; background: linear-gradient(45deg, red, blue); -webkit-background-clip: text; -webkit-text-fill-color: transparent;'> Вспомнил времена, когда прикручивали бэкграундом поверх ников всякие приколюхи по типу огоньков, молний и т.п.
    И почему то понял что, никогда не видел людей кто бы вставлял картинку фоном под ник.
    Градиент заменил на картинку, добавил позиционирование и получил не плохой эффект (гифку которую юзал прикрепляю).
    <span style='font-weight: bold; background-image: url(сылка на картинку); background-position: center; -webkit-background-clip: text; -webkit-text-fill-color: transparent;'> Дальше уже играть - дело фантазии. Пробуйте разные гифки.
     
  10. Спасибо
    by_ix отреагировал в Respected за запись, Онлайн/оффлайн статус в постах   
    Открываем шаблон поста: forums > front > topics > postContainer
    Найти:
    <h3 class='ipsType_sectionHead cAuthorPane_author ipsType_blendLinks ipsType_break'> Добавить после:
    {{if $comment->author()->isOnline()}}<span class="ipsOnlineStatus_online" data-ipsTooltip title="{$comment->author()->name} в сети">On</span>{{else}}<span class="ipsOnlineStatus_offline" data-ipsTooltip title="{$comment->author()->name} не в сети">Off</span>{{endif}} Теперь в custom.css:
    .ipsComment_author .ipsOnlineStatus_online, .ipsComment_author .ipsOnlineStatus_offline { background: #7aa984; color: #fff; padding: 2px 5px; font-size: 11px; border-radius: 3px; position: absolute; left: 6px; top: 6px; } .ipsComment_author .ipsOnlineStatus_offline { background:#ebeff3; color:#788b9c; }  
×
×
  • Создать...