Хаки для настройки BuddyPress под свой проект

Если вы уже установили WordPress MU и BuddyPress, то пора подумать о настройке. Вам надо определиться с тем, как будет выглядеть ваша социальная сеть, каков будет ее функционал. И часто может возникать ситуация, что некоторые элементы вы просто не знаете, как изменить.

Представляю вам список мини хаков, которые могут быть вам полезны для уникализации вашей социальной сети. Все вставляется в файл wp-config.php после строки определение префикса базы и ДО строки подключения wp-settings.php.

1. Если вы установили сразу BuddyPress версии 1.1 и выше, то есть не переходили с 1.0 на более новую версию, то резонно возникает вопрос – зачем вам загружать тот код, которые оставлен в движке для режима совместимости с 1.0? Это увеличивает нагрузку и потребление памяти. Правильно, вам это ни к чему. Поэтому отключаем его вот такой строкой кода:

define ( ‘BP_IGNORE_DEPRECATED’, true );

2. Если вы хотите использовать функции и/или виджеты BuddyPress не только на главном сайте, то вам надо его (BP) включить для всех блогов внутри вашей сети:

define ( ‘BP_ENABLE_MULTIBLOG’, true );

Но осторожно, включение данной возможности увеличивает потребление памяти на всех внутренних блогах, и если их много и они активны, то это может привести к неприятным последствиям.

3. Предположим, у вас установлен WPMU по-человечески, то есть все блоги создается в поддоменах (blog.example.com). В этом случает вы можете здорово улучшить url ссылки до профиля пользователя, убрав из этого адреса слово “members”, т.е. получите ссылку вида: demo.cosydale.com/admin вместо demo.cosydale.com/members/admin.

define ( ‘BP_ENABLE_ROOT_PROFILES’, true );

Но будьте внимательны – не используйте этот хак, если у вас блоги создаются в режиме поддиректорий! Иначе будет путаница с путями и при попытке попасть на страницу пользователя вы будете попадать на его блог.

4. Про использование в качестве главного сайта не основной домен, а какой-нибудь поддомен (social.example.org) я уже писал вам вот в этой записи: Альтернативный вариант установки BuddyPress.

5. Вам не нравится BuddyBar или вы считаете его бесполезным? Тогда отключите его для всего сайта и всех блогов!

define ( ‘BP_DISABLE_ADMIN_BAR’, true );

Можно пойти еще дальше: если вы редактируете его, меняете стили или расположение блоков, то пользователям не обязательно видеть, что он временами совершенно случайно будет разваливаться :) Поэтому вы можете вставить вот такой код:

if ( !is_site_admin() )
define ( ‘BP_DISABLE_ADMIN_BAR’, true );

Этот код проверяет, является ли пользователи на сайте админом, и если нет – но отключает BuddyBar, если вы админ – то оставляет его включенным.

6. Если вам нравится фишка с логином в гугл-mail, где вы можете иметь точку и имени (что-то вроде cd.slaFFik), то тогда вам надо включить поддержку LDAP:

define( ‘BP_ENABLE_USERNAME_COMPATIBILITY_MODE’, true );

После включения, при регистрации пользователи смогут делать свои логины (которые являются частью пути к странице их профиля) с точкой внутри.

7. Теперь начинается рок-н-рол ;) Вы можете менять вид ссылок в том или ином компоненте. Пример: в шаблоне вы указали текст ссылки Группы как Сообщества, но ведь в url все равно остались groups… Поэтому вы прописываете:

