-
Постов
962 -
Зарегистрирован
-
Посещение
-
Победитель дней
131
Тип контента
Форумы
Склад
Документация IPS4
Новости
Приложения
Лаборатория
Багтрекер
Разработка
Интервью
Профили
Файлы
Блоги
Календарь
Идеи
Весь контент invisionbyte
-
Боюсь стандартными средствами вывести количество тем не получится - разработчики не предусмотрели такую возможность в коде. Я думаю в скором времени обязательно появится такой плагин.
-
Не нужно ничего искать Пишите у нас на форуме любые вопросы, мы постараемся помочь в меру наших возможностей Спасибо, очень приятно Немного не понял вопроса. Прикрепите скриншот, так будет наглядней.
-
Шаблон forums > front > index > forumRow: {truncate="$lastPost['topic_title']" length="26"}26 - количество выводимых символов 2. Заменить код: .ipsDataItem_lastPoster { width: 24%; max-width: 24%; min-width: 270px;}На: @media screen and (min-width: 767px) { .ipsDataItem_lastPoster { width: 24%; max-width: 24%; min-width: 270px;} }
-
Ширина блока последнего сообщения: .ipsDataItem_lastPoster { width: 24%; max-width: 24%; min-width: 270px;}Ширина статистики: .ipsDataItem_stats { width: 15%; min-width: 150px;}Эти данные можно добавлять в custom.css, чтобы они переопределили стандартные значения.
-
Здравствуйте. 1) Добавьте в custom.css: .ipsDataList_large .ipsDataItem_main, .ipsDataList_large .ipsDataItem_stats, .ipsDataList_large .ipsDataItem_lastPoster, .ipsDataList_large .ipsDataItem_generic { padding: 5px 10px; }2) В тот же файл: .ipsDataItem_main, .ipsDataItem_stats, .ipsDataItem_lastPoster, .ipsDataItem_generic, .ipsDataItem_modCheck, .ipsDataItem_icon { padding: 10px 5px; }
-
Основная проблема обновления форума IP.Board 3.x это конечно же кодировка, на версиях 2.x русскоязычные форумы в основном пользовались кодировкой cp1251. Если кодировка форума utf8, значит вы сэкономите время на конвертации базы данных. Исходная информация о пациенте: Версия форума: 2.3.4 До какой версии будем обновляться: 4.1 На форуме сообщений: 902482 Зарегистрировано пользователей: 30311 Приступим... Копия форума Для начала необходимо создать полную копию вашего форума на поддомене или в папке со всеми файлами форума и копией его базы данных. Для копии базы данных можно использовать утилиту Supex Dumper, позволяющую с лёгкостью и без проблем создавать бэкапы даже больших баз данных. Процесс обновления будет производиться постепенно по каждой линейке: 3.0.x -> 3.1.x -> 3.2.x -> 3.3.x -> 3.4.x -> 4.0.x -> 4.1.x . Эта схема выбрана не зря - она зарекомендовался себя как самая стабильная схема обновления с минимально возможным возникновением ошибок. Supex Dumper Скачать программу можно на официальном сайте - https://sypex.net/, упрощённая версия программы абсолютно бесплатна, она нам вполне подойдёт. Скачиваем программу и загружаем папку sxd в корневой каталог форума. Переходим в адресной строке по адресу site.ru/sxd, вводим данные для доступа к базе и видим очень простой и удобный интерфейс, позволяющий импортировать/экспортировать базу. SSH Для подключения по протоколу SSH воспользуемся программой Putty, скачать которую можно также абсолютно бесплатно с сайта putty.org.ru/download.html. Подключаемся к серверу и снимаем копию с помощью команд: Экспорт mysqldump -u пользователь_БД -p имя_БД > имя_файла Импорт mysql -u пользователь_БД -p имя_БД < файл_дампа_БД Теперь работаем только с копией форума Удаление ненужных файлов В IP.Board 2.x используется устаревшая структура директорий, поэтому нам необходимо почистить форум перед обновлением и удалить все ненужные для дальнейшего использования файлы и папки. Удаляем: /admin /converge_local /interface /ips_kernel /jscripts /lofiversion /modules /resources /retail /skin_acp /sources admin.php index.php init.php Загружаем дистрибутив IP.Board 305.zip в корень форума и распаковываем архив с заменой файлов. Проходим процесс авторизации и выставляем chmod 0777 на соответствующие папки: cache cache/lang_cache cache/lang_cache/1 cache/lang_cache/1 cache/skin_cache public/style_images public/style_css cache/tmp hooks uploads conf_global.php Открываем файл conf_global.php и меняем строчку $INFO['mysql_codepage'] = 'cp1251'; На $INFO['sql_charset'] = 'utf8'; Конвертация базы данных из cp1251 в utf8 Для процесса конвертации кодировки базы, необходимо выполнить определённый запрос к каждой таблице: ALTER TABLE название_таблицы DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci ; либо воспользоваться скриптом, позволяющим создать такие запросы автоматически. Автор скрипта - Ritsuka. Сам скрипт: Копируем содержание скрипта и вставляем в файл php, например convert.php. Загружаем файл на сервер и обращаемся к файлу из строки браузера. Результатом работы скрипта вы увидите запросы к базе, которые необходимо выполнить в phpmyadmin. Совет: если у вас большая таблица сообщений, рекомендуется запрос для перекодирования этой таблицы выполнять отдельно ото всех запросов, чтобы не вызвать ошибку лимита времени на выполнение. После перекодирования базы рекомендуется сделать её копию, например тем же Supex Dumper, чтобы у вас всегда была в наличии база в utf8. Теперь у нас всё готово для запуска процесса обновления. Обновление форума до 3.0.5 Обращаемся в адресной строке по адресу: site.ru/admin/upgrade и следуем указаниям мастера обновления. В процессе обновления форума IP.Board до 3.0.5 у вас могут возникнуть следующие ошибки: Ошибка: CREATE TABLE. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 33 Начиная с версии MySQL 5.5 синтаксис изменился с TYPE= на ENGINE= . Таким образом, необходимо скопировать весь лог ошибок в текстовый документ. Исправление ошибки. В таком случае нам нужно запустить процесс обновления ещё раз. Отметьте опцию выполнения запросов вручную перед началом обновления, в этом случае у нас появится возможность самостоятельно выполнять необходимые запросы исправив TYPE=MyISAM на ENGINE=MyISAM вручную. То есть, перед выполнение предложенных мастером запросов, мы их исправляем. ВНИМАНИЕ: проверяйте каждый запрос на наличие 'TYPE=MyISAM'. После обновления возникла другая неприятная ошибка - текст сообщений отображается знаками вопроса: Идём в базу и видим точно такую же картину: Делаем вывод - нужно было убедиться не только в правильном сравнении таблиц (utf8_general_ci), но и правильное отображение данных в них, хотя бы в самых основных - сообщения, темы, форумы, пользователи. Перекодировка базы в utf8 с помощью Supex Dumper Заливаем бэкап базы от 2.3.x и делаем экспорт базы с помощью программы Supex Dumper, выбрав в опции Кодировка значение utf8. После этого удаляем базу в phpmyadmin и импортируем её дампером, снова указав кодировку utf8 и поставив галочку на пункте Коррекция кодировки. Вуаля: Обновление форума с 3.0.5 до 3.1.4 Загружаем IP.Board 314.zip в корень форума, распаковываем архив с заменой файлов и выставляем права на указанные мастером обновления папки. Для обновления форума переходим по адресу site.ru/admin/upgrade и снова отмечаем галочку на пункте В получаемых запросах снова меняем TYPE=MyISAM на ENGINE=MyISAM и выполняем в phpmyadmin. Процесс обновления завершён успешно! Снимаем копию форума (без папки uploads) и базы данных и продолжаем наше обновление. Обновление форума с 3.1.4 до 3.2.3 Технология обновления такая же - загружаем 323.zip в корень форума, распаковываем и переходим по site.ru/admin/upgrade. Начиная с этой версии редактировать запросы уже не нужно, разработчики учли этот момент и исправили запросы для более новой версии MySQL. Обновление форума с 3.2.3 до 3.3.4 Без проблем обновляемся до IP.Board 334.zip и продолжаем наше обновление. Обновление форума с 3.3.4 до 3.4.6 Точно также производим обновление, залив дистрибутив 3.4.6.zip в корень форума. Проблем на этом этапе не возникло. Если у вас будут проблемы при обновлении - пишите в комментариях, будем разбираться. Обновление 3.4.6 до 4.1.4 Обновление производится по общему принципу - заливаем файлы 4.1.4.zip поверх старых с заменой существующих. Переходим по адресу site.ru/admin/upgrade. Перед обновлением рекомендуем ознакомиться с общей информацией по переходу между линейками 3.x и 4.x - Обновление с 3.x до 4.x - общая информация. Таким образом мы произвели обновление большого форума на IP.Board 2.3.x до актуальной на данный момент версии 4.1.x с почти миллионом сообщений без потери какой-либо информации.
-
У русскоязычных пользователей Invision Community 4 часто встречается проблема с отображением дат - не отображается название месяца, либо отображается в виде знаков вопроса: Решение проблемы с локалью в IPS 4 Пример решения проблемы будет производиться на ОС Debian, если у вас linux, решение будет схожим. И так, переходим в файловый менеджер и открываем файл /etc/locale.gen. В нём будет список поддерживаемых локалей. Находим строчку: # ru_RU ISO-8859-5Меняем её на: ru_RU UTF-8После этого выполняем команду по SSH перестроения локали следующей командой: locale-genРезультат: Источник: http://invisionbyte.ru
-
В сети всё чаще стали появляться случаи редиректов на другие сайты на форумах IP.Board. В нашем случае на форуме при определённых условиях производился редирект пользователя на страницу filestore321.com/download.php?id=xxxxxxxx. Редирект может производиться не обязательно на указанный сайт, но и на многие другие: file2store.info, url123.info и т.д. Об этом сообщал только Яндекс, другие поисковые системы или антивирусы его не обнаруживали. Яндекс в панели Веб-мастера определяет его как "Поведенческий анализ": Код вируса зашифрован и находится в базе данных в таблице skin_cache. Таким образом, для удаления вируса недостаточно просто перестроить кеш файлы шаблонов - в этом случае он снова запишется в файлы кеша из базы данных. Удаление вируса на IP.Board 3.x Открываем phpmyadmin, переходим на вкладку Поиск и ищем: preg_replaceОткрываем найденные результаты из таблицы skin_cache. Результаты могут быть найдены сразу в нескольких столбцах, нам нужен skin_global. Копируем содержимое столбца в текстовый документ и находим опять же preg_replace: Сравните найденный вами отрезок кода с показанным на изображении выше. Это и есть вредоносный код. Удаляем его как показано на изображении. Вставляем содержимое обратно в столбце и сохраняем изменения. Остался один шаг - перестроить кеш файлы шаблонов, чтобы вирус был окончательно удалён из файлов кеша. Автор: http://invisionbyte.ru
-
Поищите по отрывкам из текста: Welcome и т.д.
-
Языковые строки во множественном числе (Плюрализация)
invisionbyte прокомментировал Вадим запись в Разработчику
Спасибо, исправлено -
Убирается в шаблоне forums > front > topics: {{if $comment->editLine()}} {$comment->editLine()|raw} {{endif}}
- 4 ответа
-
- 1
-
Tujh111, смотря какая тема у Вас установлена. скорее всего убрать можно в шаблоне globalTemplate
-
Админцентр > Кастомизация > Внешний вид > Темы > HTML и CSS код темы > вкладка CSS > core > front > custom > custom.css В этот файл нужно добавить следующий код: .ipsUserPhoto_large img, img.ipsUserPhoto_large, .ipsUserPhoto_large:after { width: 120px; height: 120px; border-radius: 60px; }Если меняете размеры ширины и высоты, соответственно нужно менять значение border-radius, иначе аватарки будут не круглые.
- 1 ответ
-
- 1
-
Добрый вечер! Админцентр > Кастомизация > Внешний вид > Темы > HTML и CSS код темы > forums > front > topics > postContainer За отображение группы пользователя под аватаркой отвечает следующий код: <li>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}</li>Вы можете закомментировать его или удалить.
- 1 ответ
-
- 1
-
IPS Communtiy 4 автоматически определяет наиболее подходящие значения для установки cookie для вашего сайта. Для большинства администраторов эти настройки являются приемлемыми, нет необходимости переопределять стандартные настройки. Однако, если в вашем случае настройки не подходят (например, если ваше сообщество интегрировано с внешним сайтом), то вы можете их переопределить с помощью файла constants.php. Если вы ранее ещё не создали файл constants.php в корневой директории вашего сообщества, необходимо его создать со следующим содержимым: //define( 'COOKIE_DOMAIN', '.example.com' ); //define( 'COOKIE_PREFIX', 'prefix_' ); //define( 'COOKIE_PATH', '/' ); // Если ваш основной сайт не имеет SSL сертификата, а сообщество имеет, вы должны установить следующую константу //define( 'COOKIE_BYPASS_SSLONLY', TRUE );Раскомментируйте необходимые константы.
-
В Invision Community 4 существует две специальные страницы, которые полностью не входят в тему и систему языков: error.html Отображается в случаях, когда возникла серьёзная ошибка и нормальная ошибка на странице не может быть отображена (например когда сервер базы данных недоступен, или невозможно получить данные темы и языков).upgrading.html Данная страница отображается в процессе обновления.Вы можете создать свои собственные страницы с любым содержанием для этих случаев и указать Invision Community 4 использовать созданные вами страницы вместо стандартных. Такой способ позволит сохранить ваши страницы даже при обновлении системы, когда все файлы заменяются новыми. Для этого: 1. Создайте необходимые файлы и загрузите их в корневую директорию вашего сообщества. 2. Если вы ещё не создавали файл constants.php в корне вашего сообщества, его необходимо создать со следующим содержимым: <?php define( 'ERROR_PAGE', 'custom_error.html' ); define( 'UPGRADING_PAGE', 'custom_upgrading.html' ); ?>Соответственно измените названия страниц (custom_error.html и custom_upgrading.html) на собственные.
-
При разработке приложений и плагинов для IPS4 вы рано или поздно столкнётесь с взаимодействием с учётными записями пользователей. В данной статье приведены примеры взаимодействия в Invision Community 4. Основной класс пользователей в IPS4 - \IPS\Member. /* Получить авторизованного пользователя */ $member = \IPS\Member::loggedIn(); /* Загрузить определённого пользователя по его ID */ $member = \IPS\Member::load( 1 ); /* Загрузить определённого пользователя по его e-mail адресу */ $member = \IPS\Member::load( 'john@doe.com', 'email' ); /* Получить гостя или создать нового пользователя */ $member = new \IPS\Member;Если у вас есть экземпляр класса \IPS\Member для работы, вы можете настроить или изменить значения для учётной записи пользователя просто установив свойства на объекте, которые соответствуют столбцам в таблице базы данных core_members. Например, чтобы изменить выбранный пользователем язык, вы можете сделать следующее: /* Загружаем пользователя */ $member = \IPS\Member::load( 1 ); $member->language = 2; $member->save();Вы должны вызвать метод save() после внесения соответствующих изменений, чтобы они были сохранены в базе данных, иначе изменения будут применены только до обновления страницы. Если вы работаете с объектом гостя и вызываете метод save(), запись о новом пользователе будет сохранена в базе данных (то есть будет создан новый пользователь). Для облегчения работы, в классе присутствуют некоторые методы, так называемые получатели и установщики. Например, при установке имени пользователя, автоматически обновится seo имя пользователя (seo name) и появится запись в журнале смены имён пользователей. Некоторые особые свойства доступны через получателей: $member->group: специальный получатель (это свойство, не метод), который вернёт данные группы пользователя. Этот метод автоматически объединит разрешения основной группы с одной или всеми вторичными группами, выдав таким образом наилучшие разрешения из всех групп.$member->groupName: Вернёт название группы пользователя, форматированное на основе соответствующей настройки в админцентре.$member->groups: Вернёт идентификаторы (ID) всех групп, в которых состоит пользователь.$member->real_name: Вернёт имя пользователя или пустую строчку для гостя.$member->birthday: Вернёт локализованный день рождения пользователя, принимая во внимание тот факт, что предоставление года рождения необязательно.$member->photo: Свойство возвращает фотографию пользователя в качестве объекта \IPS\Url (который может быть приведён в строку для получения URL адреса фотографии). Фото безопасно для просмотра в админцентре.$member->rank: Свойство возвращает массив заголовка пользователя и изображение ранга на основе соответствующих настроек в админцентре.Есть ещё немаловажные методы в классе: $member->delete( $setAuthorToGuest=TRUE ): Вызовите этот метод для удаления пользователя. Принимается один параметр, позволяющий установить авторство контента удаляемого пользователя в качестве гостя, если параметр TRUE. Если FALSE - контент будет удалён. Обратите внимание, если вы используете внешние методы авторизации, поддерживающие удаление пользователей, пользователь также будет удалён и во внешней базе данных.$member->flagAsSpammer(): Метод отметит пользователя спамером, удалив или скрыв его контент (на основе конфигурации администратора) и сообщит о спамере в IPS анти-спам (если указано в настройках).$member->unflagAsSpammer(): Метод снимет отметку спамера с пользователя и сообщит об изменениях в IPS анти-спам (если настроено).$member->age( $date=NULL ): Вернёт возраст пользователя. Если объект \IPS\DateTime поставляется в качестве единственного параметра метода, то возраст рассчитывается на основе заданной даты.$member->location(): Возвращает текущее местонахождение пользователя на сайте, если он онлайн.$member->isAdmin(): Возвращает администратор пользователь, или нет.$member->isOnline(): Возвращает онлайн ли пользователь, или нет.$member->isBanned(): Возвращает забанен ли пользователь, или нет. Включая временный бан..$member->inGroup( $group, $permissionArray=FALSE ): Проверяет, принадлежит ли пользователь группе или нескольким группам. $group может быть ID группы (целое число), или массив ID групп. Если пользователь принадлежит ЛЮБОЙ группе массива, метод вернёт значение TRUE. Если $permissionArray передаётся как TRUE, пользователь проверяется по массиву разрешений вместо ID групп.$member->language(): Возвращает экземпляр \IPS\Lang для пользователя на основе его предпочтения, либо на основе автоматически выбранного языка по умолчанию, если пользователь не выбрал язык. Это используется для получения языковых строк, например: \IPS\Member::loggedIn()->language()->addToStack( 'языковая_строка' );$member->url(): Возвращает URL адрес на профиль пользователя как экземпляр \IPS\Http\Url.$member->acpUrl(): Возвращает URL адрес на страницу редактирования пользователя в админцентре как экземпляр \IPS\Http\Url.$member->link( $warningRef=NULL, $groupFormatting=FALSE ): Возвращает HTML ссылку на профиль пользователя. Если $warningRef передаётся в виде строки, будет представлен ключ предупреждения пользователя (если пользователь предупреждён). $groupFormatting обозначает форматировать или нет отображаемое имя пользователя на основе настройки форматирования в админцентре.$member->profileFields(): Возвращает дополнительные поля профиля пользователя в виде массива.$member->contentProfileFields(): Похоже на profileFields() , но возвращает контент полей профиля.$member->ipAddresses(): Возвращает IP адреса, используемые пользователем.$member->markAllAsRead(): Отмечает сайт прочитанным для пользователя.$member->markersItems( $app, $key ): Извлекает маркеры элементов для пользователя для данного приложения и ключа.$member->markersResetTimes( $app ): Извлекает количество сбросов маркеров элементов для данного приложения.$member->warnings( $limit, $acknowledged=NULL, $type=NULL ): Извлекает предупреждения пользователя. Лимит может быть передан как целое число, чтобы ограничить количество извлекаемых элементов. Если $acknowledged указано NULL, будут извлечены все предупреждения, или TRUE и FALSE будут извлечены только признанные или непризнанные предупреждения соответственно. Если $type передаётся в виде строки, будут извлечены предупреждения только этого типа.$member->reputation(): Метод возвращает репутацию пользователя в качестве языковой строки.$member->reputationImage(): Метод возвращает изображение репутации пользователя.$member->encryptedPassword( $password ): Шифрование простого текстового пароля с использованием соли пользователя (вы можете обновить соль перед вызовом этого для нового пароля).$member->generateSalt(): Генерирует новую соль для пользователя.$member->notificationsConfiguration(): Возвращает конфигурацию уведомлений пользователя.$member->following( $app, $area, $id ): Определяет, если пользователь подписан на определённое приложение, область , ID (все значения должны быть указаны)$member->acpRestrictions(): Возвращает ограничения пользователя в админцентре, к каким областям админцентра пользователь имеет доступ.$member->modPermissions(): Возвращает модераторские разрешения пользователя, если имеются.$member->reportCount(): Получить количество элементов контента с жалобами, которое пользователь может просмотреть в центре жалоб.$member->isIgnoring( \IPS\Member $member, $type ): Определяет игнорируют ли пользователя другие участники. $type должен быть указан и должен быть 'signatures', 'topics' или 'messages'.$member->createMenu(): Возвращает созданное пользователем меню. Это кэшируются (и при необходимости автоматически очищается).$member->moderateNewContent(): Определяет, должен ли новый контент пользователя пройти модерацию.$member->coverPhoto(): Возвращает обложку пользователя, если она имеется.$member->hasAcpRestriction( $app, $module=NULL, $key=NULL ): Определяет, если пользователь имеет ограничения в админцентре, установленные для данного $app, $module или $key (обязательно только $app). Если у пользователя есть набор ограничений, имеется ввиду, что он имеет доступ к ним.$member->modPermission( $key=NULL ): Определяет, если пользователь имеет доступные модераторские разрешения.$member->canWarn( \IPS\Member $member ): Может ли текущий пользователь предупредить другого пользователя.$member->checkLoginKey(): Проверяет ключ авторизации пользователя на срок его хранения.$member->recountNotifications(): Пересчитывает непрочитанные уведомления пользователя.$member->recountContent(): Пересчитывает количество контента пользователя.$member->recountReputation(): Пересчитывает репутацию пользователя.$member->canAccessModule( $module ): $module должен быть экземпляром \IPS\Application\Module и метод возвращает имеет ли пользователь доступ к модулю или нет.$member->validate(): Отмечает пользователя подтверждённым.$member->merge( \IPS\Member $otherMember ): Объединяет текущий аккаунт пользователя с другим (обратите внимание, что слияние происходит в фоновом режиме и не может произойти сразу; кроме того, аккаунт пользователя, который будет удалён, не сможет удалить, пока не объединится весь контент).$member->checkPostsPerDay(): Проверяет ограничение сообщений в день.$member->checkGroupPromotion(): Проверяет, должен ли пользователь продвинуться в другую группу и продвигает, если это так. Обратите внимание, что необходимо опять вызвать save() вручную для сохранения изменений.$member->clearCreateMenu(): Очистка кеша создания меню для пользователя.