Хаки для настройки 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 Следите за тем, какие кавычки вы использовали: они должны быть английскими одинарными (те, что вставляются в английской раскладке клавы по нажатию на русскую букву “Э”)
Вячеслав, привет!
Спасибо за хаки, ценная информация.
Помнишь я спрашивал про сборку сервера для Битрикса?
Так вот, обнаружил готовый пакет LAMP, посмотри пожалуйста, как оно – http://www.turnkeylinux.org/lamp?
Peter,
таких пакетов несколько.. это один из них – смотри поддержку WP MU :) (Denwer, к примеру, не позволяет разворачивать MU)
slaFFik,
отличная тема по хакам!
А что именно отключает define ( ‘BP_IGNORE_DEPRECATED’, true ); ?
разница в потреблении памяти менее 100кб.. ;)
судя по коду при определенном 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
dimanet,
спасибо! а то закопался с sendmail.. оказывается когда BP отправляет сообщение от одного пользователя другому и есть в настройках второго “оповещать о новых сообщения” – 1) записать в БД сообщение 2) отправить по почте (и дождаться ответа от мейл-сервера! а он может ответить не сразу..) 3) написать “сообщение отправлено”
Тема интересная, спасибо.
но все равно до полностью гибкой настройки BuddyPress далеко
Cлава, тема хорошая, спасибо!
Peter, а причем тут Битрикс?…
shirs: есть комплект “под ключ” у Битрикса, заточенный под Битрикс.
Подскажите а где смена Аватара блога?
Чего то я не нашел.
И если ее нет обычным путем (через окошко загрузки аватара)
То как это сделать?
На группы есть возможность сменить аватар а на блоги нет
Игорь,
если почитать комменты (да хотя бы первые штук 20), то можно понять, что такой возможности нет :) пока точно нет!
Предлагаю включить в Хаки:
general-template.php, в /wp-includes, строка 2022,
функция вставки meta – generator…
зачем светить версию WP MU своего портала?..
Александр,
Как отключается метагенератор, читаем тут на сайте Алексея (пункт 5).
slaFFik,
.. ну если бы все было так – не писал бы про код WP.. если вызывается wp_head(); – то у тебя появляется
Александр:
Чего то я не нашел … какие 20 коментов ?
Если не трудно киньте ссылку пожалуйста.
Если аватары не меняются у блогов – это лажа полная.:(
А можете сказать когда примерно можно ожидать включение этой функции?
Игорь, Вячеслав писал, вот только не помню в какой заметке, что над этим работают, и если не изменяет память, то в релизе 1.2
Будем ждать)
Вопрос с аватарами для блогов появился сразу после выхода 1.0 :) разрабы обещают.. а вот сделают ли или нет.. то есть ждем 1.2 ;)
@Игорь и Александр:
Я начал заниматься переводом и тестированием BP 1.2. Там в качестве аватарок блогов используются аватары пользователей. Проверено – работает.
Я хочу сделать в 1.2 правильное склонение множественного числа. Если вы тоже этого хотите, то можете поддержать мою инициативу на R606370912868 или Z178280199536.
Всем спасибо!
slaFFik,
поддержать не проблема :) ты б как то это оформил.. ну чтоб сразу было видно о чем тут и что можно поддерживать (и не только базу, но и развитие дополнительных фитч)
по поводу аватарок для блогов.. то есть создал 10 блогов и на всех будет моя рожа? ROLF
@Александр:
Если рожа нормальная – то можно и показать всем ))
В 1.4 (согласно плану) думают сделать самостоятельный выбор аватара для блога. Но я думаю сделано в ядре будет гораздо раньше – в 1.3. В виде плагина – еще раньше можно :)
Нее.. ну если рожа ничо.. но когда их будет 10? 20? :) народ не поймет… ;)
Кстати -в новой версии (1.2) если блогов у юзера (админа ;) ) больше 10 – по списку их листать то можно будет? (а то 10 штук выводит и все..)
Подскажите а есть ли возможность поиска сразу по всей блог системе. Например мне надо найти посты где встречается слово “Пони” и он мне все посты с этим словом со всех блогов выдает.
И также есть может примочка которая выводит допустим 10 комментариев со всех блогов.
Новый хак :)
Если используется установка с поддоменами (blog.demo.net), то в feed-rss, feed-rss2.php (/wp-include) – удалить строку < ? xml version = ..
Иначе на поддоменах можно получить ошибку при запросе blog.demo.net/feed
Игорь, есть такая возможность, или устанавливать свой поисковой скрипт, их много разных или подключить сторонний поисковик такая возможность тоже есть, свой скрипт будет получше, но это предполагает под собой использование бд и ресурсы сервера
Игорь. А можно подсказку на уже проверенные решения поискового скрипта в Б BuddyPress?
@Игорь:
Попробуйте разобраться вот в этом:
Мне показалось сомнительным, потому я не выложил тут в свое время. Только помните, что запись эта старая.
А как отключить активацию почты на BuddyPress
Не подскажите, можно-ли как-нибуть сделать чтоб пользователи могли регистрироваться с – “тиреминус” иили _ “нижнее подчеркивание” в своих логинах,. Ну очень надо,..?
Можно, кажется, с помощью вот этого плагина. Не смотрите на его название, там Сергей кое-что подправил.
Спасибо большое!!!!
А не скажите?, для доменов есть подобные штуки? Чтоб они и блоги себе заводили такие-же,. ну хотябы с – “тире”, что-то типа: miu-miu.domin.com??
С дефисом и так можно заводить блоги, если я не ошибаюсь. Вы пробовали хотя бы?
Пробовал – естественным путем,- через регистрацию говорит только цифры и малые буквы eng-алфавита.
А через админку – да, можно добавить с тире,.
Надо-ж чтоб пользователи сами себе домен выбирали ((
Спасибо за быстрый ответ!
Нельзя… причём это прописано в коде без всяких фильтров и экшенов. Только буквы и цифры.. хотя бы одна буква, и не меньше четырёх знаков.
Причём одинаково сделано и код продублирован и в BP и в WP.
И для логинов и для сайтов.
Посоветуйте пожалуйста плагин регистрации по инвайтам.
Спасибо
WP Invites – http://wordpress.org/extend/plugins/wp-invites/
Только что сравнивал производительность на хостинге jino.ru buddypress и drupal 7. Всё по дефолту. Просто тыкал по загладкам в обеих CMS. Кеши отключены.
Вот что получилось:
00:30 19.11% buddypress
02:55 11.30% drupal 7
Что-то грусно стало :(
if ( !is_site_admin() )
define ( ‘BP_DISABLE_ADMIN_BAR’, true );
Данная конструкция не работает.
Проверьте правильность кода.
Точнее в данном случае ругается на условие.
Проверьте кавычки. Должны быть использованы английские одинарные. Итого:
if ( !is_site_admin() )
define ( 'BP_DISABLE_ADMIN_BAR', true );
С кавычками всё нормально. Я же говорю, что если убрать if ( !is_site_admin() ) то всё нормально. ошибка в этой строчке. Я где то встречал такую конструкцию – if ( !is_super_admin() ) но при её использовании админбар вобще не отключается ни у кого.
А вы где прописали этот код? Конструкция удаляет для не-админов.
Код прописывал, как и сказано выше, в 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 );
, то на сайт заходит, но баддиба все равно остается.
Поставил строчку сразу после определеемя префикса, с кавычками все нормально.
Установлены WordPress Multisite 3.2.1 без доменов (папки) и BuddyPress 1.5.1 Проблема с отображением аватаров – на главном сайте нормально, на других сайтах загруженный аватар заменяется на автоматически генерируемый.
Подскажите, пожалуйста, как решить проблему.
с группами такая же история, как и с пользователями
А вот это уже проблемы с путями. С ходу сказать не могу – проверьте, какие url к рисунку на блогах. Если не совпадают с теми, что на главной сайте – пытайтесь выяснить, почему так.
Картинки разные, пути не совпадают.
Подскажите в какую сторону рыть?
На других сайтах используется не стандартная тема BuddyPress? Если нет, проверьте, чтобы функция вызова аватара пользователей везде была одинакова.
странно сколько не пробовал , делал все как описано нечего не получилось
в частности как аватарки по умолчанию изменить ?
define ( ‘BP_AVATAR_DEFAULT’, $img_url );
define ( ‘BP_AVATAR_DEAFULT_THUMB’, $img_url );
не работает
Куда вы этот код вставляли?
Попробуйте в wp-config.php
Подскажите.
Как в новой версии WordPress 3.3.1 вкюлючить режим LDAP
define( ‘BP_ENABLE_USERNAME_COMPATIBILITY_MODE’, true );
С уважение, Alex/
Славик, как изменить URL ссылок, которые идут после /members/… с кириллицы на латиницу? Пользуюсь плагином cyr-to-lat, который спокойно переписывает ссылки записей блога и форума, но только не те, которые появляются после /members/.
Запретить пользователям создавать кирилические логины.
Править напрямую их в базе – во многих местах (типа ленты активности тоже).
Других способов не могу назвать сейчас.
Не то имею ввиду. Вот ссылка.
Перед сохранением заголовка пропускать его черех cyr2lat фильтры. Тогда и будет происходить конвертация.
cyr2lat у меня работает для конвертации названий записей в блогах и на форумах. Страницы с картами создаются непосредственно на сайте без админки (плагин Mapology). Или фильтры cyr2lat необходимо настраивать как-нибудь по другому?
Не, вы не поняли. В процессе сохранения данных карт пропустите заголовок, который станет слагом (куском ссылки) через фильтр cyr2lat. Вот так примерно:
И дополнительно при инициализации вот это:
Вместо cyr2lat_filter поставьте именно то, как он называется в плагине (не помню).
А вообще, чтобы ссылки были короче, советую использовать ID в url, вместо текста. Все равно вручную вводить никто не будет, а ссылка будет визуально короче и удобнее.
Этот код необходимо добавить где-то в плагине cyr2lat или в плагине карт?
В плагине карт.
Получилось не совсем то, что надо, Вот вид ссылки: “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/”
Вот как оформлен код
$this->slug = apply_filters( ‘sanitize_file_name’, $this->slug, $this->id );
add_filter( ‘sanitize_file_name’, ‘ctl_sanitize_title’);
Последний хак для того что бы максимальный размер загружаемого файла изменить. То что многих интересует делается не так.
Размер аватарок которые будут в профиле, регулируется вот так:
define( ‘BP_AVATAR_FULL_WIDTH’, 250 );
define( ‘BP_AVATAR_FULL_HEIGHT’, 250 );
я увеличел до 250px в оригинале было 150.
Как убрать аватар из постов?
Автору
У Тебя неправильно написаны кавычки! Нужно вот такую поставить:’
Переменные не срабатывают на сайте.
define( ‘BP_REGISTER_SLUG’, ‘signup’ );
define( ‘BP_ACTIVATION_SLUG’, ‘enable’ );
Скажите можно с вами как-то связаться для консультации.
Они не работают почему-то, я пару месяцев назад отправил разработчикам соответствующие репорты – #5985 и #5991.
Просто создайте страницы и привяжите их к компонентам BuddyPress. А для страниц укажите желаемый слаг.
Прошло 5 лет ) ответа на то : как сменить размер аватара так и нет
сменить отображение аватара в группе. Он там просто мизерный
.
Ответ в исходном коде самого BuddyPress. И еще гуглится за 5 секунд (натурально).
А вот статья в кодексе самого BuddyPress.