define ( ‘BP_GROUPS_SLUG’, ‘community’ );
define ( ‘BP_ACTIVITY_SLUG’, ‘streams’ );
define ( ‘BP_BLOGS_SLUG’, ‘journals’ );
define ( ‘BP_MEMBERS_SLUG’, ‘users’ );
define ( ‘BP_FRIENDS_SLUG’, ‘peeps’ );
define ( ‘BP_MESSAGES_SLUG’, ‘notes’ );
define ( ‘BP_WIRE_SLUG’, ‘board’ );
define ( ‘BP_XPROFILE_SLUG’, ‘info’ );
define ( ‘BP_REGISTER_SLUG’, ‘signup’ );
define ( ‘BP_ACTIVATION_SLUG’, ‘enable’ );
define ( ‘BP_SEARCH_SLUG’, ‘find’ );
define ( ‘BP_HOME_BLOG_SLUG’, ‘news’ );

И отныне у вас поменялся вид ссылок. Это еще неплохой способ визуальной маскировки вашего движка и возможность в будущем защиты от бестолковых регистраций ботов, которые будут привязаны к стандартному пути.

Если вы не хотите что-то менять, просто удалите соответствующую строку.

8. И последний пункт сегодняшней порции хаков – меняем размер аватаров. Меня кто-то спрашивал в комментариях про это, вот вам мой ответ :)

define ( ‘BP_AVATAR_THUMB_WIDTH’, 50 );
define ( ‘BP_AVATAR_THUMB_HEIGHT’, 50 );
define ( ‘BP_AVATAR_FULL_WIDTH’, 150 );
define ( ‘BP_AVATAR_FULL_HEIGHT’, 150 );
define ( ‘BP_AVATAR_ORIGINAL_MAX_WIDTH’, 640 );
define ( ‘BP_AVATAR_ORIGINAL_MAX_FILESIZE’, $max_in_kb );
define ( ‘BP_AVATAR_DEFAULT’, $img_url );
define ( ‘BP_AVATAR_DEAFULT_THUMB’, $img_url );

Выбираете тот, который вам нужно поменять, и вставляете в файл wp-config.php. Остальные просто игнорируете. Последние 2 строки позволяют вам настроить стандартный аватар – вы можете поменять его на свой, для этого вместо $img_url прописываете в кавычках путь к вашему собственному рисунку.

PS Следите за тем, какие кавычки вы использовали: они должны быть английскими одинарными (те, что вставляются в английской раскладке клавы по нажатию на русскую букву “Э”)

