Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 01/30/12 in Записи

  1. 14 points
    Retail-версия - это оригинальная версия IPS4 без каких-либо изменений. Т.е. она выкладывается в том виде, как её выпустил производитель. Обычно содержит все приложения. Retail-версия нужна тем, у кого есть лицензия, но она неактивна и/или в неё входят не все приложения. В первом случае, если лицензия неактивна, у пользователя нет доступа к скачиванию новых версий с сайта IPS и тогда он может скачать её здесь, а во втором - т.к. в IPS4 можно устанавливать приложения от IPS даже в том случае, если у вас нет на них лицензии, то из архива с Retail-версией спокойно вытаскиваются папки приложений и устанавливаются на сайт. Если же у вас вообще нет лицензии, то Retail-версия вам не нужна. Nulled-версия - это изменённая версия IPS4, в которой отключена проверка лицензии и кое-какой функционал, который не работает без лицензии. С Nulled-версией всё просто: если вы пока не хотите тратить деньги на лицензию (например, хотите просто попробовать движок), то вы можете установить нулл. В составе нуллов есть всё, кроме: приложения чата, IPS Spam Service, IPS GeoIP Service и тех. поддержки IPS. Все эти компоненты удалены/выключены по той причине, что они не работают без лицензии. Внимание: если IPS узнает, что у вас стоит нулл, то они могут написать доменному регистратору и хостинг-провайдеру ("кинуть абузу") и в таком случае последствия могут быть от пересылки этого письма вам, до удаления хостинга и домена. Если вы планируете большое сообщество на базе IPS4, настоятельно рекомендую вам приобрести лицензию (хотя-бы базовую, т.е. не на все используемые приложения).
  2. 14 points
    Для добавления иконок заходим Внешний вид --> Стили и шаблоны --> CSS. Вставляем в CUSTOM.CSS следующий код:
  3. 13 points
    Что бы удалить надпись "форумы" с индексной страницы , добавляем следующий код в custom.css body[data-pagemodule="forums"][data-pagecontroller="index"] .ipsPageHeader{ display: none; } Сохраняем изменения, радуемся)
  4. 11 points
    Для того что бы убрать сообщение на форуме зайдите Внешний вид --> Стили и шаблоны --> Изменить HTML и CSS. Во вкладке CSS добавьте в Custom.css код ниже #elLicenseKey { display: none; } Для того что бы убрать сообщение в АЦ (Админ Центре) Во вкладке CSS добавьте Custom.css код ниже #acpNewVersion { display: none; } В итоге должно выглядеть так.
  5. 11 points
    В статье описан процесс полной русификации IPS Community Suite 4. Для начала нужно загрузить файлы локализации в теме - . После установки IPS Community Suite 4 перейдите в админцентр --> Customization --> Languages: Нажимаем + Create New, переходим на вкладку Upload. 1) Указываем скачанный нами ранее файл русификации, например Русский (RU) - All apps 4.0.13.1 2) Указываем нужную нам локаль сервера, в нашем случае это Русский В случае, если у вас установлены не все приложения, вам не обязательно загружать русификацию для всех приложений. Например у вас установлено два приложения - Forums и Gallery. В подобных случаях начните импорт с файла Русский (RU) - Core 4.0.13.1. После импорта файла будет создан Русский язык. Для установки русификации для других приложений выберите пункт Загрузить новую версию справа от установленного нами языка: Вопросы просьба публиковать в комментариях. Скачать Русификацию IPS Community Suite © ipbmafia.ru
  6. 10 points
    По умолчанию IPS4 не поддерживает транслитерацию ссылок. Это значит, что адрес ссылки берётся из оригинального названия темы и практически не меняется. Т.е. темы с кириллическими (русскими) названиями будут иметь ссылки на русском. Для некоторых это является проблемой и в этой статье вы узнаете, как решить её. Для начала вам необходимо скачать плагин Friendly URL Translit, который будет конвертировать ваши ссылки в латинские. После этого перейдите настройте его так, как вам нужно, перейдя в настройки плагина. Однако у этого плагина есть недостаток - он не конвертирует уже существующие ссылки, только новые. Чтобы исправить это, необходимо выполнить несколько простых запросов к вашей базе данных. Для этого перейдите в Админцентр --> Система --> Поддержка --> Техническая поддержка. В правом блоке Системная информация нажмите на ссылку Инструменты SQL. В поле для ввода запроса, расположенное над таблицей, введите следующее и нажмите кнопку Выполнить запрос: Не забывайте указывать Ваш префикс таблиц БД – XXX__ UPDATE blog_blogs SET blog_seo_name=''; UPDATE blog_entries SET entry_name_seo=''; UPDATE calendar_calendars SET cal_title_seo=''; UPDATE cms_database_categories SET category_last_seo_title=''; UPDATE core_announcements SET announce_seo_title=''; UPDATE core_members SET members_seo_name=''; UPDATE downloads_categories SET cname_furl=''; UPDATE forums_forums SET name_seo='', seo_last_title='', seo_last_name=''; UPDATE forums_topics SET title_seo=''; UPDATE gallery_albums SET album_name_seo=''; UPDATE gallery_categories SET category_name_seo=''; UPDATE gallery_images SET image_caption_seo=''; После этого все ссылки на разделы, темы, изображения, записи в блоге, пользователей и так далее сбросятся и восстановятся автоматически при взаимодействии с ними.
  7. 9 points
    Данная инструкция поможет Вам, добавить эффект плавного затухания логотипа при наведении на него мышкой. Добавьте данный код в Custom.css a#elLogo:hover { opacity: .4; -moz-transition-property: opacity; -moz-transition-duration: 1s; -moz-transition-delay: 0s; -webkit-transition-property: opacity; -webkit-transition-duration: 1s; -webkit-transition-delay: 0s; -o-transition-property: opacity; -o-transition-duration: 1s; -o-transition-delay: 0s; transition-property: opacity; transition-duration: 1s; transition-delay: 0s; } a#elLogo { display: inline; opacity: 1; -moz-transition-property: opacity; -moz-transition-duration: 1s; -moz-transition-delay: 0s; -webkit-transition-property: opacity; -webkit-transition-duration: 1s; -webkit-transition-delay: 0s; -o-transition-property: opacity; -o-transition-duration: 1s; -o-transition-delay: 0s; transition-property: opacity; transition-duration: 1s; transition-delay: 0s; }
  8. 9 points
    Залить файлы на хостинг, открыть сайт в браузере, следовать указаниям на экране. Залить файлы на хостинг с заменой, перейти по адресу /admin/upgrade, следовать указаниям на экране. FAQ будет дополняться Автор: @IAF
  9. 9 points
    Делаем зафиксированное в IPS4 при помощи jquery плагина stickUp. Нам потребуются руки и архив с нужными файлами. file.zip Для начала заливаем содержимое скачанного архива в корень форума, чтобы получилось так: форум.ru/stick_header/*файлы папки*. Затем переходим в АЦ > Внешний вид > Стили и шаблоны > Ваш стиль и создаем там html шаблон с такими данными: Далее в созданный шаблон добавляем это: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="{setting="base_url"}stick_header/stickUp_modified.js"></script> <script type="text/javascript"> jQuery(function($) { $(document).ready( function() { $('#elSearchNavContainer').stickUp(); }); }); </script> <link rel="stylesheet" href="{setting="base_url"}stick_header/animate.css" /> Сохраняем шаблон и переходим в globalTemplate и после: <title>{expression="output.getTitle( $title )"}</title> добавляем этот код: {template="stickMenu" app="core" group="global" params=""} Сохраняем. Переходим в шаблон navBar и после: <ul id='ipsLayout_mainNav' class='ipsPos_left'> добавляем это: <li data-role='navItem' class='stuck_logo' style='display: none;'> <a href='{setting="base_url"}'>IPS</a> </li> Код внутри тегов меняете на название своего форума. Там же находим: <div class='ipsClearfix' id='elSearchNavContainer' data-controller='core.front.core.navBar'> и после добавляем: <div class="sticker"> В конце шаблона находим: </div> </nav> И за этим кодом добавляем </div> И напоследок переходим в custom.css добавляем эти стили: #elSearchNavContainer { z-index: 5001; } .stuckMenu { left: 0; width: 100%; } .stuck_logo > a { font-size: 18px !important; opacity: 1 !important; } .stuck_logo > a > i.fa { font-size: 20px; } В результате получим
  10. 8 points
    В приложении Галерея IPS4 есть кнопка просмотра оригинала фотографии в лайтбоксе, однако, как показывает практика, мало кто обращает на неё внимание, а она делает основной функционал и удобство просмотра фоток. Что мы получим: при клике на фотографию, откроется полноэкранный лайтбокс с фотографией. Редактируем шаблона: gallery > front > view > imageFrame: Меняем весь код шаблона на: <div id='elGalleryImage' data-role="imageFrame" {{if $image->data}}data-imageSizes='{$image->data}'{{endif}}> {{if $image->media }} <div class='cGallery_videoContainer'> {{if in_array( $image->file_type, array( 'video/ogg', 'video/webm', 'video/mp4', 'video/x-flv', 'video/3gpp' ) )}} <video id="elGalleryVideo" data-role="video" class="ipsPos_center video-js vjs-default-skin" controls preload="auto" width="100%" height="100%"{{if $image->medium_file_name }} poster="{file="$image->medium_file_name" extension="gallery_Images"}"{{endif}} data-setup='{"techOrder": ["html5","flash"]}'> <source src="{file="$image->original_file_name" extension="gallery_Images"}" type='{$image->file_type}' /> </video> {{else}} <!-- Old fashioned...supports things like wmv though--> <embed wmode="opaque" autoplay="true" showcontrols="true" showstatusbar="true" showtracker="true" src="{file="$image->original_file_name" extension="gallery_Images"}" width="480" height="360" type='{$image->file_type}' /> {{endif}} </div> {{else}} <a href='{file="$image->masked_file_name" extension="gallery_Images"}' title='Открыть в полном размере' data-ipsTooltip data-ipsLightbox data-ipsLightbox-useEvents> <div class='cGalleryViewImage' data-role='notesWrapper' data-controller='gallery.front.view.notes' data-imageID='{$image->id}' {{if $image->canEdit()}}data-editable{{endif}} data-notesData='{$image->_notes_json}'> <img src='{file="$image->masked_file_name" extension="gallery_Images"}' alt='{$image->caption}' title='{$image->caption}' data-role='theImage' class='ipsHide'> <noscript> <img src='{file="$image->masked_file_name" extension="gallery_Images"}' alt='{$image->caption}' title='{$image->caption}' data-role='theImage'> </noscript> {{if count( $image->_notes )}} <noscript> {{foreach $image->_notes as $note}} <div class='cGalleryNote' style='left: {$note['LEFT']}%; top: {$note['TOP']}%; width: {$note['WIDTH']}%; height: {$note['HEIGHT']}%'> <div class='cGalleryNote_border'></div> <div class='cGalleryNote_note'>{$note['NOTE']}</div> </div> {{endforeach}} </noscript> {{endif}} </div> </a> <ul class='ipsButton_split cGalleryViewImage_controls'> {{if $image->canEdit()}} <li><a href='#' class='ipsButton ipsButton_overlaid ipsButton_verySmall ipsJS_show' title='{lang="add_image_note"}' data-action='addNote' data-ipsTooltip><i class='fa fa-pencil-square-o'></i></a></li> <li> <a href='#' class='ipsButton ipsButton_overlaid ipsButton_verySmall' title='{lang="rotate_image"}' data-ipsTooltip id='elImage_rotate' data-ipsMenu data-ipsMenu-appendTo='#elGalleryImage'> <i class='fa fa-rotate-right'></i> <i class='fa fa-caret-down'></i> </a> <ul class='ipsMenu ipsMenu_auto ipsHide' id='elImage_rotate_menu'> <li class='ipsMenu_item'> <a href='{$image->url( 'rotate' )->csrf()->setQueryString( 'direction', 'right' )}' title='{lang="rotate_right"}'> <i class='fa fa-rotate-right'></i> &nbsp;{lang="rotate_right"} </a> </li> <li class='ipsMenu_item'> <a href='{$image->url( 'rotate' )->csrf()->setQueryString( 'direction', 'left' )}' title="{lang="rotate_left"}"> <i class='fa fa-rotate-left'></i> &nbsp;{lang="rotate_left"} </a> </li> </ul> </li> {{endif}} {{if count( $image->sizes() ) > 1}} <li> <a href='#' class='ipsButton ipsButton_overlaid ipsButton_verySmall' title='{lang="view_all_sizes"}' data-ipsTooltip id='elImageSize' data-ipsMenu data-ipsMenu-appendTo='#elGalleryImage'> <i class='fa fa-picture-o'></i> <i class='fa fa-caret-down'></i> </a> <ul class='ipsMenu ipsMenu_medium ipsHide' id='elImageSize_menu'> {{foreach $image->sizes() as $k => $dims}} <li class='ipsMenu_item'><a href='{$image->url()->setQueryString( 'imageSize', $k )}'>{$dims[0]}x{$dims[1]}</a></li> {{endforeach}} </ul> </li> {{endif}} {{if ( $image->album_id AND $image->author()->member_id == \IPS\Member::loggedIn()->member_id ) OR \IPS\gallery\Image::modPermission( 'edit', NULL, $image->container() ) || \IPS\Member::loggedIn()->member_id}} <li> {{if ( $image->album_id AND $image->author()->member_id == \IPS\Member::loggedIn()->member_id ) OR \IPS\gallery\Image::modPermission( 'edit', NULL, $image->container() )}} <a href='#' class='ipsButton ipsButton_overlaid ipsButton_verySmall' data-ipsTooltip title='{lang="set_image_as"}' id='elImageSetAs' data-ipsMenu data-ipsMenu-appendTo='#elGalleryImage'> <i class='fa fa-object-group'></i> <i class='fa fa-caret-down'></i> </a> <ul class='ipsMenu ipsMenu_auto ipsHide' id='elImageSetAs_menu'> {{if \IPS\gallery\Image::modPermission( 'edit', NULL, $image->container() ) AND ( $image->album_id AND $image->author()->member_id == \IPS\Member::loggedIn()->member_id )}} <li class='ipsMenu_item'><a data-action='setAsCover' href='{$image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'category')->csrf()}'>{lang="cover_category_only"}</a></li> <li class='ipsMenu_item'><a data-action='setAsCover' href='{$image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'album')->csrf()}'>{lang="cover_album_only"}</a></li> <li class='ipsMenu_item'><a data-action='setAsCover' href='{$image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'both')->csrf()}'>{lang="cover_both"}</a></li> {{elseif \IPS\gallery\Image::modPermission( 'edit', NULL, $image->container() )}} <li class='ipsMenu_item'><a data-action='setAsCover' href='{$image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'category')->csrf()}'>{lang="cover_category"}</a></li> {{elseif $image->album_id AND \IPS\Member::loggedIn()->member_id AND $image->author()->member_id == \IPS\Member::loggedIn()->member_id}} <li class='ipsMenu_item'><a data-action='setAsCover' href='{$image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'album')->csrf()}'>{lang="cover_album"}</a></li> {{endif}} {{if \IPS\Member::loggedIn()->member_id}} <li class='ipsMenu_sep'><hr></li> <li class='ipsMenu_item'> <a href='{$image->url('setAsPhoto')->csrf()}' data-action='setAsProfile' title="{lang="set_gallery_image_photo"}">{lang="set_gallery_image_photo"}</a> </li> {{endif}} </ul> {{elseif \IPS\Member::loggedIn()->member_id}} <a href='{$image->url('setAsPhoto')->csrf()}' class='ipsButton ipsButton_overlaid ipsButton_verySmall' title='{lang="set_gallery_image_photo"}'> {lang="set_gallery_image_photo"} </a> {{endif}} </li> {{endif}} <li> <a href='{$image->url('download')}' class='ipsButton ipsButton_overlaid ipsButton_verySmall' title='{lang="download"}' data-ipsTooltip><i class='fa fa-download'></i></a> </li> <li> <a href='{file="$image->masked_file_name" extension="gallery_Images"}' class='ipsButton ipsButton_overlaid ipsButton_verySmall' title='{lang="view_in_lightbox"}' data-ipsTooltip data-ipsLightbox data-ipsLightbox-useEvents><i class='fa fa-expand'></i></a> </li> </ul> {{endif}} <span id='elGalleryImageNav'> {{if $prev}} <a href='{$prev->url()->setQueryString( 'browse', 1 )}' id='elGalleryImageNav_prev' data-action='prevImage' data-imageID='{$prev->id}' title='{$prev->caption}'><i class='fa fa-angle-left'></i></a> {{endif}} {{if $next}} <a href='{$next->url()->setQueryString( 'browse', 1 )}' id='elGalleryImageNav_next' data-action='nextImage' data-imageID='{$next->id}' title='{$next->caption}'><i class='fa fa-angle-right'></i></a> {{endif}} </span> </div>
  11. 8 points
    Есть конечно и много других способов (наверное) внедрить кнопку для мод.тегов (например, предупреждение и т.п), но все это можно сделать и в админке. Итак, открываем Внешний вид > Настройки редактора > Добавить кнопку Вводим данные и загружаем картинку, ставим тип Блочный, в боксе замены HTML пишем <table cellpadding="0px" cellspacing="0px" style="width: 100%; border: 1px solid #2E691C; border-left: 4px solid #2E691C; vertical-align: middle;"> <tr style="height: 40px; line-height: 40px;"> <td style="background-color: #95E673; padding-left:10px; font-size: 10px;" width="95%"> <u>ИНФОРМАЦИОННОЕ СООБЩЕНИЕ</u> <b>{option}</b> </td> <td style="max-width: 80px; width: 80px; text-align: center; background-color: #1FB852;; font-size: 36px; color: white;"> <b>I</b> </td> </tr> <tr style="line-height: 40px;"> <td colspan="2" style="padding-left:10px; background-color: #C8FFB0; color: #20541C; font-size: 12px; font-weight: bold;">{content}</td> </tr> </table> Не забываем выставлять права на пользование кнопкой (вкладка рядом справа).
  12. 8 points
    Добавить строку в панели инструментов (редактор) Перейдите в ACP > Customization > Editor > Toolbars нажмите кнопку Add Button > Custom Заполните поля в соответствии со скриншотами Button Title : Line Icon : Загрузить прикрепление в ниже Type : Inline Use option? : NO HTML: <hr class="ipsHr"> Сохранить Перетащите значок в редакторе пример Извините за плохой русский line-icon.rar
  13. 8 points
    Всё делается быстро и достаточно просто. 1. Создаём блок под рекламу <div id="fixblock"> <!-- тут должен быть ваш код рекламы --> </div> 2. Добавляем стиль в Custom.css /* Плавающий блок рекламы */ .sticky { position: fixed; z-index: 101; } .stop { position: relative; z-index: 101; } 3. Добавляем скрипт в шаблон globalTemplat перед </body> <!-- Плавающий блок рекламы --> <script> (function(){ var a = document.querySelector('#fixblock'), b = null, P = 0; // если ноль заменить на число, то блок будет прилипать до того, как верхний край окна браузера дойдёт до верхнего края элемента. Может быть отрицательным числом window.addEventListener('scroll', Ascroll, false); document.body.addEventListener('scroll', Ascroll, false); function Ascroll() { 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.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 Ra = a.getBoundingClientRect(), R = Math.round(Ra.top + b.getBoundingClientRect().height - document.querySelector('footer').getBoundingClientRect().top + 120); // селектор блока, при достижении верхнего края которого нужно открепить прилипающий элемент; Math.round() только для IE; если ноль заменить на число, то блок будет прилипать до того, как нижний край элемента дойдёт до футера if ((Ra.top - P) <= 0) { if ((Ra.top - P) <= R) { b.className = 'stop'; b.style.top = - R +'px'; } else { b.className = 'sticky'; b.style.top = P + 'px'; } } else { b.className = ''; b.style.top = ''; } window.addEventListener('resize', function() { a.children[0].style.width = getComputedStyle(a, '').width }, false); } })() </script>
  14. 7 points
    Добавьте кнопки загрузки файлов на ваш CKEditor Перейти к ACP > Customization > Themes > Your theme >edit HTML and CSS > core > global > forms > editorAttachments и найти: <li class='ipsPos_right ipsResponsive_noFloat'> после этого, вставьте этот код: <span class="uploadfile ipsButton ipsButton_light ipsButton_verySmall"><a href="" onClick="javascript:window.open('https://mediafire.com','','location=0,status=0,scrollbars=1,width=760,height=660');"><i class="fa fa-upload" aria-hidden="true"></i> MediaFire</a></span> <span class="uploadfile ipsButton ipsButton_light ipsButton_verySmall"><a href="" onClick="javascript:window.open('http://filedropper.com','','location=0,status=0,scrollbars=1,width=760,height=660');"><i class="fa fa-upload" aria-hidden="true"></i> FileDropper</a></span> <span class="uploadfile ipsButton ipsButton_light ipsButton_verySmall"><a href="" onClick="javascript:window.open('http://www.tinyupload.com/','','location=0,status=0,scrollbars=1,width=760,height=660');"><i class="fa fa-upload" aria-hidden="true"></i> TinyUpload</a></span> Сохранить Перейти к CSS > custom.css и вставить этот код: .uploadfile a:link { text-decoration: none; color: #333; transition: all 0.5s ease; } .uploadfile a:visited { text-decoration: none; color: #333; transition: all 0.5s ease; } Сохранить Вы можете разместить ссылки на свой вкус наслаждаться
  15. 6 points
    Для исправления добавьте в Custom.css следующий код. html[dir="ltr"] .cProfileHeader_name { margin-right: 0; }
  16. 6 points
    Сегодня капался с форматированием и нашел несколько плюх для вас) <span style='font-weight: bold; background: linear-gradient(to left, #d07fff, #8473fd ); -webkit-background-clip: text; -webkit-text-fill-color: transparent;'> <span style='font-weight: bold; background: linear-gradient(to right, #ff6d6d, #ff08d5); -webkit-background-clip: text; -webkit-text-fill-color: transparent;color: #FF512F;'> <span style='font-weight: bold; background: linear-gradient(to right, #ffd400, #d53a3a); -webkit-background-clip: text; -webkit-text-fill-color: transparent;'> <span style='font-weight: bold; background: #d21df3;; -webkit-background-clip: text; -webkit-text-fill-color: transparent;text-shadow: 1px 1px 10px #d21df3;'>
  17. 6 points
    Надеюсь многие видели такое шикарное оформление форумов. Я поделюсь с Вами как это сделать. для начала нужно сделать заготовки изображений для ваших разделов. прилагаю PSD файл для работы в фотошопе, от вас потребуется только наложить нужное вам изображение вместо моего (чтобы наложить фон нужно выделить изображение и нажать Alt). Далее сохраняем в формате ...png загружаем через ресурсы вашего шаблона. Следующим этапом Вам нужно определить ID вашего раздела, кликаем правой кнопкой мыши "просмотр кода" и видим следующее: копируем ваш ID и идем в стили (я добавлял стили в шаблон custom.css), вставляем следующий код; .cForumList li.ipsDataItem[data-forumid='ВАШ ID форума'] { background-image: url(/images/bf.png) !important; background-position: left top !important; background-repeat: no-repeat !important; text-shadow: black 1px 1px 1px, black -1px -1px 1px, black -1px 1px 1px, black 1px -1px 1px !important; } И радуемся! 1.psd
  18. 5 points
    Если в настройках модуля закрыть профили пользователей от гостей (что во многих случаях полезно, т.к. спамеры зачастую используют профили в своих неблаговидных целях), движек соот-но закрывает для гостей и ссылки на профили. Закрывает, но не везде. По недоразумению (которых, увы, немало насоздавали разработчики) остаются ссылки цитируемого автора в цитатах. А это генерирует кучу ошибок в Яндекс Вебмастере и Search Console. Не страшно конечно, но и неприятно. Конечно, можно закрыть все это в robots.txt ( Disallow: /profile/ ) , но боты же все равно будут шариться по ссылкам, опять же без толку нагружая сайт. Закрыть же ссылки на профиль в цитатах можно простым скриптом, который нужно вставить перед тегом </body> (или лучше создать отдельный шаблон, куда сувать такие скрипты и подлючить этот шаблон к globalTemplate ) {{if !\IPS\Member::loggedIn()->member_id}} <script type="text/javascript"> $('[data-ipsquote]').removeAttr("data-ipsquote-userid"); </script> {{endif}} Кстати, плагин InsertName тоже оставляет ссылки на профиль. Если он стоит, то можно добавить к вышеприведенному скрипту еще одну строчку. Получится вот так {{if !\IPS\Member::loggedIn()->member_id}} <script type="text/javascript"> $('[data-ipsquote]').removeAttr("data-ipsquote-userid"); $('[data-mentionid]').removeAttr("href data-ipshover data-ipshover-target"); </script> {{endif}}
  19. 5 points
    Как правильно настроить URL адрес сайта в файле .htaccess Доброго времени суток, уважаемые читатели. Каждый, кто хоть немного начал разбираться в поисковом продвижении, занимается продвижением своего сайта, волнуется за правильное индексирование сайта поисковыми роботами, должен уметь правильно настраивать URL адрес сайта, владеть базовыми знаниями о файле .htaccess, уметь внести в него изменения. И сегодня я хочу рассказать, какие необходимы минимальные настройки, чтобы сайт корректно индексировался, чтобы не создавалось лишнего дублирования страниц. Конечно, в сети очень много такой информации, но до сих пор, практически ежедневно, я сталкиваюсь с неправильно настроенным адресом сайта, когда главная страница находится по 2, 4, а то и по 6 разным адресам. И это очень плохо. И главная проблема кроется в том, что в наше время очень легко поставить, практически, любую CMS. И даже не нужно знать никаких особенных знаний. А вот чтобы правильно настроить, как раз и нужны дополнительные знания. Почему так важно, чтобы URL были правильно сформированы? Потому что ошибки в URL затрудняют индексирование сайта поисковыми системами, создают дублированный контент, из-за чего у сайта могут возникнуть проблемы с продвижением.Стоит понимать, что несмотря на то, что в ТОПе поисковых систем достаточно часто попадаются сайты с динамическими адресами, с неправильно настроенным адресом сайта, и поисковые системы, конечно же проиндексируют любой сайт, по крайней мере они попытаются это сделать, так вот несмотря на все это, очень важно при создании нового сайта учесть все возможные варианты отображения адреса сайта и не допускать ошибок с самого начала, т.к. это обязательно скажется положительно на сайте, добавит дополнительный плюсик в его карму. Правильно сформированный адрес – это прежде всего забота о самом себе, точнее о своем сайте, который в ответ обязательно подарит вам больше посетителей, клиентов и прочее. Откуда берутся ошибки в URL? Есть несколько источников проблем неправильного адреса сайта и страниц. Первая и самая частая зависит не от CMS, а от настроек самого домена. Так повелось, что во время привязки домена к хостингу, он получает несколько разных адресов, в зависимости от задач, и некоторые из этих адресов индексируются поисковыми системами. Из-за этого создается дублирование. Более подробно об этом ниже.Вторая проблема заключается непосредственно в CMS, которые динамически создают адреса. И об этом мы так же сегодня поговорим. Стоит понимать, что те или иные проблемы зависят от каждой конкретной CMS. Я постараюсь охватить все проблемы в масштабе, и совсем не обязательно, что все проблемы возникнут на одном взятом сайте. Ведь у разных CMS разная логика, и где одна проблема полностью решена разработчиками, может существовать другая. Итак, приступим. Что за чудо-юдо файл .htaccess? Я не хочу грузить вас лишней информацией, но т.к. основные изменения мы будет делать именно в этом файле, то стоит немного рассказать о нем. Это очень полезный, интересный и важный файл для любого сайта. Именно этот файл передает запросы пользователей серверу и наоборот, получая ответ от сервера, пересылает обратно пользователям. В технические аспекты вдаваться не будем, я и сама в них не сильна, а вот уметь настроить адрес сайта должен каждый. Итак, у каждого сайта должен быть файл .htaccess, и он есть в каждой CMS по умолчанию. Но часто, после установки CMS файл имеет другое название и поэтому не выполняет своих функций. Так же он может быть полупустым или настройки в нем могут быть закомментированы. Важно также знать, что в современных CMS файл .htaccess может быть в каждой папке сайта. Но нас интересует только один единственный, который находится в корневой директории сайта, т.е. в той папке, в которой находятся все папки и файлы вашей CMS. Часто эта папка носит названия public_html, html или www.Подключившись к своему сайта по FTP или зайдя в файловый архив через панель управления хостингом, вы обнаружите этот файл. Как уже сказала, если вы им ещё не пользовались, он может иметь расширение txt. Чтобы файл начал выполнять свои функции, его необходимо правильно переименовать. Чтобы не путаться, лучше всего скачать данный файл к себе на компьютер, открыть в блокноте, далее в меню Файл выбрать Сохранить как. При данном сохранении обязательно в пункте Тип файла выберите Все файлы. А само имя начинается с точки (.). Если вы не поставите точку в начале названия, файл не будет работать. После этого готовый файл уже можно заново заливать на хостинг. Конечно, вы можете переименовать данный файл и непосредственно в файловом менеджере или в FTP клиенте, просто вы должны быть уверены, что файл не имеет никакого другого расширения, кроме .htaccess. В зависимости от CMS, возможно, вам придется внести какие-либо изменения в свой файл, чтобы он начал корректно работать, данную информацию лучше искать на официальном сайта тех. поддержки вашей CMS. Сейчас же у нас статья о том, как настроить данный файл для правильного индексирования сайта поисковыми системами. Не сильна я в технических деталях настройки сервера, но прежде, чем мы приступим, вы должны найти в файле .htaccess такую строчку: RewriteEngine On Вообще из всех виденных мной .htaccess эта строка была у всех, а функция mod_rewrite, о которой говорит данная запись, включена у всех хостеров. Но, если вдруг в вашем файле такой записи нет, то лучше уточните у своего хостера, включена ли у них функция mod_rewrite. Ниже этой строки должна быть ещё одна RewriteBase / Если ее нет, то добавьте ее самостоятельно. На всякий случай, просмотрите наличие этой строки до самого конца файла.Все остальные записи, о которых пойдет речь в этой статье, должны находиться ниже этих двух строк. Это самое важное, что я хотела сказать прежде, чем мы приступим к основной части данной статьи. Итак, основные ошибки и способы их устранения. Адрес сайта с WWW или без Самая часто встречаемая ошибка. Когда вы привязываете свой домен к хостингу, ему прописывается несколько записей типа А. После того, как на хостинг вешается сайт, он становится доступным по разным адресам http://www.site.ru http://site.ru Это уже классика жанра. Для меня самое удивительное в такой ситуации всегда остается то, что даже если на сайт или внутри сайта нет ни одной ссылки с www, поисковик обязательно проиндексирует его с www.На данный момент, приставка www является аттавизмом, т.е. эта часть домена утратила свою функциональность, и современные сайты не нуждаются в ней. Но многие вебмастера продолжают традицию оставлять адрес сайта с www, и в этом нет ничего плохого. Просто это не несет никакой функциональности. Просто привычка и не более. Лично мое мнение – www абсолютно бесполезная приставка. Но до тех пор, пока в настройках DNS домена будет оставаться данный пункт, пока поисковые системы непонятным образом будут находить адрес сайта именно с приставкой, на нас ложится ответственность предупреждать возможную проблему дублирования контента на сайте. Итак, сейчас вы должны проверить, как открывается ваш сайт. Сначала вводим в адресную строку браузера адрес своего сайта с www http://www.site.ru Сайт загрузился. Если в адресной строке ничего не изменилось, адрес так и отображается с www, то удаляем из адреса www и обновляем страницу. Смотрим в адресную строку браузера.Если адрес изменился на www.site.ru, значит у вас домен настроен на постоянное отображение с www и ничего менять не нужно. Если адрес сайта не изменился, значит ваш сайт открывается по двум разным адресам, а значит уже создается дублирование контента и поисковый робот скорее всего уже проиндексировал оба адреса, как разные страницы, и уже раздумывает, как бы вас наказать. Как настроить домен с www или без www Теперь необходимо решить, в какую сторону менять домен, оставлять его с www или делать без? В таком случае лучше спросить у самих поисковых систем, какой из адресов они считают правильным. И лучше подстраиваться под Яндекс, а не под Google.Раньше было достаточно посмотреть выдачу Яндекса, чтобы понять, какой домен Яндекс считает главным. Но сейчас Яндекс показывает все домены без www, но при этом все равно упорно продолжает индексировать с www. Какие возможны другие варианты? Можно посмотреть показатель сайта тИЦ с www или без. Эту информацию показывают любые SEO инструменты. Или в Яндекс Вебмастер (что такое Яндекс Вебмастер) в меню выбираем Индексирование сайта – Страницы в поиске. Яндекс показывает список проиндексированных страниц именно с таким адресом, который считает главным. Итак, главное зеркало домена выбрано, осталось внести некоторые изменения в служебные файлы сайта. Если вы только создали свой сайт и он ещё не проиндексирован поисковыми системами. При добавлении сайта в инструменты для вебмастеров Google (Как пользоваться инструментами для вебмастера Google) добавить оба адреса, подтвердить свои права, и в настройках (Конфигурация сайта – Настройки) каждого из них, указать Основной домен. Создать файл Robots.txt и указать в нем директиву Host User-agent: Yandex Host: site.ru Если ваш сайт уже существует и проиндексирован поисковыми системами, то к этим двум пунктам добавляем третий. Чтобы поисковые системы начали правильно воспринимать адрес вашего сайта, находить его только по одному адресу, то сделать это можно с помощью редиректа 301, который и настраивается в файле .htaccess.Думаю, удобней всего вносить изменения в файл, предварительно скачав его к себе на компьютер. Открываем файл .htaccess. и добавляем 301 редирект (помните, после каких строчек нужно добавить?) Перенаправляем домен без www на домен с www RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L] Обратная ситуация, перенаправляем домен с www на домен без www RewriteCond %{HTTP_HOST} ^www.example.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L] Сохраняем, закачиваем файл на хостинг, проверяем доступность сайта по адресу, с которого настраивали перенаправление. Если все сделано правильно, то вбивая адрес в браузере, который не должен индексироваться, во время загрузки страницы адрес сайта в адресной строке бразуера сам изменится на тот, который вы выбрали основным. Адрес сайта со слэшем / в конце URL или без Вторая проблема, которая напрямую зависит от CMS – это окончание URL. Ставится ли в конце адреса слэш или нет. http://site.ru http://site.ru/ Вообще, во многих CMS эта проблема решена, сами CMS программно подставляют слэш в конце URL, некоторые наоборот, специально убирают, но в любом случае вы должны проверить. Т.к. есть и такие CMS, которые открывают сайт и так, и так. И если первые два варианта ещё куда ни шло, то последний - очень плохо. Почему это важно? Да потому, что для поисковых систем это разные адреса. И если разработчики CMS не продумали этот момент, то он полностью ложится на плечи вебмастера или оптимизатора.А как правильно, спросите вы? Если не вдаваться в технические детали, то суть в том, что главная страница сайта по сути является каталогом, который содержит вложенные подкаталоги и отдельные страницы – файлы. Исторически так сложилось, что каждый каталог, который содержит внутри себя подкаталоги и отдельные файлы должен заканчиваться слэшем, показывая тем самым, что это каталог, а не конечный документ. Конечный же документ не должен заканчиваться слэшем, сообщая тем самым, что это конечный документ и больше ничего нет. Таким образом, адрес сайта и рубрики, которые содержат конечные документы, должны заканчиваться слэшем. http://site.ru/ сообщает, что внутри каталога site.ru находятся ещё документы. http://site.ru/rubrika/ сообщает, что внутри каталога site.ru находится подкаталог rubrika, который содержит в себе ещё какие-то документы. И наконец http://site.ru/rubrika/page.html сообщает, что внутри каталога site.ru находится подкаталог rubrika, который содержит в себе документ page.htmlНо это все теория, и в современном интернете все вебмастера разошлись, кто в лес, кто по дрова. И даже окончание .html уже многие также считают аттавизмом, как и www. А теперь давайте посмотрим, добавляется ли к адресу вашего сайта слэш? Вводим в адресную строку адрес своего сайта без слэша. Смотрим, добавился слэш или нет. Вводим адрес со слэшем, и также смотрим, изменилось ли что-то в адресной строке. На всякий случай предупреждаю, что в Google Chrome лучше не смотреть, он удаляет все слэши. Если вас перекидывает на один из вариантов, значит разработчики CMS уже позаботились об этом. Что делать, если ваш сайт открывается в обоих случаях, и адрес не меняется? В таком случае поможет 301 редирект. Незаменимая просто штука для SEO. Как настроить слэш в конце адреса сайта Сначала нам нужно выяснить, а как сама CMS формирует адреса. Не знаю, как это делают профессионалы, я нашла чисто дилетантский способ. С вероятностью в 99% в шапке сайта ваш логотип или название сайта выводится в виде ссылки на главную. А сама ссылка формируется программно CMS. Подводим курсор мышки к ссылке в заголовке или логотипу сайта и внизу браузера смотрим ссылку Внизу мы видим, что адрес формируется со слэшем на конце. Значит нам нужно прописать в файле .htaccess 301 редирект, который будет перенаправлять с адреса без слэша на адрес со слэшем. Да и вообще, на мой взгляд это самый оптимальный вариант с той точки зрения, что некоторые пользователи, давая ссылку на ваш сайт, могут ее не скопировать из адресной строки, а прописать вручную. И вряд ли кто подумает прописать на конце слэш. А ведь для поисковика это разные ссылки. И такая ссылка принесет значительно меньше пользы. Настроить слэш в конце URL поможет эта запись RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ /$1/ [R=301,L] Это случается редко, но иногда, в зависимости от CMS, от уже имеющихся настроек, особенно когда настроены ЧПУ ссылки, некоторые настройки могут конфликтовать друг с другом. В таком случае лучше поискать поддержку на официальном сайте CMS, которой вы пользуетесь. В адресе главной страницы index.php или main Не знаю, как в других CMS, но главный специалист по формированию таких URL – это Joomla. Да, это такая CMS, которая умудряется выдавать пользователю главную страницу, как минимум, по трем адресам. http://site.ru/ http://site.ru/index.php или http://site.ru/index.html http://site.ru/main И это я ещё упустила вариант, когда сам сайт открывается с www и без. А вы проверили свой сайт на Joomla? Или у вас другая CMS? Проверьте на всякий случай. Если сайт новый, то проверяем вручную, вбивая в адресной строке браузера разные адреса. Если сайт уже проиндексирован, то смотрим инструменты для вебмастеров Яндекс и Google, какие страницы находятся в индексе. Как убрать index.php и main Если вы обнаружили, что главная страница сайта открывается одновременно по разным адресам, то для вас подойдет такое правило, которое мы прописываем все в том же файле .htaccess.Для страницы main #RewriteBase / Redirect 301 /main http://site.ru/ Для страницы index.php RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.ru/ [R=301,L] Обращаю ваше внимание на то, что если вы используете основной адрес с www, то запись http://site.ru/ должна быть с www, т.е. http://www.site.ru/. Соответственно, если вы обнаружили файл index с расширением .html, то указываем его в правиле. Эта статья не моя - отредактированная мной для вас
  20. 5 points
    Аватар для Border Цвет в зависимости от группы Идём в свой шаблон и переходим по пути: Шаблоны --> core --> front --> global --> userPhoto и заменить все содержание с ето: {{if $member->member_id and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) )}} {{$memberURL = ( $warningRef ) ? $member->url()->setQueryString( 'wr', $warningRef ) : $member->url();}} <a href="{$memberURL}" data-group_id='{$member->member_group_id}' {{if $hovercard}}data-ipsHover data-ipsHover-target="{$memberURL->setQueryString( 'do', 'hovercard' )}"{{endif}} class="ipsUserPhoto ipsUserPhoto_{$size}{{if $classes}} {$classes}{{endif}}" title="{lang="view_user_profile" sprintf="$member->name"}"> <img src='{$member->photo}' alt='{$member->name}' itemprop="image"> </a> {{else}} <span class='ipsUserPhoto ipsUserPhoto_{$size} {{if $classes}}{$classes}{{endif}}'> <img src='{$member->photo}' data-groupID='{$member->member_group_id}' alt='{$member->name}' itemprop="image"> </span> {{endif}} Перейти к вашем custom.css и поставите ето код: .ipsUserPhoto[data-group_id="4"] { border: solid 3px #e74c3c; } .ipsUserPhoto[data-group_id="3"] { border: solid 3px #2c3e50; } Изменит 4 и 3 с id вашем груп Id вашем група может увидет в АКП - Members - Group инажмите груп который вы хотите увидеть. В адресной строке вы увидите id ваша група:
  21. 5 points
    Уже который раз замечаю, что у многих проблема с настройкой авторизации через ВК на IPS 4.x. Ну что же, пора помочь с настройкой этого чуда. Сначала открываете папку upload в архиве.. Из папок system\Login копируете файл в путь соответствующий названию папок. Из папок applications\core\sources\ProfileSync копируете файл тоже в путь соответствующий названию этих папок. Из папок applications\core\interface копируете папку vk в путь тоже соответствующий названию этих папок. Потом устанавливаем плагин(.xml) файл(он находится в корне архива, называется VKontakte.xml) Далее Система - Методы входа: Рядом с VKontakte нажимаем карандаш и вводим данные приложения(ID и секретный ключ). Потом возвращаемся в Методы входа и жмем на Выключен чтобы включить. Готово. P.S. Создать приложение можно по адресу http://vk.com/dev Жмем Создать приложение, тип выбираете Веб-сайт Надеюсь, я вам помог! IPS4-VKontakte.zip
  22. 4 points
    Пользуюсь бесплатными сертификатами от Let's Encrypt. Google браузер использовать категорически не рекомендую в силу того, что он сканирует все ваши файлы под предлогом антивирусной проверки и может являться шпионским модулем для различных специальных служб. Данные сертификаты Let's Encrypt предоставляются бесплатно всем желающим. Возможны как обычные ssl сертификаты для доменов второго уровня, так и с недавнего времени сертификаты wild card - для доменов третьего уровня вида *.site.com. Получить сертификат от Let's Encrypt (кроме сертификатов wild card) можно в панели управления ISP Lite 5. Сертификат будет продляться автоматически самой панелью. Если же вам интересно получение сертификата wild card, то это можно сделать самостоятельно на сайте www.sslforfree.com. Краткое руководство такое: 1) https://www.sslforfree.com/ - заходите сюда и вставляете домены site.com *.site.com - через пробел 2) Create Free SSL Certificate - кликаете большую зеленую кнопку. Далее кликаете Manually Verify Domain. 3) Download all certification - скачиваете сертификат. Если на этом этапе появляется ошибка, значит нужно проверить txt записи на DNS сервере, которые нужно было прописать для подтверждения владения доменом. Записи выдаются на этапе 2. 4) Далее закачиваете на сервер полученный zip файл в папку, где у вас будут хранится данные сертификата. Там же создаете файл с названием ssl.sh и запускаете его через консоль командой: sh /home/user/data/ssl/site.com/ssl.sh , где /home/user/data/ssl/site.com/ - путь, где у вас хранятся ssl сертификаты и sh скрипт. Содержимое sh файла скрипта (для систем на nginx): #!bash cd ${0%/*} unzip -o sslforfree.zip cat certificate.crt > cert.crt echo "" >> cert.crt cat ca_bundle.crt >> cert.crt /etc/init.d/nginx reload 5) Далее нужно прописать в nginx.conf следующие параметры после server {, где /home/user/data/ssl/site.com/ - путь, где у вас хранятся ssl сертификаты (пункт 4 выше): server_name site.com *.site.com www.site.com; ssl on; ssl_certificate /home/user/data/ssl/site.com/cert.crt; ssl_certificate_key /home/user/data/ssl/site.com/private.key; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4; add_header Strict-Transport-Security "max-age=604800"; ssl_dhparam /etc/ssl/certs/dhparam4096.pem; Примечание: Это наиболее простая ручная установка обычных и wild card сертификатов. Через панель ISP Lite 5 можно автоматически установить обычные (не wild card) ssl сертификаты. Панель будет продлять его автоматически. При ручной установке всю процедуру придется повторять раз в 3 мес. - равно на столько выдается бесплатный сертификат. Также возможно использование различных автоматических установщиков сертификатов, например, achme v.2, если ваш ДПС провайдер поддерживает удаленное изменение txt записи домена. Получить техническую поддержку и совет по использованию скриптов для автомаnbческой установки ssl сертификатов от Let's Encrypt можно тут: https://community.letsencrypt.org/
  23. 4 points
    Sipsb

    Кнопка вверх VK

    Идём в свой шаблон и переходим по пути: Шаблоны --> core --> front --> global --> globalTemplate Ищем закрывающийся тег </head> и перед ним вставляем следующий скрипт: <script type="text/javascript"> jQuery(document).ready(function(){ jQuery('body').append("<div class='scrolltotop'><div class='scrolltotop__side'></div><div class='scrolltotop__arrow'></div></div>"); jQuery(window).scroll(function(){ if (jQuery(this).scrollTop() > 350) { jQuery('.scrolltotop').fadeIn(); } else { jQuery('.scrolltotop').fadeOut(); } }); jQuery('.scrolltotop').click(function(){ jQuery("html, body").animate({ scrollTop: 0 }, 600); return false; }); });0 </script> Далее переходим во вкладку CSS и в custom.css добавляем оформление для нашего скрипта: .scrolltotop { display:none; position:fixed; width:3%; top:0; left:0; height:100% ;z-index:9000; cursor:pointer } .scrolltotop__side { position:fixed; width:3%; height:100%; top:0; left:0; background: black; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0.2); -moz-opacity:0.1; -khtml-opacity:0.1; opacity:0.1 } .scrolltotop__arrow { position:fixed; width:3%; height:100%; top:50px; left:0; background:url(http://путь_до_своей_кнопки/totop.png) top no-repeat; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0.4)"; filter:alpha(opacity=0.4); -moz-opacity:0.4; -khtml-opacity:0.4; opacity:0.4 }
  24. 4 points
    Silence

    Scroll Indicator

    Scroll Indicator Перейти к ACP -> Customization -> Theme -> Edit HTML and CSS -> Templates -> globalTemplate Поместите этот код перед </body> <div class="scroll-line"></div> <script> $(window).scroll(function(){var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height(); var scrolled = (wintop/(docheight-winheight))*100; $('.scroll-line').css('width', (scrolled + '%'));}); </script> Перейти к ACP -> Customization -> Theme -> Edit HTML and CSS -> CSS -> custom.css и вставить этот код: .scroll-line { height: 2px; margin-bottom: -2px; background: #e74c3c; width: 0%; position:fixed; top:0; z-index:9999; } Наслаждаться
  25. 4 points
    Всем привет, меня недавно заинтересовала то, как увеличить окно "Обложка" в Профиле на IPS 4.x. Все заключается в классе elProfileHeader. Зайдите в изменения вашего шаблон, CSS -> core -> front -> styles -> profiles.css В самом начале этого файла вы найдете elProfileHeader. Отредактируйте значения: padding-top: 125px height: 200px Первое значение ответственно за положения Аватарки, ника и группы. Второе значение, само окно - его размер. Внимание: Дабы, все расстояния были такие же как в оригинале, padding-top, должен быть меньше на 75px
  26. 3 points
    Всем привет народ, я тут новенький. Почитав тему решил немного дополнить, точнее раскрыть свою тему. Почему тут конфиги для Nginx а не для apache расскажу под спойлером в истории. Рекомендую прочесть, чтобы понять что к чему. и вот немного отступления. История... Рассуждая что лучше Апач или Нджинкс вычитал. Но мне попалась хорошая статься сравнений этих демонов https://habr.com/post/267721/ И было принято решение полностью отказаться от apache. Сделав резервную копию базы и сайта /var/www/html Я поставил систему с нуля, и запустил на нём Nginx. Так же подключил php и mysql. И тут началось самое интересное. Настройки После того как Nginx запущен и сделаны первоначальные настройки(они расписаны в любой статье), он никак не может распознать php. В интернете полно статей о том как настроить конфиг. location ~ \.php$ { try_files $uri =404; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } Данный код подключает php, но в следствии за ним ещё куча настроек, таких как время ожидания, Максимальный размер файла и прочих. Благо на ownCloud есть уже готовый пример, правда пришлось немного его править. В итоге получил полностью рабочий конфиг который хранится в /etc/nginx/sites-avalible/default server { listen 80; server_name _; error_page 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; } root /var/www/html; access_log /var/log/nginx/ng.access.log; error_log /var/log/nginx/ng.error.log; index index.php index.html index.htm; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; client_max_body_size 100M; # set max upload size fastcgi_buffers 64 4K; rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect; rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect; rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect; location / { # The following 2 rules are only needed with webfinger rewrite ^/.well-known/host-meta /public.php?service=host-meta last; rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; rewrite ^(/core/doc/[^\/]+/)$ $1/index.html; try_files $uri $uri/ index.php; } location ~ ^(.+?\.php)(/.*)?$ { try_files $1 =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$1; fastcgi_param PATH_INFO $2; fastcgi_keep_conn on; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } } Теперь всё работает, и время распаковать ранее сохраненные бэкапы. После того как я всё вернул на круги своя, сменив апач на нджикс, я решил оставить все как есть, проверить будет ли дос атака. И спустя время дос опять начался. Ну раз я уже начитан, и знаю что дальше делать, я принялся менять конфиги и защищать себя от доса по геопризнаку. Мне известно, что все наши клиенты из России, так же по логам я видел, что злоумышленник не просто караулит меня, а делает это с изыском. С помощью API сайта https://proxycheck.io/ гореть им в аду за это, я понимал, что клиентам из других стран нечего делать в нашем облаке. А посему было принято решение на уровне демона определять страну и отсылать уже в выше упомянутою страну ПОПЕНГАГЕН. Первым делом, вооружившись гайдам, я скачать от сюда http://www.maxmind.com/app/geolitecountry latest GeoLite Country Binary Format (это бесплатный вариант базы стран и соответствующих им блоков IP адресов). Распаковываем архив и кидаем файл GeIP.dat в папку /usr/local/etc/nginx/conf/geo если такой папки нет, создайте её или их. Далее нужно отредактировать файл /etc/nginx/nginx.conf секцию http в любом месте секции, вписываем geoip_country /usr/local/etc/nginx/conf/geo/GeoIP.dat; # подключаем GeIP базу map $geoip_country_code $bad_country { # модуль map создает переменные, значения которых зависят от других переменных, очень полезная штука default 1; # значение по умолчанию include /usr/local/etc/nginx/conf/geo/good_countries; # инклудим файл, его нужно будет создать чуть позже } Этот блок map, означает, что все страны находящиеся в базе данных, являются запрещенными по умолчанию, а в файле good_countries, будут перечислены разрешенные страны. Теперь в файл настроек (мой это ) /etc/nginx/sites-avalible/default вписываем после server { listen IP:80; server_name testhost.com; вот этот код if ($bad_country){ # если данная переменная установлена, то есть если страна не перечислена в файле good_countries return 444; # выдаем клиенту пустой ответ ( незачем отдавать 403 ошибку или еще какую-либо ) } Теперь создадим "тот файл", если хотяб краем глазом смотрели что вписываете, то увидели подключаемый файл good_countries. Создаем его в директории /usr/local/etc/nginx/conf/geo/ И вписываем значения UZ 0; RU 0; То есть тем самым разрешая вход на ваш сервер Узбекам и Русским. Ограничивать, точнее разрешать можно кому угодно, страны по двум буквам можно найти в гугле. После того как все сделали, просто перезагружаем демон nginx. Ну и собсно проверяем, зайдём через какой-нибудь веб прокси. И о чудо! действительно! Всё работает как надо. И теперь спустя уже почти 2 месяца, тормозов замечено небыло. Всё работает как часы, тьфу тьфу тьфу.
  27. 3 points
    Sipsb

    Если пропали темы

    Наконец-то нашел решение, как вернуть пропавшие (скрытые) темы. Ситуация была такова, заходишь в Раздел --> Форум такой-то в нём отображается (4 темы в этом разделе) а на самом деле видны всего 2 темы. Полез в PhpMyadmin --> Ваша_БД --> Forums_topics и заметил следующие, во вкладке moved_to значение NULL отображается по левому и правому краю, те что слева это и есть не видимые темы. Выполнил следующий запрос к БД. UPDATE `Ваша_БД`.`forums_topics` SET `moved_to` = NULL По окончанию запроса, выдало, что применено к 487 темам и О чудо )) Все темы появились на своих местах.
  28. 3 points
    Как сделать название темы в одну строку Перейти ACP > customization > theme > ваш скин edid HTML and CSS > forums > front > forums > topicRow найти: <a href='{$row->url()}' class='' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' itemprop="url"{{if $row->tableHoverUrl and $row->canView()}} data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}> изменит на: <a href='{$row->url()}' class='shortened link' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' itemprop="url"{{if $row->tableHoverUrl and $row->canView()}} data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}> Перейти ACP > customization > theme > ваш скин edid HTML and CSS > core > front > custom > custom.css и поставит ето код: .shortened { display: inline-block; max-width: 450px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; } Перед: После:
  29. 3 points
    Новый Scroll indicator Перейти к AКП -> Настройка -> Тема -> Изменить HTML и CSS -> Шаблоны -> globalTemplate, вставить этот код, перед </body> <div id='scroll'></div> <script type='text/javascript'> //<![CDATA[ var scrollTimer = null; $(window).scroll(function() { var viewportHeight = $(this).height(), scrollbarHeight = viewportHeight / $(document).height() * viewportHeight, progress = $(this).scrollTop() / ($(document).height() - viewportHeight), distance = progress * (viewportHeight - scrollbarHeight) + scrollbarHeight / 2 - $('#scroll').height() / 2; $('#scroll') .css('top', distance) .text(' (' + Math.round(progress * 100) + '%)') .fadeIn(600); if (scrollTimer !== null) { clearTimeout(scrollTimer); } scrollTimer = setTimeout(function() { $('#scroll').fadeOut(600); }, 1000); }); //]]> </script> Перейти к AКП -> Настройка -> Тема -> Изменить HTML и CSS -> CSS -> custom.css и вставить этот код: #scroll { display:none; position:fixed; top:0; right:15px; z-index:500; padding:3px 8px; background-color:#369fcf; color:#fff; border-radius:3px; font-size:14px; } #scroll:after { content: " "; position: absolute; top:50%; right:-10px; height:0; width:0; margin-top:-6px; border:6px solid transparent; border-left-color:#369fcf; }
  30. 3 points
    Silence

    Category Overlay Effect IPB 4

    Category Overlay Effect IPB 4 Перейти - ACP -> Customization -> Themes -> Edit HTML and CSS -> forums -> index -> index замените все содержимое с этого : замените 4 $categoryid='4 и .cForumRow[data-categoryid="4"] с ваш ID category замените 2 ,7 {{if \IPS\Member::loggedIn()->inGroup (array(2,7))}} с ваш ID group
  31. 2 points
    Панель пользователя со спойлером и информацией в нём Сперва отдельное спасибо @DavidGuetta за скрипт для globalTemplate В globalTemplate после <head> вставляем; <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <style type="text/css"> .spoiler_body {display:none; cursor:pointer;} </style> <script type="text/javascript"> $(document).ready(function(){ $('.spoiler_links').click(function(){ $(this).parent().children('div.spoiler_body').toggle('normal'); return false; }); }); </script> Открываем свой postContainer и заменяем всё на; {{$idField = $comment::$databaseColumnId;}} {{$itemClassSafe = str_replace( '\\', '_', mb_substr( $comment::$itemClass, 4 ) );}} {{if $comment->isIgnored()}} <div class='ipsComment ipsComment_ignored ipsType_light' id='elIgnoreComment_{$comment->$idField}' data-ignoreCommentID='elComment_{$comment->$idField}' data-ignoreUserID='{$comment->author()->member_id}'> {lang="ignoring_content" sprintf="$comment->author()->name"} <a href='#elIgnoreComment_{$comment->$idField}_menu' data-ipsMenu data-ipsMenu-menuID='elIgnoreComment_{$comment->$idField}_menu' data-ipsMenu-appendTo='#elIgnoreComment_{$comment->$idField}' data-action="ignoreOptions" title='{lang="see_post_ignore_options"}' class='ipsType_blendLinks'>{lang="options"} <i class='fa fa-caret-down'></i></a> <ul class='ipsMenu ipsHide' id='elIgnoreComment_{$comment->$idField}_menu'> <li class='ipsMenu_item ipsJS_show' data-ipsMenuValue='showPost'><a href='#'>{lang="show_this_post"}</a></li> <li class='ipsMenu_sep ipsJS_show'><hr></li> <li class='ipsMenu_item' data-ipsMenuValue='stopIgnoring'><a href='{url="app=core&module=system&controller=ignore&do=remove&id={$comment->author()->member_id}" seoTemplate="ignore"}'>{lang="stop_ignoring_posts_by" sprintf="$comment->author()->name"}</a></li> <li class='ipsMenu_item'><a href='{url="app=core&module=system&controller=ignore" seoTemplate="ignore"}'>{lang="change_ignore_preferences"}</a></li> </ul> </div> {{endif}} <a id='comment-{$comment->$idField}'></a> <article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='cPost ipsBox {{if $otherClasses}}{$otherClasses}{{endif}} ipsComment {{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) OR $comment->isFeatured()}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear ipsColumns ipsColumns_noSpacing ipsColumns_collapsePhone {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}}{{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->hidden() OR $item->hidden() === -2}}ipsModerated{{endif}}'> {{if $item->isQuestion() and !$comment->new_topic}} {template="postRating" group="topics" app="forums" params="$item, $comment, $votes"} {{endif}} <div class='cAuthorPane cAuthorPane_mobile ipsResponsive_showPhone ipsResponsive_block'> <h3 class='ipsType_sectionHead cAuthorPane_author ipsResponsive_showPhone ipsResponsive_inlineBlock ipsType_break ipsType_blendLinks ipsTruncate ipsTruncate_line'> {template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), $comment->author()->group['g_id']"} <span class='ipsResponsive_showPhone ipsResponsive_inline'>&nbsp;&nbsp;{template="reputationBadge" group="global" app="core" params="$comment->author()"}</span> </h3> <div class='cAuthorPane_photo'> {template="userPhoto" app="core" group="global" params="$comment->author(), 'large', $comment->warningRef()"} </div> </div> <aside class='ipsComment_author cAuthorPane ipsColumn ipsColumn_medium ipsResponsive_hidePhone'> <div class='author_info'> <div class="wa_pContainer" itemscope="" itemtype="http://schema.org/Person"> <div class='textnikkk'> <h3 class='ipsType_sectionHead cAuthorPane_author ipsType_blendLinks ipsType_break'> <strong>{$comment->author()->link( $comment->warningRef() )|raw}</strong> <span class='ipsResponsive_showPhone ipsResponsive_inline'>&nbsp;&nbsp;{template="reputationBadge" group="global" app="core" params="$comment->author()"}</span> </h3> </div> <div class="pContainer_b1"> {template="userPhoto" app="core" group="global" params="$comment->author(), 'large', $comment->warningRef()"} </div> {{$coverPhoto = $comment->author()->coverPhoto();}} {{if $coverPhoto->file}} <div class="pc_coverphoto" style="background-image: url('{$coverPhoto->file->url}') !important;"> </div> {{else}} {{endif}} <div class="wa_pContainer_b4"> <div class="wa_pContainer_lnk"> {{if \IPS\Member::loggedIn()->member_id != $comment->author()->member_id}} {{if \IPS\Member::loggedIn()->member_id != $comment->author()->member_id and ( !$comment->author()->members_bitoptions['pp_setting_moderate_followers'] or \IPS\Member::loggedIn()->following( 'core', 'member', $comment->author()->member_id ) )}} {{$memberFollowers = $comment->author()->followers();}} {{if member.member_id}} {{if member.following( 'core', 'member', $comment->author()->member_id )}} <a href="{url="app=core&module=system&section=notifications&do=follow&follow_app=core&follow_area=member&follow_id={$comment->author()->member_id}"}" title="{lang="following_this_member"}" data-ipsTooltip class="pContainerLink" data-role="followButton" data-ipsHover data-ipsHover-cache='false' data-ipsHover-onClick><i class="fa fa-user-times"></i></a> {{else}} <a href="{url="app=core&module=system&section=notifications&do=follow&follow_app=core&follow_area=member&follow_id={$comment->author()->member_id}"}" title="{lang="follow_this_member"}" data-ipsTooltip class="pContainerLink" data-role="followButton" data-ipsHover data-ipsHover-cache='false' data-ipsHover-onClick><i class="fa fa-user-plus"></i></a> {{endif}} {{endif}} {{endif}} {{if \IPS\Member::loggedIn()->member_id && !$comment->author()->members_disable_pm and !\IPS\Member::loggedIn()->members_disable_pm and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'messaging' ) )}} <a href='{url="app=core&module=messaging&controller=messenger&do=compose&to={$comment->author()->member_id}" seoTemplate="messenger_compose"}' data-ipsDialog data-ipsDialog-title='{lang="compose_new"}' data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="message_sent"}" title="Отправить сообщение" data-ipsTooltip class='pContainerLink'><i class="fa fa-inbox"></i></a> {{endif}} {{endif}} {{$skype = preg_replace('/<wbr>/', '', $comment->author()->contentProfileFields()['core_pfieldgroups_2'][3]);}} {{if $comment->author()->contentProfileFields()['core_pfieldgroups_2'][3]}} <a href="skype:{$skype}?chat" target="_blank" title="Скайп" data-ipsTooltip class="pContainer_Button"><i class="fa fa-skype" aria-hidden="true"></i></a> {{else}} <a style="opacity:0.5" target="_blank" title="Скайп" data-ipsTooltip class="pContainer_Button"><i class="fa fa-skype" aria-hidden="true"></i></a> {{endif}} {{$vk = preg_replace('/<wbr>/', '', $comment->author()->contentProfileFields()['core_pfieldgroups_2'][4]);}} {{if $comment->author()->contentProfileFields()['core_pfieldgroups_2'][4]}} <a href="http://www.privatelink.de/?https://vk.com/{$vk}" target="_blank" title="Вконтакте" data-ipsTooltip class="pContainer_Button"><i class="fa fa-vk" aria-hidden="true"></i></a> {{else}} <a style="opacity:0.5" target="_blank" title="Вконтакте" data-ipsTooltip class="pContainer_Button"><i class="fa fa-vk" aria-hidden="true"></i></a> {{endif}} </div></div> <div class='textGroprank'> {{if $comment->author()->rank['image'] && $comment->author()->member_id}} {$comment->author()->rank['image']|raw} {{endif}}</div> <!-- Плагин репутации {template="reputationBadge" group="global" app="core" params="$comment->author()"} Плагин репутации --> <div class='textGrop'>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"} {{if \IPS\Member\Group::load( $comment->author()->member_group_id )->g_icon }} <img src='{file="$comment->author()->group['g_icon']" extension="core_Theme"}' alt='' class='cAuthorGroupIcon'> {{endif}} </div> <!--------------------------------------------------------------------------------------> <div> <a href="" class="spoiler_links ipsButton ipsButton_light ipsButton_verySmall ipsButton_narrow" style="padding: 0px 62px;margin-bottom: 5px;background:#36485C;" data-ipstooltip="" _title="Нажмите для просмотра"><i class="fa fa-user-plus" aria-hidden="true"></i> Информация</a> <div class="spoiler_body"> <li class="uip"> <span class="leftinfo"><i class="fa fa-star-half-o"></i> Звание:</span> {{if $comment->author()->member_title && $comment->author()->member_id}} <span class="rightinfo">{$comment->author()->member_title}</span> {{elseif $comment->author()->rank['title'] && $comment->author()->member_id}} <span class="rightinfo">{$comment->author()->rank['title']}</span> {{endif}} </li> <li class="uip"> {{$date_joined = floor((strtotime("now")-strtotime("{$comment->author()->joined}"))/86400) ;}} <span class="leftinfo"><i class="fa fa-calendar"></i> C нами уже:</span> <span class="rightinfo">{$date_joined} дней</span> </li> <li class="uip"> <span class="leftinfo"><i class="fa fa-trophy fa-lg" aria-hidden="true"></i> {lang="members_days_won_count"}</span> <span class="rightinfo">{number="$comment->author()->getReputationDaysWonCount()"}</span> </li> <li class="uip"> <span class="leftinfo"><i class="fa fa-commenting-o"></i> Созданных тем:</span> <span class="rightinfo">{{$where[] = "starter_id = " . $comment->author()->member_id;}} {{$author_topics = \IPS\forums\Topic::getItemsWithPermission( $where, NULL, 0 );}} {{$topics_count = count($author_topics);}} {$topics_count}</span> </li> <li class="uip"> <span class="leftinfo"><i class="fa fa-comments-o" aria-hidden="true"></i> Созданных сообщений:</span> <span class="rightinfo">{$comment->author()->member_posts}</span> </li> </div> </div> <!--------------------------------------------------------------------------------------> <div class='textgame'><i class="fa fa-info"></i> Репутация пользователя <i class="fa fa-level-down"></i></div> <li class="uip"> <span class="leftinfo"><i class="fa fa-exclamation-triangle"></i> Репутация:</span> <span class="rightinfo">{template="reputationBadge" group="global" app="core" params="$comment->author()"}</span> </li> <li class="uip"> <span class="leftinfo"><i class="fa fa-exclamation-triangle"></i> Предупреждения:</span> <span class="rightinfo">{number="$comment->author()->warn_level"}</span> </li> <!-- <div class="wa_pContainer_b2"> <div class="wa_pContainer_b2_1"> <div> <span class="wa_pContainer_b2_m">Тем</span> </div> <span style="font-size: 15px;">{{$where[] = "starter_id = " . $comment->author()->member_id;}} {{$author_topics = \IPS\forums\Topic::getItemsWithPermission( $where, NULL, 0 );}} {{$topics_count = count($author_topics);}} {$topics_count}</span> </div> <div class="wa_pContainer_b2_1"> <div> <span class="wa_pContainer_b2_m">Сообщений</span> </div> <span style="font-size: 15px;">{$comment->author()->member_posts}</span> </div> </div>--> </div> </div> </aside> <div class='ipsColumn ipsColumn_fluid'> {template="post" group="topics" app="forums" params="$item, $comment, $item::$formLangPrefix . 'comment', $item::$application, $item::$module, $itemClassSafe"} </div> </article> То что закомментировано можно разкоментить. Закомментировать эту часть; <li class="uip"> <span class="leftinfo"><i class="fa fa-commenting-o"></i> Созданных тем:</span> <span class="rightinfo">{{$where[] = "starter_id = " . $comment->author()->member_id;}} {{$author_topics = \IPS\forums\Topic::getItemsWithPermission( $where, NULL, 0 );}} {{$topics_count = count($author_topics);}} {$topics_count}</span> </li> <li class="uip"> <span class="leftinfo"><i class="fa fa-comments-o" aria-hidden="true"></i> Созданных сообщений:</span> <span class="rightinfo">{$comment->author()->member_posts}</span> </li> Будет не много другой вид Теперь добавьте в custom.css /* Панель пользователя в темах форума */ .cAuthorPane { padding: 10px !important; margin-top: 57px } aside.ipsComment_author.cAuthorPane.ipsColumn.ipsColumn_medium { width: 245px; } .wa_pContainer { padding: 2px; background-color: rgb(66, 66, 66); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4) inset, 0 0 0 1px rgba(255, 255, 255, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); margin: -10px 2px 15px 2px; border-radius: 5px; } .pContainer_b1 { margin-top: 0px; margin-bottom: 5px; text-align: center; } .pContainer_b1 img { border: 1px solid rgba(0,0,0,0.1); border-radius: 500px; height: 90px; } .pc_coverphoto { margin-bottom: 5px !important; background-color: #FFFFFF !important; background-position: 50% 50%; background-repeat: no-repeat; -webkit-background-size: 100% 100%; -moz-background-size: 100% 100%; background-size: 100% 100% !important; height: 114px; width: 216px; border-radius: 10px; margin: -98px 0 0 0; } .wa_pContainer_b2 { background-color: #3f84d2; background-image: url({resource="diagmonds.png" app="core" location="global"}); overflow: hidden; padding: 8px 0; /*margin: 10px -5px -5px -5px;*/ } .wa_pContainer_b2_1 { width: 50%; float: left; } .wa_pContainer_b2_1 .ipsRepBadge { font-size: 15px; font-weight: normal; } .wa_pContainer_b2_m { color: #f5f5f5; text-transform: uppercase; font-size: 11px; } .wa_pContainer_lnk { text-align: center; } .wa_pContainer_b3 { margin: 5px 0; } .wa_pContainer_b4 { margin: 5px 0; } .pContainerLink { width: 36px; height: 28px; line-height: 28px; margin: 0 1px; text-align: center; background: #34495e; border-radius: 2px; display: inline-block; color: #FFFFFF; font-size: 15px; } .pContainerLink:hover { color: #FFFFFF; } .pContainer_Button { width: 60px; height: 28px; line-height: 28px; text-align: center; background: rgb(52, 73, 94); border-radius: 2px; display: inline-block; color: #FFFFFF; font-size: 15px; } .pContainer_Button:hover { color: #FFFFFF; } .textnikkk { margin-bottom: 3px; margin-left: 2px; margin-right: 2px; line-height: 25px; border-radius: 5px; font-size: 14px !important; max-width: 100%; background-color: rgba(0, 0, 0, 0.2); box-shadow: 0 1px 3px rgba(59, 124, 206, 0.86) inset, 0 0 0 1px rgb(83, 144, 213), 0 1px 0 rgba(22, 107, 193, 0.95); } .textGrop { margin-top: 5px; margin-bottom: 8px; margin-left: 2px; margin-right: 2px; line-height: 25px; border-radius: 5px; font-size: 14px !important; max-width: 100%; background-color: rgba(0, 0, 0, 0.2); box-shadow: 0 1px 3px rgba(59, 124, 206, 0.86) inset, 0 0 0 1px rgb(83, 144, 213), 0 1px 0 rgba(22, 107, 193, 0.95); } .textGroprank { margin-bottom: 5px; margin-left: 2px; margin-right: 2px; line-height: 20px; height: 24px; border-radius: 5px; font-size: 14px !important; max-width: 100%; background: linear-gradient(55deg, #34495e 50%, #1b1b1b 50%, #1b1b1b); box-shadow: 0px 0px 10px 0px #3a3a54; margin-top: 5px; } .textGroprank:hover { background: linear-gradient(55deg, #1b1b1b 50%, #34495e 50%, #34495e); } .autornik { display: block; line-height: 10px; -moz-hyphens: initial; margin-top: -5px; height: 25px; border-radius: 35px; font-size: 16px !important; max-width: 100%; /* background: #1c1d2680; */ background: linear-gradient(55deg, #232331 80%, #f1f1f500 100%, #ededef00); font-family: 'Roboto Condensed', sans-serif; } .oNpane1 { position: relative; display: inline-block; float: left; height: 20px; width: 30px; border-radius: 50px; border: 1px solid #249168; font-size: 18px; text-align: center; line-height: 25px; color: #56cf61; margin: 0 auto; margin-top: 2px; margin-left: 30px; margin-right: -50px; } .oFFpane1 { position: relative; display: inline-block; float: left; height: 20px; width: 30px; border-radius: 50px; border: 1px solid #ab300b; font-size: 18px; text-align: center; line-height: 25px; color: #f52e0c; margin: 0 auto; margin-top: 2px; margin-left: 30px; margin-right: -50px; } .paneLogin { border-top: 5px solid #303c4a; border-bottom: 5px solid #37474f; background: linear-gradient(#37474f61 10%, #1213176b 90%) !important; border-radius: 5px; position: relative; margin: 0 auto; margin-top: 0px; margin-left: -10px; margin-right: -10px; } .uip { display: inline-block; width: 100%; color: #fefffe; padding: 1px 10px; margin-top: -2px; border-radius: 5px; background: #1b1b1b; border: 1px #3f84d2 solid; box-shadow: inset rgb(52, 86, 125) 0px 1px 5px, rgb(50, 80, 115) 0px 0px 0px, rgb(50, 80, 115) 0px 0px 1px 0px; } .uip:hover { background: rgb(46, 80, 124); } .leftinfo { font-size: 11px; float: left; text-align: left; margin-right: 3px; margin-left: 0; min-width: 60px; width: auto !important; } .rightinfo { float: right; color: #CCC; font-size: 11px; } .textgame { margin-bottom: 5px; margin-top: 5px; margin-left: 2px; margin-right: 2px; line-height: 20px; border-radius: 5px; font-size: 12px !important; max-width: 100%; color: #fdfefe; background: linear-gradient(55deg, #34495e 50%, #1b1b1b 50%, #1b1b1b); box-shadow: 0px 0px 10px 0px #3a3a54; } /***********************************/ На этом всё.
  32. 2 points
    1. Открыть для редактирования файл /etc/nginx/nginx.conf и добавить после http { include /etc/nginx/blockips.conf; где /etc/nginx/ - путь к файлу blockips.conf от корня сервера. http { include /etc/nginx/blockips.conf; 2. Создать на локале в Notepad++ текстовой файл blockips.conf с кодировкой UTF-8. 3. Добавить в файл список блокируемых IP адресов по образцу (возможны такие варианты): deny 31.220.61.77; deny 185.84.148.0/22; deny 2a02:748:b000:3:a87a:866d:94f0:ffbe; deny 2a02:748:b000:3:a87a:866d:94f0:ffbe/22; Примечание: Инструменты, для создания списка блокируемых IP адресов: 1) Спам-IP за последние 10 дней - готовый список: https://ru.myip.ms/files/blacklist/csf/latest_blacklist.txt 2) Спам-IP за последнее время, добавленный вручную пользователями - готовый список: https://ru.myip.ms/files/blacklist/csf/latest_blacklist_users_submitted.txt Для быстрой правки скачанных выше списков используйте текстовый редактор Notapad++: - нажать Ctrl+H для открытия окна автоматической замены. - поставить галку в окне замены галку Extended (Расширенный). - далее заменить \r на ; - далее заменить \n на \ndeny(пробел) - чтобы получить так: deny 46.101.204.143; deny 55.101.204.143/21; Дополнительные инструменты, для создания списка блокируемых IP адресов: 3) Сетевой калькулятор: http://ru.smart-ip.net/calculator#ipv4 4) IP to CIDR: http://ip2cidr.com/bulk-ip-to-cidr-converter.php 5) Создание списка IP в формате CIDR по странам: http://software77.net/geo-ip/ (справа блочек Country IP listing, выбрать страну и CIDR). 4. Залить на сервер blockips.conf по ssh, дать ему права CMOD 644 через любой файловый ssh менеджер. 5. Перезапустить Nginx, например, так: service nginx restart 6. Периодически обновляйте список, не реже одного раза в месяц. PS Добавлен образец файла со списком спам-IP и также добавлением ниже страны Украина (добавление Украины сильно снизило количество спаммеров на моих сайтах, но это чисто индивидуально). blockips.conf blockips.conf
  33. 2 points
    Делаем штатные объявления более заметными. Для изменения заходим в настройки управления стилем и нажимаем изменить. Далее в окно поиска вставляем — ipsType_reset ipsWidget_title И изменяем найденый class на один из представленных ниже. ipsType_reset ipsMessage ipsMessage_info ipsType_reset ipsMessage ipsMessage_error ipsType_reset ipsMessage ipsMessage_warning ipsType_reset ipsMessage ipsMessage_success
  34. 2 points
    SlawkA

    Наклон

    На примере я сделал наклон кнопок в navBar и сам userBar Сам код: Вставляется он примерно так, в userBar: Наклон регулируется путём: skew(-10deg) вправо. skew(10deg) влево. Число можете менять.
  35. 2 points
    Подойдет для тех, кто использует только положительную репутацию и версию форума 4.1! Кнопки активны при наведении Делаем кнопки: Идем в свой стиль -> шаблоны -> core -> front -> global -> reputation -> находим код: <div class='ipsLikeRep ipsPos_right'> {{if $content->canGiveReputation( 1 )}} <a href='{$content->url( 'rep' )->setQueryString( 'rep', 1 )->csrf()}' data-action="giveReputation" class='ipsButton ipsButton_rep ipsButton_repUp'><i class='fa fa-arrow-up'></i></a> {{endif}} {{if $content->canGiveReputation( -1 )}} <a href='{$content->url( 'rep' )->setQueryString( 'rep', -1 )->csrf()}' data-action="giveReputation" class='ipsButton ipsButton_rep ipsButton_repDown'><i class='fa fa-arrow-down'></i></a> {{endif}} меняем его на: <div class='ipsLikeRep ipsPos_right'> {{if $content->canGiveReputation( 1 )}} <a href='{$content->url( 'rep' )->setQueryString( 'rep', 1 )->csrf()}' data-action="giveReputation" class='ipsButton ipsButton_rep ipsButton_repUp'><i class='fa fa-thumbs-up'> Нравится</i></a> {{endif}} {{if $content->canGiveReputation( -1 )}} <a href='{$content->url( 'rep' )->setQueryString( 'rep', -1 )->csrf()}' data-action="giveReputation" class='ipsButton ipsButton_rep ipsButton_repDown'><i class='fa fa-thumbs-down'> Отменить</i></a> {{endif}} далее идем в custom.css -> добавляем код: .ipsButton.ipsButton_repDown { background: #740000 !important; background: -moz-linear-gradient(top, #BC0000 0%, #740000 100%) !important; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#BC0000), color-stop(100%,#740000)) !important; background: linear-gradient(top, #BC0000 0%, #740000 100%) !important; -moz-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 2px 3px rgba(0,0,0,0.4); -webkit-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 2px 3px rgba(0,0,0,0.4); box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 2px 3px rgba(0,0,0,0.4); border: 1px solid rgba(0,0,0,0.4); border-bottom: 1px solid rgba(0,0,0,0.5); font-size: 13px !important; color: #fff !important; } .ipsButton.ipsButton_repDown:hover { background: #740000 !important; background: -moz-linear-gradient(top, #740000 0%, #BC0000 100%) !important; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#740000), color-stop(100%,#BC0000)) !important; background: linear-gradient(top, #740000 0%, #BC0000 100%) !important; -moz-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 1px 0px rgba(255,255,255,0.3); -webkit-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 1px 0px rgba(255,255,255,0.3); box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 1px 0px rgba(255,255,255,0.3); border: 1px solid rgba(0,0,0,0.4); border-bottom: 1px solid rgba(0,0,0,0.5); font-size: 13px !important; color: #fff !important; } .ipsButton.ipsButton_repUp { background: #89DFF8!important; background: -moz-linear-gradient(top, #89DFF8 0%, #04556B 100%) !important; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#89DFF8), color-stop(100%,#04556B)) !important; background: linear-gradient(top, #89DFF8 0%, #04556B 100%) !important; -moz-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 2px 3px rgba(0,0,0,0.4); -webkit-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 2px 3px rgba(0,0,0,0.4); box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 2px 3px rgba(0,0,0,0.4); border: 1px solid rgba(0,0,0,0.4); border-bottom: 1px solid rgba(0,0,0,0.5); font-size: 13px !important; color: #fff !important; } .ipsButton.ipsButton_repUp:hover { background: #89DFF8 !important; background: -moz-linear-gradient(top, #04556B 0%, #89DFF8 100%) !important; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#04556B), color-stop(100%,#89DFF8)) !important; background: linear-gradient(top, #04556B 0%, #89DFF8 100%) !important; -moz-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 1px 0px rgba(255,255,255,0.3); -webkit-box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 1px 0px rgba(255,255,255,0.3); box-shadow: inset 1px 1px 0 0 rgba(255,255,255,0.1), 0px 1px 0px rgba(255,255,255,0.3); border: 1px solid rgba(0,0,0,0.4); border-bottom: 1px solid rgba(0,0,0,0.5); font-size: 13px !important; color: #fff !important; }
  36. 2 points
    Igorek

    Бегущая строка

    Бегущая строка Вам на сайт. Взял с DLE, и не много исправил под IPS 4. Полезная вещь для сайта, текстовой рекламы, можно с текстом вставлять и изображения. Фон и цвет регулируется. Вставлять код можете куда хотите. На примере я прописал его так: Сам код: <!-- Начало "бегущей строки" --> <div style="background: #37547600 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="100%" border="1" cellpadding="0" cellspacing="0" height="11"> <div style="background: rgba(176, 34, 34, 0) none no-repeat scroll center center; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> <marquee style="color: rgba(0, 0, 0, 0);" width="100%"> <font color="#fff">Тест бегущей строки</font></marquee></div></div> <!-- Конец "бегущей строки" -->
  37. 2 points
    Фото профиля в онлайн-списках Whowasonline ACP > Customizations > Themes > ваша тема > edit HTML and CSS > core > global > plugins > whowasonline и заменит все содержание с етом: <h3 class='ipsType_reset ipsWidget_title'> {lang="block_whowasonline"} </h3> <div class='ipsWidget_inner ipsPad'> <span class='ipsType_light ipsType_unbold ipsType_medium'>{lang="who_was_online_last_x" sprintf="$hour" pluralize="$memberCount"}</span> <br> {{if $stat !== false && $orientation!='vertical'}} <span class='ipsType_light ipsType_unbold ipsType_medium'>{$stat|raw}</span> {{endif}} {{if $memberCount}} <ul class='ipsList_inline ipsList_csv ipsList_noSpacing'> {{foreach $members as $row}} <li>{template="userPhoto" app="core" group="global" params="\IPS\Member::load( $row['member_id'] ),'tiny'"}</li> {{endforeach}} </ul> {{else}} <p class='ipsType_reset ipsType_medium ipsType_light'>{lang="who_was_online_users_empty"}</p> {{endif}} </div> WhosOnline ACP > Customizations > Themes > ваша тема > edit HTML and CSS > core > front > widgets > whosOnline и заменит все содержание с етом: <h3 class='ipsType_reset ipsWidget_title'>{lang="block_whosOnline"}</h3> <span class='ipsButton ipsButton_verySmall'style="position: absolute;top: 5px;right: 8px;"> <a href='{url="app=core&module=online&controller=online" seoTemplate="online"}'>{lang="see_full_list"}</a></span> <div class='ipsWidget_inner ipsPad'> {{if $memberCount}} <ul class='ipsList_inline ipsList_csv ipsList_noSpacing'> {{foreach $members as $row}} <li>{template="userPhoto" app="core" group="global" params="\IPS\Member::load( $row['member_id'] ), 'tiny'"}</li> {{endforeach}} </ul> {{if $orientation == 'vertical' and $memberCount > 60}} <p class='ipsType_medium ipsType_reset'> <a href='{url="app=core&module=online&controller=online" seoTemplate="online"}'>{lang="and_x_others" pluralize="$memberCount - 60"}</a> </p> {{endif}} {{else}} <p class='ipsType_reset ipsType_medium ipsType_light'>{lang="whos_online_users_empty"}</p> {{endif}} </div>
  38. 2 points
    Плавная прокрутка Перейти к ACP > Customizations > Themes > ваша тема > edit HTML and CSS > core > front > global > clobalTemplate и найти: <!--ipsQueryLog--> после его поставит ето код: Ето все ... AEqurhwrCU.mp4
  39. 2 points
    Простая модификация добавления полосы скролинга стандартного блока "Лента тем" на странице форума для вывода большего количества последних тем. 1. Устанавливаем блок "Лента тем" на страницу форума. В настройках блока "Количество для отображения" ставим 15. 2. Админ -> Внешний вид -> Стили и шаблоны -> Ваш стиль -> Кнопка редактора стилей -> CSS -> core-front-custom-custom.css -> добавить: #ipsLayout_mainArea [data-blockid*="app_forums_topicFeed"] .ipsWidget_inner { max-height: 300px; overflow: auto; } Результат:
  40. 2 points
    После распаковки дистрибутива форума может потребоваться выставить права на новые файлы и папки. Вручную сделать это проблематично, учитывая, что в дистрибутиве более 3000 файлов. Для этих целей можно использовать командную строку (шелл). Предположим, что 1) форум у вас установлен в папку /var/www/user/data/www/site.ru/, 2) пользователь от которого запускается Apache (или nginx) www-data Установить владельца всех файлов на www-data: chown -R www-data:www-data /var/www/user/data/www/site.ru/* Установить права доступа на директории 0755, на файлы 0644: find /var/www/user/data/www/site.ru/ -type f -exec chmod 0644 {} \; find /var/www/user/data/www/site.ru/ -type d -exec chmod 0755 {} \; Вот и все
  41. 2 points
  42. 2 points
    Чтобы при клике на название темы с непрочитанными сообщениями вас переместило сразу к ним, необходимо сделать правку в шаблоне forums > front > forums найти: <a href='{$row->url()}' itemprop="url"{{if $row->tableHoverUrl and $row->canView()}} Заменить на: <a href="{{if $row->unread()}}{$row->url( 'getNewComment' )}{{else}}{$row->url()}{{endif}}" itemprop="url"{{if $row->tableHoverUrl and $row->canView()}}
  43. 2 points
    Спойлер в IPS Community Suite 4 Перейти ACP - Customization -> Toolbars и нажмите на кнопку Add Button -> Custom: Заполните поля: Button Title: spoiler Icon: загрузить изображение выбирать: Block Use option?: включить HTML: Сохранить
  44. 2 points
    1) Размещение кода, картинки, текста, и т.д. в нужном разделе форума в шапке, если есть воображение, а главное мозги, то можно разместить в любом месте Внешний вид – стили и шаблоны (forums>front>forums>forumDisplay) В этом шаблоне в строке 13 я выбрал это место: {$forum->description|raw} Cтрочкой ниже добавил код: {{if $forum->_id == 48}}{block="banner1"}{{endif}} 48 – это номер раздела форума, где будет показываться информация; {block="banner1"} – это ключ виджета, вместо него можно сразу написать нужный текст или код; 2) Размещение кода, картинки, текста, и т.д. на главной странице форума между описанием форума и счётчиком количества сообщений Внешний вид – стили и шаблоны (forums>front>index>forumRow) В этом шаблоне после 60й строки аля после кода <div class="ipsDataItem_meta ipsType_richText">{$forum->description|raw}</div>{{endif}}</div> Строкой ниже добавил див и сам код <div class="ipsDataItem_main"> {{if $forum->_id == 48}} <div style="border: 1px solid; width:150px; height: 50px"><a href="#">=)</a></div> {{endif}} </div> 48 – это раздел на лицевой (front) форума <div style="border: 1px solid; width:150px; height: 50px"><a href="#">=)</a></div> - любой код какой понравится, это просто для примера Ps: создавать плагины не умею, по идее вместо «48» можно делать переменную управляемую из админки, так же и код внутри if. Кто соображает, тот сделает. Я как обычно руками в шаблон вписываю. Информации по этой теме не нашёл, по этому сам сидел и методом "тыка" подобрал рабочий вариант. Если это где-то есть, то пусть, это там и будет Кто сможет поправит или дополнит или усовершенствует.
  45. 2 points
    Изначально не нравилось то, что в прочитанных темах отсутствует перед ее названием иконка. В новых это темный кружок, в постах имеющих личные сообщения - это звездочки, а в просто прочитанном нет ничего Добавляем светлый кружок перед названием прочитанной темы: Админка -> Внешний вид -> Стили и шаблоны -> напротив своего шаблона жмем на "Изменить HTML и CSS" Шаблоны -> forums -> front -> forums -> topicRow находим часть кода: <div class='ipsDataItem_icon ipsPos_top'> {{if $row->unread()}} <a href='{$row->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip> <span class='ipsItemStatus'><i class="fa {{if in_array( $row->$idField, $iposted )}}fa-star{{else}}fa-circle{{endif}}"></i></span> </a> {{else}} {{if in_array( $row->$idField, $iposted )}} <span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span> {{else}} &nbsp; {{endif}} {{endif}} </div> вместо &nbsp; вводим код: <span class="ipsItemStatus_readtopic"><i class="fa fa-circle"></i></span> Далее идем в custom.css и добавляем код: .ipsItemStatus_readtopic .fa-circle: before { content: "\f111"; font-family: FontAwesome; color: #dbdbdb; font-size: 14px; line-height: inherit; vertical-align: middle; } Если у вас установлен плагин "Последние обсуждения" (как на мафии), то ищем шаблон: core -> global -> plugins -> recentTopicsRow меняем весь код на этот: {{$idField = $topic::$databaseColumnId;}} {{$iPosted = isset( $topic->contentPostedIn ) ? $topic->contentPostedIn : ( $topic AND method_exists( $topic, 'container' ) AND $topic->container() !== NULL ) ? $topic->container()->contentPostedIn() : array();}} <li id='recentTopics_tid_{$topic->tid}' data-tid="{$topic->tid}" data-timestamp="{{if $topic->mapped('last_comment')}}{$topic->mapped('last_comment')}{{else}}{$topic->mapped('date')}{{endif}}" class="ipsDataItem ipsDataItem_responsivePhoto {{if $topic->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $topic, 'tableClass' ) && $topic->tableClass()}}ipsDataItem_{$topic->tableClass()}{{endif}} {{if $topic->hidden()}}ipsModerated{{endif}}"> {{if $showReadMarkers}} {{if $topic->unread()}} <div class='ipsDataItem_icon ipsPos_top'> <a href='{$topic->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip> <span class='ipsItemStatus'><i class="fa {{if in_array( $topic->$idField, $iPosted )}}fa-star{{else}}fa-circle{{endif}}"></i></span> </a> </div> {{else}} {{if in_array( $topic->$idField, $iPosted )}} <div class='ipsDataItem_icon ipsPos_top'> <span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span> </div> {{else}} <div class='ipsDataItem_icon ipsPos_top'><span class="ipsItemStatus_readtopic"><i class="fa fa-circle"></i></span></div> {{endif}} {{endif}} {{endif}} <div class='ipsDataItem_main'> <h4 class='ipsDataItem_title ipsType_break'> {{if $topic->locked()}} <i class='fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i> {{endif}} {{if $topic->prefix()}} {template="prefix" group="global" app="core" params="$topic->prefix( TRUE ), $topic->prefix()"} {{endif}} <a href='{$topic->url()}' {{if $topic->canView()}}data-ipsHover data-ipsHover-target='{$topic->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5' {{endif}}> {{if $topic->isQuestion()}} <strong class='ipsType_light'>{lang="question_title"}:</strong> {{endif}} <span itemprop="name"> {{if $topic->mapped('title')}}{wordbreak="$topic->mapped('title')"}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}} </span> </a> {{if $topic->mapped('pinned') || $topic->mapped('featured') || $topic->hidden() === -1 || $topic->hidden() === 1}} <span> {{if $topic->hidden() === -1}} <span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$topic->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span> {{elseif $topic->hidden() === 1}} <span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span> {{endif}} {{if $topic->mapped('pinned')}} <span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span> {{endif}} {{if $topic->mapped('featured')}} <span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span> {{endif}} </span> {{endif}} </h4> {{if $topic->commentPageCount() > 1}} {$topic->commentPagination( array(), 'miniPagination' )|raw} {{endif}} <div class='ipsDataItem_meta ipsType_reset ipsType_light ipsType_blendLinks'> {lang="byline" htmlsprintf="$topic->author()->link()"} {datetime="$topic->mapped('date')"} {{if \IPS\Request::i()->controller != 'forums'}} {lang="in"} <a href="{$topic->container()->url()}">{$topic->container()->_title}</a> {{endif}} {{if count( $topic->tags() )}} &nbsp;&nbsp; {template="tags" group="global" app="core" params="$topic->tags(), true, true"} {{endif}} </div> <ul class='ipsList_inline ipsClearfix ipsType_light'> {{if $topic->isQuestion()}} {{if $topic->topic_answered_pid}} <li class='ipsType_success'><i class='fa fa-check-circle'></i> <strong>{lang="answered"}</strong></li> {{else}} <li class='ipsType_light'><i class='fa fa-question'></i> {lang="awaiting_answer"}</li> {{endif}} {{endif}} </ul> </div> <ul class='ipsDataItem_stats'> {{if $topic->isQuestion()}} <li> <span class='ipsDataItem_stats_number'>{{if $topic->question_rating}}{$topic->question_rating}{{else}}0{{endif}}</span> <span class='ipsDataItem_stats_type'>{lang="votes_no_number" pluralize="$topic->question_rating"}</span> </li> {{foreach $topic->stats(FALSE) as $k => $v}} {{if $k == 'forums_comments' OR $k == 'answers_no_number'}} <li> <span class='ipsDataItem_stats_number'>{number="$v"}</span> <span class='ipsDataItem_stats_type'>{lang="answers_no_number" pluralize="$v"}</span> </li> {{endif}} {{endforeach}} {{else}} {{foreach $topic->stats(FALSE) as $k => $v}} <li {{if $k == 'num_views'}}class='ipsType_light'{{elseif in_array( $k, $topic->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}}> <span class='ipsDataItem_stats_number'>{number="$v"}</span> <span class='ipsDataItem_stats_type'>{lang="{$k}" pluralize="$v"}</span> </li> {{endforeach}} {{endif}} </ul> <ul class='ipsDataItem_lastPoster ipsDataItem_withPhoto'> <li> {{if $topic->mapped('num_comments')}} {template="userPhoto" app="core" group="global" params="$topic->lastCommenter(), 'tiny'"} {{else}} {template="userPhoto" app="core" group="global" params="$topic->author(), 'tiny'"} {{endif}} </li> <li> {{if $topic->mapped('num_comments')}} {$topic->lastCommenter()->link()|raw} {{else}} {$topic->author()->link()|raw} {{endif}} </li> <li class="ipsType_light"> <a href='{$topic->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'> {{if $topic->mapped('last_comment')}}{datetime="$topic->mapped('last_comment')"}{{else}}{datetime="$topic->mapped('date')"}{{endif}} </a> </li> </ul> </li>
  46. 1 point
    Открываем наш стиль, в самый низ в globalTemplate ставим этот код: <a href="#" class="scrollup">Наверх</a> Это в custom css: .scrollup{ width:40px; height:40px; opacity:0.3; position:fixed; bottom:50px; right:100px; display:none; text-indent:-9999px; background: url('icon_top.png') no-repeat; } При помощи этого кода кроме внешнего вида мы определяем позицию кнопки и задаем отступы 100 px с права и 50 px снизу. Теперь подключаем библиотеку, если она еще не подключена для вашего сайта. Для этого между тегами <head>...</head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> Затем сразу после подключения библиотеки необходимо в globalTemplate расположить следующий код JQuery: <script type="text/javascript"> $(document).ready(function(){ $(window).scroll(function(){ if ($(this).scrollTop() > 100) { $('.scrollup').fadeIn(); } else { $('.scrollup').fadeOut(); } }); $('.scrollup').click(function(){ $("html, body").animate({ scrollTop: 0 }, 600); return false; }); }); </script> И так же Вам понадобится изображение самой стрелки:
  47. 1 point
    Текущие прокрутки Перейти к ACP> Customizations> Themes> your theme> edit HTML and CSS> core> front> global> clobalTemplate и найти: <-! IpsQueryLog -> После его вставит это код: <script> console.clear(); var trackers = document.createElement("div"); trackers.className = "trackers"; trackers.insertAdjacentHTML("beforeend", "Current Scrolltops "); document.body.appendChild(trackers); function trackScroll(element, elementName) { var scrollTracker = document.createElement("span"); trackers.insertAdjacentHTML( "beforeend", " &nbsp; | &nbsp; <b>" + elementName + "</b>: " ); trackers.appendChild(scrollTracker); scrollTracker.innerText = element.scrollTop || element.pageYOffset; element.addEventListener("scroll", function() { console.log("scroll " + elementName); // You can see that scroll events are triggered. scrollTracker.innerText = element.pageYOffset || element.scrollTop; }); window.addEventListener("scroll", function() { console.log("scroll " + elementName); // You can see that scroll events are triggered. scrollTracker.innerText = element.pageYOffset || element.scrollTop; }); } trackScroll(window, "window"); trackScroll(document.documentElement, "html"); trackScroll(document.body, "body"); var toggled = false; document.body.addEventListener("click", function() { document.documentElement.className = !toggled ? "toggle-scroll" : ""; toggled = !toggled; }); </script> В CSS > custom.css поставит ето код: html.toggle-scroll { height: 100%; width: 100%; overflow: hidden; } .toggle-scroll body { max-width: 100%; height: 100%; overflow: auto; } body::before { display: block; } .trackers { position: fixed; bottom: 0; left: 0; width: 100%; background: #FFF; padding: 1em; } Ето все
  48. 1 point
    Иконки для форумов Идём в свой шаблон и переходим по пути: Шаблоны -->forums --> front --> forums--> topicRow инайти: <li class="ipsDataItem ipsDataItem_responsivePhoto {{if $row->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden()}}ipsModerated{{endif}}" data-rowID='{$row->$idField}' itemprop="itemListElement" itemscope itemtype="http://schema.org/Article"> После этого, вставьте этот код: <i class='f_icon' data-rowID='{$row->$idField}'></i> Перейти к вашем custom.css и поставите ето код: .f_icon{ width: 67px; height: 67px; } .f_icon[data-rowid="60"] { background: url(https://ваша иконка.png); float: left } .f_icon[data-rowid="330"] { background: url(http://ваша иконка.png); float: left } В custom.css измените data-rowid="60' / 330 с ид ваш форум ..... ето все
  49. 1 point
    Если вдруг вы заметили такую проблему (например) То просто сделайте следующие: в CSS найдите: .ipsType_break { word-break: break-word; word-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; -ms-hyphens: auto; hyphens: auto; } И удалите: word-break: break-word;
  50. 1 point
    Всем привет.Хочу поделиться решением проблемы проблемы после обновления с версии 4.1.8 до 4.1.8.1. После этой обновы у меня перестали работать приложения: Статьи, Блог, Магазин, Файлы. Искал на разных форумах и даже здесь как можно решить проблему, никто ничего не знает.Начал сам копать, а решение было очень легкое. Идем в phpMyAdmin Открываем таблицу core_applications В таблице видим наши приложения, выбираем приложения которые не работаю Выбираем изменить и вписываем в поля новые данные app_version пишем 4.1.8.1 app_long_version 101025 app_enabled ставим 1 Так делаем со всеми приложениями которые у нас не хотят работать без обновления. После этого идем в админку, чистим кеш. Потом нажимаем на Система, оно обновится и вуаля, у нас вернулись и заработали все приложения) У меня все проверено и все работает, данные не потерялись. Надеюсь это будет кому-то полезным)
×
×
  • Create New...