Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией начиная с 07/01/10 во всех областях

  1. 13 баллов
    Когда-то давно я пришла на ibresource и выложила бесплатные скины под 1.3. Свои, без копирайтов даже, мне приятно было, если кому-то они пригодятся..... Просто так. Без корысти. Это было в 2005-м. В общем, тогда для меня предметом гордости было, что спустя три месяца перевели в группу ipb specialist. Потом там группу упразднили. Но мы ее реанимировали. Здесь.
  2. 5 баллов
    {{if !isset(\IPS\Output::i()->metaTags['og:image'])}} {{preg_match('~<img[^>]*?src="(<fileStore.core_Attachment>([^"]*))"[^>]*>~i', $comment->content(), $matches); }} {{if isset($matches[1])}} {{\IPS\Output::i()->parseFileObjectUrls($matches[1]);}} {{\IPS\Output::i()->metaTags['og:image'] = $matches[1];}} {{endif}} {{endif}}
  3. 5 баллов
    Иногда на форуме требуется создание индивидуальных статических страниц, сохраняя оформление форума. Для этого советуют использовать (DP31) Custom Pages или IP.Content. Это оправдано, когда пользовательские страницы необходимо в определенном количестве. Для одной одной или двух страниц, покупать IP.Content или разбирается с (DP31) Custom Pages не совсем оправданно. Есть два способа быстрого создания таких страничек. Правильный способ, через регистрацию своего приложения через административную панель но есть другой "неправильный" способ. Быстрый и простой. Для начала рассмотрим неправильный способ. Стоит задача сделать свою страницу по адресу "ваш форум/MyCustomPage/". Создаем папку MyCustomPage. В папку кладем файл, например index.php со следующим содержанием: <?php define( 'IPB_THIS_SCRIPT', 'public' ); require_once( '../initdata.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' ); $registry = ipsRegistry::instance(); $registry->init(); $registry->output->setTitle('Ваше название'); $registry->output->addContent('Ваш контент'); $registry->output->sendOutput(); ?> 'Ваш контент' - содержание вашей страницы. Здесь может быть любой текст или простой html код. Главное что бы в нем не присутствовала одиночная кавычка ( ' ). Если код html сложный, используется пользовательский CSS и javascript, то в $registry->output->addContent('Ваш контент') меняем 'Ваш контент' на переменную $content. $content может содержать массив, результат из базы данных или другие данные. Получаем следующий пример. <?php define( 'IPB_THIS_SCRIPT', 'public' ); require_once( '../initdata.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' ); $content = <<<BLK Ваш контент BLK; $registry = ipsRegistry::instance(); $registry->init(); $registry->output->setTitle('Название'); $registry->output->addContent($content); $registry->output->sendOutput(); ?> Здесь $content информация которая находится в блоге между BLK. Ваша первая "Пользовательские страница" на IP.Board 3 готова. Осталось поместить ее в меню: Добавление своих ссылок в верхнее меню форума IPB 3.0 Важно: ссылка на вашу страницу, должна быть полной. Если вы создали файл index.php в папке MyCustomPage, то короткая ссылка "ваш форум/MyCustomPage/" вызовет ошибку. А ссылка "ваш форум/MyCustomPage/index.php" откроет нужную страницу. Название папки и имя файла может быть произвольным. Источник: community.invisionpower.com и моя обработка полученных знаний :) Продолжение: Регистрируем персональные страницы для IP.Board 3
  4. 5 баллов
    В тегах русская буква б воспринимается как запятая. И поэтому тег с этой буквой делится на два бессмысленных. Исправляем. (не работает) admin\applications\forums\extensions\search\engines\sql.php найти if( $search_tags ) { IPSSearchRegistry::set('opt.noPostPreview', true); } заменить на if( $search_tags ) { IPSSearchRegistry::set('opt.noPostPreview', true); IPSSearchRegistry::set('set.returnType', 'tids' ); } Исправляем глюк с ъ в визуальном редакторе. Это проявляется в Опере public\js\3rd_party\ckeditor\ips_config.js ищем if ( inACP ) { config.extraPlugins = 'ipsbbcode,ipsquote,ipscode,ipsmedia,ipsoptions'; } else { config.extraPlugins = 'ipsbbcode,ipsquote,ipscode,ipsmedia,ipsautosave,ipsswitch,pastefromword,ipsemoticon'; } добавляем после if(CKEDITOR.env.opera){ delete config.blockedKeystrokes[config.blockedKeystrokes.indexOf(CKEDITOR.CTRL + 66)]; for(var r in config.keystrokes) if(config.keystrokes[r][0]==CKEDITOR.CTRL + 66 && config.keystrokes.splice(r,1))break; } Топорное исправление для 3.2.3 public\js\3rd_party\ckeditor\ckeditor.js ищем i.blockedKeystrokes=[1000+66,1000+73,1000+85]; меняем на i.blockedKeystrokes=[1000+73,1000+85]; ищем и удаляем [1000+66,'bold'], Все. Руссификация При подписке на уведомление, приходят битые ссылки. Заходим в АЦ - Управление языками Ищем строку строку с ключом: subs_with_post Заменить <#BOARD_ADDRESS#>?showtopic=<#TOPIC_ID#>&view=getnewpost на <#URL#> В IE8 вылезает такой глюк. Причина в тексте "ПОПУЛЯРНАЯ ТЕМА" - ломает верстку. И "ЗАФИКСИРОВАНО" - не удачный перевод. Для сравнение английский вариант Исправляет, подбирая новые короткие слова на свой вкус :)
  5. 5 баллов
    После создание темы в блоге "Пользовательские страницы на IP.Board 3", постоянно получаю в личку просьбу продолжить тему. Для простых страничек, лучше использовать старый совет. Если надо сделать, что-то сложное, с PHP логикой, работа с базой данной, то можно использовать следующее решения: Создаем новое, простое приложение MyCustomPage. В admin/applications_addon/other/ создаем папку mycustompage Как правило приложения включают в себя следующие разделы (папки): extensions modules_admin modules_public setup skin_cp Для начала, мы создадим две папки. modules_public skin_cp В skin_cp положим иконку appIcon.png. Иконку можно взять в любом приложение, хотя все будет работать и без нее. Иконка применяется в АдминЦентре в списке приложений. В modules_public создаем одну папку, назовем ее например modulename В этой папке создаем два файла. Первый основной (он должен быть всегда): defaultSection.php <?php $DEFAULT_SECTION = 'firstname'; ?> firstname - имя второго файла. Относительный путь на сайте у него будет admin/applications_addon/other/mycustompage/modules_public/modulename/firstname.php Это важно: mycustompage - Директория всего приложения modulename - Имя директории, содержащей файлы модуля (Ключ модуля) firstname.php - Имя файла Это название отражается и в главном классе файла firsname.php class public_mycustompage_modulename_firstname extends ipsCommand Понятно, что название могут быть любые. Но замена название в одном месте, должно быть заменено везде, где оно фигурирует. И сам файл firstname.php <?php if ( ! defined( 'IN_IPB' ) ) { print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } class public_mycustompage_modulename_firstname extends ipsCommand { public function doExecute( ipsRegistry $registry ) { $this->output = "Текущая дата: " .strftime('%d %B %Y'); // Здесь формируем контент $this->registry->output->setTitle( "Название" ); $this->registry->output->addContent( $this->output ); $this->registry->output->sendOutput(); } } ?> Можно сказать это необходимый минимум. Мы не описали lang - файлы, не подключили свой шаблон. Но уже такое решение, вполне рабочее. Теперь надо только рассказать IP.Board, что у нас есть "готовое" приложение. Для этого идем в АЦ Панель управления > Приложения > Управление модулями > Список модулей > Приложения -> Добавить приложение My Control Panel > Applications & Modules > Manage Applications & Modules > Applications -> Add New Application В этой форме, важны два поля Публичное имя приложения ( Application Public Title ) - имя под котором приложение будет присутствовать в меню. Директория приложения ( Application Directory ) - место где находится наше приложение. И он же адрес странички: /index.php?app=mycustompage Но в данный момент приложение доступно только по прямой ссылке, в меню ссылка еще не работает. Регистрируем публичный модуль нашего приложения. Добавить публичный модуль Здесь важно правильно написать Ключ модуля (Module Key) и естественно включить модуль: Модуль включен? (Module Enabled). Для безопасности во все вновь созданные директории, можно положить защитные (пустые) файлы index.html Вот и все. Будет ли продолжение? Не знаю. Не сделано многое. Нет администраторского модуля, нет своих языковых файлов. Одним словом нечего нет. Буду делать, конкретное приложение для себя, то выложу его исходники и опишу. Если не будет задачи, описывать сферического коня в вакууме, не очень интересно Повторюсь, для простых вещей, гораздо удобнее решение описанное здесь: Пользовательские страницы на IP.Board 3 Для сложных решений, проще использовать IP.Content. Проще и быстрей. Он стоит своих денег.
  6. 4 балла
    Недавно была тема, как добавить кнопки поделится для Мэйл.ру, Одноклассники.ру, Я.ру. Как раз не так давно делал эти кнопки для себя, делюсь с вами. :) В архиве инструкция, плагины кнопок и картинки для кнопок. sharelinks.zip
  7. 4 балла
    Супер,очень красивый и стильный.
  8. 4 балла
    У разработчиков IPB (http://www.invisionpower.com/) любая локализация бесплатна, так как делается добровольцами всего мира. И я в том числе что-то немного перевожу для себя, и делюсь этим с другими (трекер, документация к ip.content, другие переводы дополняю). Мы все так делаем, во всех странах. Только IBResourcе продают локализацию, единственные в мире. Но они не разработчики форума, они перепродают лицензии, купленные оптом на свой аккаунт (оптом – раза в три дешевле), переводят с английского силами гастербайтеров фрилансеров, организуют плохонькую техподдержку и немного тюнят движок (часто лучше бы этого не делали, с вконтакте вначале была полная лажа в виде переопределения базовых шаблонов, что делало форум несовместимым со сторонними скинами). При этом все больше приятных новшеств IPS действуют только для купивших напрямую, а IBR трет на форуме темы с вопросом, обеспечивает ли русская лицензия доступ к ресурсам из админки через IPS Marketplace App. Потому что ни фига не обеспечивает. С продаж они имеют профит, но реально заинтересованы в денежных клиентах (которые купят VIP обслуживание), а не в школоте, сэкономившей на школьных завтраках на покупку форума и не собирающейся приобретать услуги сверх (активная лицензия предполагает бесплатный набор действий техподдержки – но, когда мелких много, нужен большой штат саппорта – а на какие шиши...). IBResourcе не являются официальными представителями, они просто легальные барыжники (любой может много купить и 26-я лицензия уже будет стоить 49 вместо 149). Можете спросить на форуме http://community.invisionpower.com/forum/305-pre-sales-questions/. Кстати, там их практически никто не знает, так как ведут себя тихо и не светятся. Персонал вначале отвечает на вопрос, можно ли покупать у русских представителей, что не слышали о таких и вообще через третьи руки покупать не рекомендуют. Потом Бфарбер появляется и вспоминает, что да, когда-то давно ИБРы скупили много лицензий оптом, а теперь их продают. Возможно, и он уже забыл. Вот аккаунт, через который куплены все "русские лицензии". Всего навсего малозаметный клиент, даже без статуса developer. Надо ли с ними связываться, каждый решает сам. Многие покупают "русскую лицензию" только ради русской техподдержки. Но устройте опрос, довольны ли они ею потом. Самые хитрые покупают английскую лицензию (на самом деле других и не бывает), а перевод, ради русской админки (хотя он жуткий), вытаскивают из варезных дистрибутивов ибров. Источник: Купить форум у IBR, а модули у IPS
  9. 4 балла
    Этот шаблон используется в архиве и ip.content. В блогах используется свой шаблон, вконтактик нормально вставить не вышло. Пример тут.
  10. 3 балла
    https://invisioncommunity.com/files/file/8547-sd-image-host/ Даже смог изображение с старой версии перенести без каких либо проблем на новую, правда пришлось это делать вручную. (Делал бекап старой таблицы, правил код ручками и импортировал обратно)
  11. 3 балла

    Версия 1.0.1

    30 скачиваний

    Вопрос-ответ и капча для предотвращения спама через форму обратной связи.

    Бесплатно

  12. 3 балла
    Обращались за помощью с адаптацией старого приложения под последнюю версию форума. Все выполнено очень грамотно, приложение было переписано с нуля, добавлен весь необходимый функционал. Огромное спасибо!
  13. 3 балла
    https://dev.twitch.tv/docs/embed/video-and-clips/ В 4.5.0 это исправлено. Можете взять оттуда html-код. Шаблон core - global - embed - twitch
  14. 3 балла
    {{$dbId = 1;}} {{$recordsClass = '\IPS\cms\Records' . $dbId;}} {{$records = $recordsClass::getItemsWithPermission( array( array( 'category_id=?', 2 ) ) );}} 1 - ID базы, из которой выводить записи 2 - ID категории, из которой выводить записи
  15. 3 балла
    Главный админ портала захотел определять рекламный блок в шапке для каждого подфорума в отдельности, а не только глобальный. Немного полазив по исходникам IPB 3.1.4 было решено сделать такую возможность. На всю реализацию затеи ушло 1,5 часа (вместе с проверкой). Для начала полазил по Админской Панели и нашёл место, в котором указываются стандартные рекламные блоки: Выяснил, что код рекламных блоков хранится в таблице core_sys_conf_settings. За рекламные блоки в шапке отвечают следующие записи: ad_code_global_header , ad_code_board_index_header , ad_code_forum_view_header. Именно параметр ad_code_forum_view_header отвечает за отрисовку баннера в форумах. Руководство к действию. Через phpMyAdmin добавляем в таблицу forums новое поле banner (тип TEXT, сравнение utf8_general_ci): Проверьте, что данное поле появилось. Открываем на редактирование файл /admin/applications/forums/modules_admin/forums/forums.php и ищем следующий код: 'description' => '', 'status' => 0, который заменяем на такой кодес: 'description' => '', 'banner' => '', 'status' => 0, Чуть ниже находим кодес такого содержания: 'description' => '', 'status' => 1, который заменяем на такой кодес: 'description' => '', 'banner' => '', 'status' => 1, Ещё ниже находм следующий участок: $form['sub_can_post'] = $this->registry->output->formYesNo( 'sub_can_post', ( isset($_POST['sub_can_post']) AND $_POST['sub_can_post'] ) ? $_POST['sub_can_post'] : ( $forum['sub_can_post'] == 1 ? 0 : 1 ) ); и заменяем его на: $form['sub_can_post'] = $this->registry->output->formYesNo( 'sub_can_post', ( isset($_POST['sub_can_post']) AND $_POST['sub_can_post'] ) ? $_POST['sub_can_post'] : ( $forum['sub_can_post'] == 1 ? 0 : 1 ) ); $form['banner'] = $this->registry->output->formTextarea("banner" , IPSText::br2nl( ( isset( $_POST['banner']) AND $_POST['banner'] ) ? $_POST['banner'] : $forum['banner'] ) , 120, 5 ); Как раз тут указываются размеры поля ввода кода рекламного баннера в шапке (ширина: 120, высота: 5). Далее находим кодес: 'description' => IPSText::getTextClass('bbcode')->xssHtmlClean( nl2br( IPSText::stripslashes( $_POST['description'] ) ) ), 'use_ibc' => intval($this->request['use_ibc']), который меняем на такой: 'description' => IPSText::getTextClass('bbcode')->xssHtmlClean( nl2br( IPSText::stripslashes( $_POST['description'] ) ) ), 'banner' => nl2br( IPSText::stripslashes($_POST['banner']) ), 'use_ibc' => intval($this->request['use_ibc']), Сохраняем файл /admin/applications/forums/modules_admin/forums/forums.php и копируем его на WEB-сервер. Открываем на редактирование файл /admin/applications/forums/modules_public/forums/forums.php и ищем следующий код: /* Set Ad code for the board index */ if( $this->registry->getClass('IPSAdCode')->userCanViewAds() ) { $this->registry->getClass('IPSAdCode')->setGlobalCode( 'header', 'ad_code_forum_view_header' ); $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_forum_view_footer' ); } заменяем его на ткой кодес: /* Set Ad code for the board index */ if( $this->registry->getClass('IPSAdCode')->userCanViewAds() ) { if ($this->forum['parent_id'] == 'root') { // category $fbanner = $this->DB->buildAndFetch( array( 'select' => 'banner', 'from' => 'forums', 'where' => "id=".$this->forum['id']) ); if ($fbanner['banner']) $this->forum['banner'] = $fbanner['banner']; } if (strlen($this->forum['banner']) > 3) { $this->registry->getClass('IPSAdCode')->headerCode = $this->forum['banner']; } else { $this->registry->getClass('IPSAdCode')->headerCode = $this->settings['ad_code_forum_view_header']; } $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_forum_view_footer' ); } Сохраняем файл /admin/applications/forums/modules_public/forums/forums.php и копируем его на WEB-сервер. Открываем на редактирование файл /admin/applications/forums/modules_public/forums/topics.php и ищем следующий код: /* Set Ad code for the board index */ if( $this->registry->getClass('IPSAdCode')->userCanViewAds() ) { $this->registry->getClass('IPSAdCode')->setGlobalCode( 'header', 'ad_code_forum_view_header' ); $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_forum_view_footer' ); } и заменяем его на такой кодес: /* Set Ad code for the board index */ if( $this->registry->getClass('IPSAdCode')->userCanViewAds() ) { if (strlen($this->forum['banner']) > 3) { $this->registry->getClass('IPSAdCode')->headerCode = $this->forum['banner']; } else { $this->registry->getClass('IPSAdCode')->headerCode = $this->settings['ad_code_topic_view_header']; } $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_topic_view_footer' ); } Сохраняем файл topics.php и копируем его на WEB-сервер. Открываем на редактирование файл /admin/applications/forums/skin_cp/cp_skin_forums.php и ищем следующую строчку: <li><label class='head'>{$this->lang->words['frm_f_basic']}</label></li> Перед этой строкой нужно вставить следующие строчки: <li><label class='head'>Header Banner</label></li> <li> {$form['banner']} </li> Сохраняем файл cp_skin_forums.php и копируем его на WEB-сервер. Все изменения внесены. Кеш обновлять не нужно. В админке теперь видим новое поле для ввода (настройки конкретно форума): В настройках категории новое поле тоже есть:
  16. 3 балла
    Не знаю какого черта IPS делает свой скин таким корявым...в плане того что не во всю ширину. Исправляем сеЕ безобразие в Look & Feel > Manage Skin Sets & Templates > Manage Templates > Ваш скин > CSS > ipb_styles.css Находим секцию /* LAYOUT */ #content, .main_width { margin: 0 auto; /* Uncomment for fixed */ /*width: 980px;*/ /* Fluid */ width: 87% !important; min-width: 960px; } Меняем 87% на 98 Это делает главную страницу форума во всю ширину. Все остальные страницы будут во всю длину если вы нажмете кнопку F5 :)
  17. 3 балла
    Наверное, многие невзлюбили панель смайлов при переходе с 3.1.х до 3.2.х-3.3.х До: После: Начнём АЦ > Внешний вид > Управление стилями и шаблонами > Управление шаблонами в IP.Board > CSS > ipb_ckeditor.css Ищем: /* Emo slide out tray */ .ipsSmileyTray { position: relative; text-align: center; overflow: auto; margin: 0px auto 0px auto; padding: 4px 24px 4px 24px; min-width: 600px; width: 75%; height: 32px; border: 1px solid #D5DDE5; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; Заменяем: /* Emo slide out tray */ .ipsSmileyTray { position: relative; text-align: center; overflow: auto; margin: 0px auto 0px auto; padding: 4px 24px 4px 24px; min-width: 600px; width: 85%; height: auto; border: 1px solid #D5DDE5; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; Ищем: .ipsSmileyTray img.bbc_emoticon { opacity: 0.8; cursor: pointer; margin: 6px 3px 0px 3px; max-width: 30px; max-height: 30px; } Заменяем: .ipsSmileyTray img.bbc_emoticon { opacity: 0.8; cursor: pointer; margin: 6px 3px 0px 3px; max-width: auto; max-height: auto; }
  18. 3 балла
    По умолчанию почему-то урезали нумерацию страниц в темах. И очень не удобно просматривать темы с большим количеством страниц. Безобразие исправляем в шаблоне Paginationtemplate глобального темплейта мобильного скина. Заменяем содержимое на это <if test="haspages:|:$work['pages'] > 1"> <if test="firstpage:|:1 < ($work['current_page'] - $data['dotsSkip'])"> <a class="button page-button" href='{parse url="{$data['baseUrl']}&{$data['startValueKey']}=0" base="{$data['base']}" seotitle="{$data['seoTitle']}" template="{$data['seoTemplate']}"}' title='{$this->lang->words['tpl_gotofirst']}' rel='start'>|{$this->lang->words['_laquo']}</a> </if> <if test="normalpages:|:is_array( $work['_pageNumbers'] ) && count( $work['_pageNumbers'] )"> <foreach loop="pagination:$work['_pageNumbers'] as $_real => $_page"> <a class="button page-button<if test="activepage:|:$_real == $data['currentStartValue']"> current</if>" href="{parse url="{$data['baseUrl']}&{$data['startValueKey']}={$_real}" base="public" seotitle="{$data['seoTitle']}" template="{$data['seoTemplate']}"}" title="$_page">{$_page}</a> </foreach> </if> <if test="lastpage:|:isset( $work['_showEndDots'] ) && $work['_showEndDots']"> <a class="button page-button" href="{parse url="{$data['baseUrl']}&{$data['startValueKey']}={parse expression="intval( ( $work['pages'] - 1 ) * $data['itemsPerPage'] )"}" base="public" seotitle="{$data['seoTitle']}" template="{$data['seoTemplate']}"}" title="{$this->lang->words['tpl_gotolast']}" rel='last'>|{$this->lang->words['_raquo']}|</a> </if> </if>
  19. 3 балла
    Разобрался с проблеммой и оказалось все гениальное просто. Вот кому надо выкладываю решение данной проблеммы. Идем по адресу: /hooks/boardIndexGalleryImages_xxxxxxxxxxxx.php где xxxxxxxxxxx это набор произвольных символов. Настройка сортировки производится следующим образом: $img_list->getListingData( array( 'st' => 0, 'show' => 6, 'approve' => 1, 'sort_key' => 'i.idate', 'album' => 0, 'category' => 0, 'allow_cats' => $allow_cats, 'allow_albums' => $allow_albums, ) ); Где: 'show' => 6, - количество выводимых изображений, 'sort_key' => 'i.idate', - параметр сортировки, для вывода в случайном порядке необходимо заменить i.date на rand() 'album' => 0, - id альбома 'category' => 0, - id категории В версии галереи 4.0.0 и выше настройки перенесены сюда: /admin/applications_addon/ips/gallery/sources/classes/hooks.php /* Fetch 20 recent images */ if ( $this->memberData['g_gallery_use'] ) { $recents = $this->registry->gallery->helper('image')->fetchImages( $this->memberData['member_id'], array( 'limit' => 20, 'sortKey' => 'date', 'sortOrder' => 'desc', 'unixCutOff' => GALLERY_A_YEAR_AGO ) ); } Где: 'limit' => 20 - количество выводимых изображений, 'sortKey' => 'date' - порядок вывода, по умолчание по дате, если хочется чтобы выводились изображения в случайном порядке, то 'date' нужно заменить на 'rand'
  20. 3 балла
    Пост из темы: На самом деле, с нуллами как повезет. У некоторых вроде все работает, а у других – сплошные баги. Думаю, это зависит от того, на какой стадии самопиара находится команда нулевщиков. Первые версии они чистыми раздают, потом жадность побеждает... Самый плохой случай, когда другие товарищи начинают хотеть погреть руки на результатах чужого нуления. Ссылки заменяют, своего стороннего чего-то добавляют, какие-то бажные сборки делают... Благо наивных, кто это скачает, всегда хватало. Источник: Настройка процесса регистрации IPB 3.0.5 Начинаю рассказывать: Пользовалась нуленой 2.0.4 в 2005 году на форуме нашей локальной сети. До этого стоял бесплатный IPB 1.3. Решила обновить, даже не зная, что форум стал платным. Скачала первый попавшийся нулл вроде как с softoroom.net Повезло. Единственная проблема была, – некорректно работал "Мой помощник". Выводил не последние сообщения, а много...
  21. 3 балла
    Кнопка "Нравится" не связана с приложениями. Она просто там используется. И в архиве, и в блогах. Частично есть ленги для like – Открыть язык, смотреть прямо на первой странице – public_like А частично приходится переводить в шаблонах. Привожу свой вариант кода с переводом. Other Global Templates (другие или разные в дурацкой русской админке вроде) > likeMoreDialogue {parse striping="faverave" classes="row1,row2"} <h3>Им понравилось</h3> <div class='general_box likepop'> <foreach loop="$data as $mid => $data"> <div class='{parse striping="faverave"}'> <em class='desc'>Добавлено: {parse date="$data['like_added']" format="short"}</em> <img src='{$data['pp_thumb_photo']}' width='{$data['pp_thumb_width']}' height='{$data['pp_thumb_height']}' class='photo' /> <div> <strong>{$data['members_display_name']}</strong> <p class='desc'> {parse expression="IPSLib::makeNameFormatted( $data['g_title'], $data['g_id'] )"} <br /> Регистрация: {parse date="$data['joined']" format="joined"} </p> </div> </div> </foreach> </div> likeSetDialogue <h3>{$this->lang->words['fave_title']}</h3> <div class='general_box'> <fieldset> <ul> <li class='field checkbox'> <input type="checkbox" name="notify" id="like_notify" class="input_check" value="1" /> <label for="like_notify">{parse expression="sprintf($this->lang->words['label_notify'], $data['notifyType'][1])"}</label> </li> <li class='field'> <label for="like_freq">{$this->lang->words['label_freq']} <select name="freq" id="like_freq" class="input_select"> <foreach loop="$data['frequencies'] as $freq"> <option value="$freq">{$this->lang->words[ 'freq_' . $freq ]}</option> </foreach> </select> </label> </li> <li class='field checkbox'> <input type="checkbox" name="anon" id="like_anon" class="input_check" value="1" /> <label for="like_anon">{$this->lang->words['label_anon']}<br /><span class='desc'>{$this->lang->words['label_anon_desc']}</span></label> </li> <li class="submit" style="float:right"> <input type="submit" value="В избранное" class="input_submit _fsubmit" /> </li> </fieldset> </div> likeSummaryContents <if test="$data['formatted']">{$data['formatted']}<else /> </if> <if test="likeOnlyMembers:|:$this->memberData['member_id']"> <a href='#' title="<if test="$data['iFave']">Уже не нравится. Отменить уведомления.<else />Нравится? Уведомлять об обновлениях?</if>" class='ftoggle <if test="$data['iFave']"> on</if><if test="$opts['button-new-line']"> _newline</if>'><if test="$data['iFave']">Уже не нравится<else /><b style='font-size: 1.3em; color: #418308'>Нравится!</b></if></a> </if> Источник: Русский язык для IP.Downloads
  22. 3 балла
    Минимальная длина отправляемого сообщения на движке IP.Board - 1 символ. Не пробел. Это зашито в код и не выводится в Панель управления. Что не совсем удобно. Не секрет, что многих админов достают пользователи которые не прекращая посылают сообщения +1 или UP. В правила это можно прописывать много и долго, но работать не будет. У меня же правило простое, любое техническое ограничение должно поддерживается движком форума, иначе оно не работает. Как же быть. Ограничиваем длину сообщения admin\applications\forums\sources\classes\post\classPost.php ищем //----------------------------------------- // Do we have a valid post? // alt+255 = chr(160) = blank space //----------------------------------------- if ( strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 1 AND !$this->getIsPreview() ) { $this->_postErrors = 'post_too_short'; } 1 - меняем на нужное количество символов. Ограничиваем длину первого сообщения в новой теме ищем //----------------------------------------- // Do we have a valid post? //----------------------------------------- if ( strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 1 ) { $this->_postErrors = 'post_too_short'; //$this->registry->getClass('output')->showError( 'post_too_short', 103143 ); } Аналогично. Внимание. Данное изменение нарушают идеологию движка IP.Board 3.x, где любое изменение функций, должно выполнятся через хук, не затрагивая исходный код форума. Важно. При апгрейде форума изменение потеряется и надо будет его восстанавливать.
  23. 3 балла
    Все искал решение как сделать блоки сворачиваемыми (как на форуме). И вот оно нашлось. 1. Идем в АЦП >IP.Content>Page Templates> изменяем шаблон по умолчанию. В 2.1.2 его уже нет. Добавляем над строкой </head> следующий код <script src="ССЫЛКА НА ВАШ ФОРУМ/public/js/ips.board.js" type="text/javascript"></script> 2. Далее оборачиваем содержимое вашего блока следующим кодом. <div class='category_block block_wrap'> <h3 id='category_{$title}' class='maintitle'><a class='toggle right' href='#' title='{$this->lang->words['toggle_cat']}'>{$this->lang->words['toggle_cat']}{$title}</a>{$title}</h3> <table class='ipb_table' summary="{$title}"> <tr> <td> Тут содержимое вашего блока <td> </tr> </table> </div> 3. Радуемся.
  24. 2 балла
    Приветствую! DELETE FROM posts WHERE author_id = 1; А если много тем: DELETE FROM topics WHERE starter_id = 1; Вместо 1 естественно нужно подставить ID пользователя, ну и перед названием таблицы может быть префикс, например ibf_posts и т.п. Если так много данных, лучше удалять через sql консоль, а не через phpMyAdmin или Инструменты управления SQL который есть а АЦ, т.к. время исполнения php может быть ограничено, как раз поэтому и виснет "удалить все сообщения ";
  25. 2 балла
    Для редактирования блоков проверяется модераторские права - \IPS\Member::loggedIn()->modPermission('can_manage_sidebar') Пользователь должен быть либо модератором, либо состоять в группе с модераторскими правами. Модераторские и админские права редактируется отдельно. Когда вы создаете новую группу с админскими правами, нужно для нее также настроить и модераторские права.
  26. 2 балла
  27. 2 балла
    @Trotor если правкой кода могу подсказать. По поводу ипбскинс. Лесовски абсолютно прав, у Вас очень устаревшая версия. Я, нюбай еще вам помогаем кодом в рамках своих возможностей и свободного времени, потому что мы застали и знаем этот движок. Но людей с такими знаниями становятся все меньше, кто-то отходит от ипб, кому-то уже не интересно в нем копаться, а новички сейчас бесплатно изучать его не побегут, они и по четверке на общественных началах вряд ли что-то напишут, - ушло то старое альтруистское время. Так что вам надо быть терпеливым и вежливым ожидая помощи для доработки вашего форума, мы ее оказываем бесплатно и в свое свободное время, а иногда даже строчки нет никакого желания написать.
  28. 2 балла
    Здравствуйте. Если правильно вас понял. В любом случает вам нужно настроить на сервере, чтобы все дополнительные домены ссылались на директорию с форумом. В conf_global.php значение параметра base_url заменить на: 'base_url' => 'https://'.$_SERVER['HTTP_HOST'], Тогда форум будет открываться с двух адресов, раньше как правило это использовали для ресурсов которые работали в локальной сети провайдера и были доступны в интернете. Учтите, могут возникнуть проблемы с seo, при индексации второго сайта, возникнут своего рода дубли страниц.
  29. 2 балла
    Выдал вам предупреждение, текст предупреждения, чтобы ознакомились ВСЕ, не только команда и вы: + IP.Board 3.x уже не ходовая версия и главное официально не поддерживаемая уже много лет, и если у вас она используется, нужно задуматься о поддержке безопасности системы, и для решения задач, в рамках форума и бампинга тем, этого просто не сделать. В дополнение к предыдущему сообщению (позже объединю с ним, чтобы увидели). Это не означает, что вам и другим людям в последующем не ответят\помогут, просто если если не отвечают или отвечают как вы думаете не достаточно, значит простым советом или решением это не решить, всё просто.
  30. 2 балла
    Выключите реврайты. Просто удалить .HTACCESS и проверить.
  31. 2 балла
    Многие форумы почистили разделы про 3 версию, и естественно инфы нет. https://www.tapatalk.com/ https://www.tapatalk.com/download_IPBoard
  32. 2 балла
    {{if member.canAccessModule( \IPS\Application\Module::get( 'feedback', 'feedback' ) )}} {{$member = $offer->author();}} <div class='cProfileFeedbackBlock ipsBox ipsSpacer_bottom'> <a href="{url="app=core&module=members&controller=profile&id={$member->member_id}&tab=node_feedback_Feedback" seoTemplate="profile" seoTitle="$member->members_seo_name"}"> <div class='cProfileFeedback ipsPad_half {{if $member->feedb_percent >= 90}}cProfileFeedback_positive{{elseif $member->feedb_percent < 50 AND $member->feedb_neg}}cProfileFeedback_negative{{else}}cProfileFeedback_neutral{{endif}}'> <h2 class='ipsType_minorHeading'>{lang="feedback_profile_score_title"}</h2> <div class='cProfileFeedbackScore'> <span data-ipsTooltip title="{lang="feedback_profile_positive"}"><i class="fa cFeedbackIcon_positive"></i> {number="$member->feedb_pos"}</span> <span data-ipsTooltip title="{lang="feedback_profile_neutral"}"><i class="fa cFeedbackIcon_neutral"></i> {number="$member->feedb_neu"}</span> <span data-ipsTooltip title="{lang="feedback_profile_negative"}"><i class="fa cFeedbackIcon_negative"></i> {number="$member->feedb_neg"}</span> </div> </div> <p class='ipsType_reset ipsPad_half ipsType_right ipsType_light ipsType_small'> {lang="feedback_profile_link"} <i class='fa fa-caret-right'></i> </p> </a> </div> {{endif}} либо {{if \IPS\Application::appIsEnabled('feedback')}} {template="feedbackScore" group="profile" app="feedback" params="$offer->author()"} {{endif}}
  33. 2 балла
    $stats['totalSubmitters'] = \IPS\Db::i()->select( 'COUNT(DISTINCT video_author_id)', 'videos_videos', array( 'video_status=1' ) )->first(); заменить на $stats['totalSubmitters'] = \IPS\Db::i()->select( 'COUNT(DISTINCT cid)', 'videos_videos' )->first(); Или на (количество всех категорий) $stats['totalSubmitters'] = \IPS\Db::i()->select( 'COUNT(*)', 'videos_cat' )->first();
  34. 2 балла
    Может есть возможность у наших ребят создать свои модули оплаты? Ну само собой в платных архив, то рокопопкные как-то не внушают доверия.
  35. 2 балла
    1. Открыть applications/bookmark/hooks/template_front_global.php Найти: {lang="my_bookmarks"} Заменить на: <i class="fa fa-bookmark"></i> {lang="my_bookmarks"} Выключить\включить приложение Bookmarks. 2. Открыть Ваш стиль/core/front/global/userBar Найти: <li class='ipsMenu_item' data-menuItem='promote'><a href='{url="app=core&module=promote&controller=promote&do=view" seoTemplate="promote_manage"}'>{lang="promote_manage_link"}</a></li> Заменить на: <li class='ipsMenu_item' data-menuItem='promote'><a href='{url="app=core&module=promote&controller=promote&do=view" seoTemplate="promote_manage"}'><i class="fa fa-ad"></i> {lang="promote_manage_link"}</a></li>
  36. 2 балла
    Makoto's Gallery Enhancements 1.0.1 Gallery Enhancements.xml
  37. 2 балла
    \system\Content\Item.php /** * Build review form * * @return string */ public function reviewForm() { Например, после $form->add( new \IPS\Helpers\Form\Rating( static::$formLangPrefix . 'rating_value', NULL, TRUE, array( 'max' => \IPS\Settings::i()->reviews_rating_out_of ) ) ); добавляете if ( $this instanceof \IPS\cms\Records ) { $form->add( new \IPS\Helpers\Form\Text( static::$formLangPrefix . 'something', NULL, TRUE ) ); } Далее выше /* Disable read/write separation */ можете использовать $values['content_record_form_something'] Только проверяйте, что в $values есть ключ content_record_form_something
  38. 2 балла
    Можно только сократить текст до определенного кол-ва символов У метода truncated есть 2 параметра /** * Text for use with data-ipsTruncate * Returns the post with paragraphs turned into line breaks * * @param bool $oneLine If TRUE, will use spaces instead of line breaks. Useful if using a single line display. * @param int|null $length If supplied, and $oneLine is set to TRUE, the returned content will be truncated to this length * @return string * @note For now we are removing all HTML. If we decide to change this to remove specific tags in future, we can use \IPS\Text\Parser::removeElements( $this->content() ) */ public function truncated( $oneLine=FALSE, $length=500 )
  39. 2 балла
    {{if $topic->container()->_id == 5}} Показывать рекламу в форуме с ID 5 {{endif}}
  40. 2 балла
    Вы не знаете, какой шаблон отвечает за вывод темы? Не поверю. topicViewTemplate Нашли его в \admin\applications\forums\modules_public\forums\topics.php $template = $this->registry->output->getTemplate('topic')->topicViewTemplate( $this->forum, $this->topic, $post_data, $displayData ); $post_data содержит данные о постах, включая авторов. Получаем ID'шники Вместо foreach( $members as $member ) { $ids[] = $member['member_id']; } Используем foreach( $post_data as $post ) { if ( $post['author']['member_id'] ) { $ids[$post['author']['member_id']] = $post['author']['member_id']; } } Вместо foreach( $members as $name => $member ) { $members[$name]['post_week'] = isset($weekStats[$member['member_id']]) ? $weekStats[$member['member_id']] : 0; } Используем foreach( $post_data as $pid => $post ) { if ($post['author']['member_id']) { $post_data[$pid]['author']['post_week'] = isset($weekStats[$post['author']['member_id']]) ? $weekStats[$post['author']['member_id']] : 0; } } В шаблоне userInfoPane используем <if test="isset($author['post_week'])">{$author['post_week']}</if>
  41. 2 балла
    Нужно делать sql-запрос <php>$result = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as post_week', 'from' => 'posts', 'where' => "author_id={$member['member_id']} AND post_date > " . (time() - 604800) ) );</php> <if test="$result['post_week'] > 10"> Контент отображается, если у данного пользователя есть 10 сообщений на форуме за неделю. </if>
  42. 2 балла
    {{if member.member_id}} {{$restrictions = json_decode(\IPS\Member::loggedIn()->group['idm_restrictions'], TRUE);}} {{if $restrictions['daily_dl'] > 0}} {{$downloads = \IPS\Db::i()->select( 'COUNT(*)', 'downloads_downloads', array( array( 'dmid=? AND dtime>?', \IPS\Member::loggedIn()->member_id, \IPS\DateTime::create()->sub( new \DateInterval( 'P1D' ) )->getTimestamp() ) ) )->first();}} Осталось {expression="$restrictions['daily_dl'] - $downloads"} скачиваний {{endif}} {{endif}}
  43. 2 балла
    Многие спрашивают про расширение ряда кнопок в темах с добавлением новых. Пример здесь. Сейчас в share links добавлены кнопки для Твиттера и Вконтакте. Ну и для того, чтобы не индексировался мусор, все кнопочное хозяйство засунуто в noindex. Global Templates > shareLinks Весь код заменяем этим. <noindex> <script type="text/javascript" src="http://vkontakte.ru/js/api/share.js?10" charset="windows-1251"></script> <style type="text/css"> tbody { background: transparent; } td { padding: 0; } </style> {parse js_module="sharelinks"} <if test="gotLinks:|:is_array( $links )"> <ul class='{$cssClass} shareButtons'> <foreach loop="cacheLoop:$links as $id => $data"> <if test="isEnabled:|:$data['share_enabled']"> <li><a href="{parse url="sharelink={$data['share_key']};{$data['_url']};{$title}" base="public"}" rel="nofollow" target="_blank" title="<if test="!in_array( $data['share_key'], array( 'print', 'download' ) )">{$this->lang->words['gbl_sharelink_with']} </if>{$data['share_title']}" class='_slink' id='slink_{$data['share_key']}'><img src="{$this->settings['public_dir']}style_extra/sharelinks/{$data['share_key']}.png" /></a></li> </if> </foreach> <li> <!-- Put this script tag to the place, where the Share button will be --> <script type="text/javascript"><!-- document.write(VK.Share.button(false,{type: "button", text: "Сохранить"})); --></script> </li> <li> <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="fisana">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></li> </ul> <script type="text/javascript"> ipb.sharelinks.url = "{parse expression="IPSText::base64_decode_urlSafe($url)"}"; ipb.sharelinks.title = "{parse expression="IPSText::base64_decode_urlSafe($title)"}"; ipb.sharelinks.bname = "{parse expression="trim($this->settings['board_name'])"}"; </script> </if> </noindex> В коде для твиттера data-via="fisana" слово "fisana" замените на имя своего аккаунта. При желании выше можно добавлять новые кнопки в виде <li> код кнопки </li> Но есть проблема, когда какой-нибудь вконтактик лежит, медленно загружается и низ тем на форуме, пытаясь достучаться до сервера...
  44. 2 балла
    Им нужно носить такие футболки кто в этой партии: Они стараются сделать однопартийную систему, что ужасно не хорошо, опять начинается история как и с КПСС, в рот им ноги!
  45. 2 балла
    Вот живой пример :) Кроссворд на форуме. Удалите если расцените как рекламу. И вопрос. А что пишет система в профиле пользователя когда он сидит на одной из таких самодельных страниц? "Смотрит главную страницу" ? - это реально подправить? скажем на "играет в кроссворд".
  46. 2 балла
    для случайных изображений придется брать хук (SOS30) Enhanced Gallery Images v1.0.0 Displays gallery images on your board index Версия 1.0.0 Автор хука Adriano тогда настройка рандомности появляется в админке и менять в hooksos_RecentGalleryImages на содержимое первой страницы. :)
  47. 2 балла
    Тогда попробуйте <div id='attach_wrap' class='rounded clearfix'> Заменить на <div id='attach_wrap' class='rounded clearfix' style='overflow: hidden'> Рэндомность не настроить стандартными средствами. Нужно модифицировать хук.
  48. 2 балла
    Проще весь шаблон выложить. Версия 3.1.1-3.1.2 Профили > statusUpdates
  49. 2 балла
    Здравствуйте, Fisana! Извините за беспокойство, но в связи с обновлением Оперы в скинах 3.0.5 тоже вылезли баги. В стилях ibr, delicate и light меню профиля пользователя в панели входа съезжает вправо и расширяет границы форума. Вот таким образом Адрес форума http://tyorok.net/forum/index.php? Не могли бы Вы подсказать, где исправить этот недостаток. Извините за беспокойство еще раз. Спасибо.
  50. 2 балла
    Нет. Это Воля (dc.volia.com). Украина.
×
×
  • Создать...