комментария 69

  1. Peter:

    Вячеслав, привет!
    Спасибо за хаки, ценная информация.
    Помнишь я спрашивал про сборку сервера для Битрикса?
    Так вот, обнаружил готовый пакет LAMP, посмотри пожалуйста, как оно – http://www.turnkeylinux.org/lamp?

  2. Peter,
    таких пакетов несколько.. это один из них – смотри поддержку WP MU :) (Denwer, к примеру, не позволяет разворачивать MU)

  3. slaFFik,
    отличная тема по хакам!

  4. А что именно отключает define ( ‘BP_IGNORE_DEPRECATED’, true ); ?
    разница в потреблении памяти менее 100кб.. ;)

  5. dimanet:

    судя по коду при определенном BP_IGNORE_DEPRECATED включаються в код 8 php скриптов
    bp-xprofile-deprecated.php
    bp-groups-deprecated.php
    bp-wire-deprecated.php
    bp-core-deprecated.php
    bp-friends-deprecated.php
    bp-messages-deprecated.php
    bp-activity-deprecated.php
    bp-blogs-deprecated.php

  6. dimanet,
    спасибо! а то закопался с sendmail.. оказывается когда BP отправляет сообщение от одного пользователя другому и есть в настройках второго “оповещать о новых сообщения” – 1) записать в БД сообщение 2) отправить по почте (и дождаться ответа от мейл-сервера! а он может ответить не сразу..) 3) написать “сообщение отправлено”

  7. Тема интересная, спасибо.
    но все равно до полностью гибкой настройки BuddyPress далеко

  8. shirs:

    Cлава, тема хорошая, спасибо!

    Peter, а причем тут Битрикс?…

  9. Peter:

    shirs: есть комплект “под ключ” у Битрикса, заточенный под Битрикс.

  10. Игорь:

    Подскажите а где смена Аватара блога?
    Чего то я не нашел.
    И если ее нет обычным путем (через окошко загрузки аватара)
    То как это сделать?

    На группы есть возможность сменить аватар а на блоги нет

  11. Игорь,
    если почитать комменты (да хотя бы первые штук 20), то можно понять, что такой возможности нет :) пока точно нет!

  12. Предлагаю включить в Хаки:
    general-template.php, в /wp-includes, строка 2022,
    функция вставки meta – generator…

    зачем светить версию WP MU своего портала?..

  13. slaFFik,
    .. ну если бы все было так – не писал бы про код WP.. если вызывается wp_head(); – то у тебя появляется

  14. Игорь:

    Александр:
    Чего то я не нашел … какие 20 коментов ?
    Если не трудно киньте ссылку пожалуйста.
    Если аватары не меняются у блогов – это лажа полная.:(
    А можете сказать когда примерно можно ожидать включение этой функции?

  15. Игорь:

    Игорь, Вячеслав писал, вот только не помню в какой заметке, что над этим работают, и если не изменяет память, то в релизе 1.2

  16. Игорь:

    Будем ждать)

  17. Вопрос с аватарами для блогов появился сразу после выхода 1.0 :) разрабы обещают.. а вот сделают ли или нет.. то есть ждем 1.2 ;)

  18. @Игорь и Александр:
    Я начал заниматься переводом и тестированием BP 1.2. Там в качестве аватарок блогов используются аватары пользователей. Проверено – работает.

    Я хочу сделать в 1.2 правильное склонение множественного числа. Если вы тоже этого хотите, то можете поддержать мою инициативу на R606370912868 или Z178280199536.
    Всем спасибо!

  19. slaFFik,
    поддержать не проблема :) ты б как то это оформил.. ну чтоб сразу было видно о чем тут и что можно поддерживать (и не только базу, но и развитие дополнительных фитч)

    по поводу аватарок для блогов.. то есть создал 10 блогов и на всех будет моя рожа? ROLF

  20. @Александр:
    Если рожа нормальная – то можно и показать всем ))
    В 1.4 (согласно плану) думают сделать самостоятельный выбор аватара для блога. Но я думаю сделано в ядре будет гораздо раньше – в 1.3. В виде плагина – еще раньше можно :)

  21. Нее.. ну если рожа ничо.. но когда их будет 10? 20? :) народ не поймет… ;)

    Кстати -в новой версии (1.2) если блогов у юзера (админа ;) ) больше 10 – по списку их листать то можно будет? (а то 10 штук выводит и все..)

  22. Игорь:

    Подскажите а есть ли возможность поиска сразу по всей блог системе. Например мне надо найти посты где встречается слово “Пони” и он мне все посты с этим словом со всех блогов выдает.

    И также есть может примочка которая выводит допустим 10 комментариев со всех блогов.

  23. Новый хак :)

    Если используется установка с поддоменами (blog.demo.net), то в feed-rss, feed-rss2.php (/wp-include) – удалить строку < ? xml version = ..

    Иначе на поддоменах можно получить ошибку при запросе blog.demo.net/feed

  24. Игорь:

    Игорь, есть такая возможность, или устанавливать свой поисковой скрипт, их много разных или подключить сторонний поисковик такая возможность тоже есть, свой скрипт будет получше, но это предполагает под собой использование бд и ресурсы сервера

  25. Игорь:

    Игорь. А можно подсказку на уже проверенные решения поискового скрипта в Б BuddyPress?

  26. @Игорь:
    Попробуйте разобраться вот в этом:

    http://buddypress.org/blog/community/google-custom-search-for-buddypress-wpmu/

    Мне показалось сомнительным, потому я не выложил тут в свое время. Только помните, что запись эта старая.

  27. Rolks:

    А как отключить активацию почты на BuddyPress

  28. Lego:

    Не подскажите, можно-ли как-нибуть сделать чтоб пользователи могли регистрироваться с – “тиреминус” иили _ “нижнее подчеркивание” в своих логинах,. Ну очень надо,..?

    • Можно, кажется, с помощью вот этого плагина. Не смотрите на его название, там Сергей кое-что подправил.

      • Lego:

        Спасибо большое!!!!

        А не скажите?, для доменов есть подобные штуки? Чтоб они и блоги себе заводили такие-же,. ну хотябы с – “тире”, что-то типа: miu-miu.domin.com??

        • С дефисом и так можно заводить блоги, если я не ошибаюсь. Вы пробовали хотя бы?

          • Lego:

            Пробовал – естественным путем,- через регистрацию говорит только цифры и малые буквы eng-алфавита.

            А через админку – да, можно добавить с тире,.

            Надо-ж чтоб пользователи сами себе домен выбирали ((

            Спасибо за быстрый ответ!

          • Нельзя… причём это прописано в коде без всяких фильтров и экшенов. Только буквы и цифры.. хотя бы одна буква, и не меньше четырёх знаков.
            Причём одинаково сделано и код продублирован и в BP и в WP.
            И для логинов и для сайтов.

  29. JMX:

    Посоветуйте пожалуйста плагин регистрации по инвайтам.

    Спасибо

  30. JMX:

    Только что сравнивал производительность на хостинге jino.ru buddypress и drupal 7. Всё по дефолту. Просто тыкал по загладкам в обеих CMS. Кеши отключены.

    Вот что получилось:
    00:30 19.11% buddypress
    02:55 11.30% drupal 7

    Что-то грусно стало :(

  31. Kaizer:

    if ( !is_site_admin() )
    define ( ‘BP_DISABLE_ADMIN_BAR’, true );

    Данная конструкция не работает.
    Проверьте правильность кода.

    • Kaizer:

      Точнее в данном случае ругается на условие.

      • Проверьте кавычки. Должны быть использованы английские одинарные. Итого:
        if ( !is_site_admin() )
        define ( 'BP_DISABLE_ADMIN_BAR', true );

        • Kaizer:

          С кавычками всё нормально. Я же говорю, что если убрать if ( !is_site_admin() ) то всё нормально. ошибка в этой строчке. Я где то встречал такую конструкцию – if ( !is_super_admin() ) но при её использовании админбар вобще не отключается ни у кого.

    • А вы где прописали этот код? Конструкция удаляет для не-админов.

  32. Kaizer:

    Код прописывал, как и сказано выше, в config.php . После вставки с условием – на сайт вобще не заходит, но без условия всё работает.

    • Сергей:

      Тоже самое, с условием
      if ( !is_site_admin() )
      define ( ‘BP_DISABLE_ADMIN_BAR’, true );
      На сайт не заходит, ругается:
      Fatal error: Call to undefined function is_site_admin() in Z:\home\e-svfu.ru\www\wp-config.php on line 39

      А если убрать if
      define ( ‘BP_DISABLE_ADMIN_BAR’, true );
      , то на сайт заходит, но баддиба все равно остается.

      Поставил строчку сразу после определеемя префикса, с кавычками все нормально.

  33. Евгений:

    Установлены WordPress Multisite 3.2.1 без доменов (папки) и BuddyPress 1.5.1 Проблема с отображением аватаров – на главном сайте нормально, на других сайтах загруженный аватар заменяется на автоматически генерируемый.

    Подскажите, пожалуйста, как решить проблему.

    • Евгений:

      с группами такая же история, как и с пользователями

      • А вот это уже проблемы с путями. С ходу сказать не могу – проверьте, какие url к рисунку на блогах. Если не совпадают с теми, что на главной сайте – пытайтесь выяснить, почему так.

        • Евгений:

          Картинки разные, пути не совпадают.
          Подскажите в какую сторону рыть?

    • На других сайтах используется не стандартная тема BuddyPress? Если нет, проверьте, чтобы функция вызова аватара пользователей везде была одинакова.

  34. ninja:

    странно сколько не пробовал , делал все как описано нечего не получилось

    в частности как аватарки по умолчанию изменить ?

    define ( ‘BP_AVATAR_DEFAULT’, $img_url );
    define ( ‘BP_AVATAR_DEAFULT_THUMB’, $img_url );

    не работает

  35. Alex:

    Подскажите.
    Как в новой версии WordPress 3.3.1 вкюлючить режим LDAP

    define( ‘BP_ENABLE_USERNAME_COMPATIBILITY_MODE’, true );

    С уважение, Alex/

  36. Pasich:

    Славик, как изменить URL ссылок, которые идут после /members/… с кириллицы на латиницу? Пользуюсь плагином cyr-to-lat, который спокойно переписывает ссылки записей блога и форума, но только не те, которые появляются после /members/.

    • Запретить пользователям создавать кирилические логины.
      Править напрямую их в базе – во многих местах (типа ленты активности тоже).
      Других способов не могу назвать сейчас.

      • Pasich:

        Не то имею ввиду. Вот ссылка.

        • Перед сохранением заголовка пропускать его черех cyr2lat фильтры. Тогда и будет происходить конвертация.

          • Pasich:

            cyr2lat у меня работает для конвертации названий записей в блогах и на форумах. Страницы с картами создаются непосредственно на сайте без админки (плагин Mapology). Или фильтры cyr2lat необходимо настраивать как-нибудь по другому?

          • Не, вы не поняли. В процессе сохранения данных карт пропустите заголовок, который станет слагом (куском ссылки) через фильтр cyr2lat. Вот так примерно:

            $map_title = apply_filters('map_filter', $map_title_unfiltrd);

            И дополнительно при инициализации вот это:

            add_filter('map_filter', 'cyr2lat_filter');

            Вместо cyr2lat_filter поставьте именно то, как он называется в плагине (не помню).

            А вообще, чтобы ссылки были короче, советую использовать ID в url, вместо текста. Все равно вручную вводить никто не будет, а ссылка будет визуально короче и удобнее.

          • Pasich:

            Этот код необходимо добавить где-то в плагине cyr2lat или в плагине карт?

          • В плагине карт.

          • Pasich:

            Получилось не совсем то, что надо, Вот вид ссылки: “http://barakhol.com/members/taras/maps/routes/d0-bf-d1-80-d0-be-d0-b2-d0-b5-d1-80-d1-8f-d0-b5-d0-bc-d0-ba-d0-b0-d1-80-d1-82-d1-83/”

          • Pasich:

            Вот как оформлен код
            $this->slug = apply_filters( ‘sanitize_file_name’, $this->slug, $this->id );

            add_filter( ‘sanitize_file_name’, ‘ctl_sanitize_title’);

  37. vovasik:

    Последний хак для того что бы максимальный размер загружаемого файла изменить. То что многих интересует делается не так.

    Размер аватарок которые будут в профиле, регулируется вот так:

    define( ‘BP_AVATAR_FULL_WIDTH’, 250 );
    define( ‘BP_AVATAR_FULL_HEIGHT’, 250 );

    я увеличел до 250px в оригинале было 150.

  38. Как убрать аватар из постов?

  39. Рейнер:

    Автору
    У Тебя неправильно написаны кавычки! Нужно вот такую поставить:’

  40. Переменные не срабатывают на сайте.
    define( ‘BP_REGISTER_SLUG’, ‘signup’ );
    define( ‘BP_ACTIVATION_SLUG’, ‘enable’ );

    Скажите можно с вами как-то связаться для консультации.

    • Они не работают почему-то, я пару месяцев назад отправил разработчикам соответствующие репорты – #5985 и #5991.

      Просто создайте страницы и привяжите их к компонентам BuddyPress. А для страниц укажите желаемый слаг.

  41. Прошло 5 лет ) ответа на то : как сменить размер аватара так и нет
    сменить отображение аватара в группе. Он там просто мизерный
    .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *