Партнерки вебмастерам

Баннер

Кто онлайн

Сейчас 61 гостей онлайн

Статистика

Архив содержит 29 файлов в 11 категориях. На данный момент файлы скачаны 102137 раз.
Community Builder - социальная сеть на Joomla. Часть 10. Создание определяемых и вычисляемых полей PDF Печать E-mail

Чем больше я работаю с Community Builder, тем больше удивляюсь его возможностям. Однажды, читая комментарии к статье со сравнением Community Builder и JoomSocial, я увидел фразу, которую дословно не помню, но смысл такой: «Если выбирать между JoomSocial и Community Builder, то однозначно Community Builder. Правда искусством этого компонента еще нужно овладеть». Не хочу критиковать JoomSocial, т.к. мало с ним знаком, да и не сомневаюсь, что это достойный компонент, но про то, что весь потенциал Community Builder открывается только после того, как поработаешь с ним некоторое время – это точно.

В этой статье я расскажу про еще одну возможность Community Builder, точнее не про сам компонент, как таковой, а про замечательный плагин к нему, который называется CB MySQL Field Plugin. Благодаря этому плагину в Community Builder появляется возможность выводить в профиль результаты выполнения SQL-запроса к базе данных Joomla. И хоть SQL здесь весьма ограничен, мы можем вывести в профиль значение любого поля БД, а также результат математического вычисления нескольких полей, и самое главное, путем небольших манипуляций, мы можем использовать эти результаты для ранжирования профилей пользователей (см. списки CB).

Вышеописанное мало о чем говорит новичкам. Приведу пример: вывод в профиль количества статей, написанных пользователем,  количества сообщений на форуме, количества комментариев, даты последнего сообщения, и, вообще, всего, что только можно придумать. Неплохо, не правда ли? О том, как это все осуществить, читайте в этой статье.

Итак, мы имеем Community Builder и… большое желание сделать что-то необычное, выделяющее наш сайт из общей массы. Кроме того, мы хотим заинтересовать пользователей и дать им нечто особенное. Что – каждый придумает сам, а я лишь расскажу – как.

Прежде всего нам нужно скачать и установить плагин CB MySQL Field Plugin. Т.к. плагин бесплатный и распространяется свободно, это просто. Устанавливается плагин, как и любой другой, через менеджер плагинов  Community Builder (не путайте с менеджером плагинов Joomla).

После установки плагин нужно опубликовать. Заходим в менеджер плагинов Community Builder, находим плагин CB MySQL Field и публикуем его. Все, пол дела сделано, плагин установлен и готов к работе. Осталось разобраться в том, как его использовать.

Использование может у многих вызвать проблемы. Я и сам изначально довольно долго разбирался в нем. Прежде всего, нам нужно создать новое поле, в которое мы будем выводить результаты запроса. Делается это через менеджер полей Community Builder, путем нажатия кнопки «New Field».

Далее можно заметить, что в списке выбора типа поля, появился вариант «MySQL field».

MySQL Field Plugin

Он-то нам и нужен. Выбираем этот тип и видим появившиеся параметры поля:

MySQL Field Plugin

Это то место, где мы будем формировать запрос к базе данных. Разберем все опции внимательно и подробно:

– Result Type (тип результата) – при выполнении SQL-запроса, мы можем получить как единичный результат, так и серию значений, скажем, номера всех пользователей, год рождения которых с 1985 по 1995. Тут все зависит от того, что мы рассчитываем получить. Если единичный результат, то выбираем Single, если множественный – Multiple. При этом в зависимости от типа результата меняются дальнейшие опции, точнее для множественного типа добавляется опция «Add Delimiter». Подробнее о ней написано ниже.

Далее мы начинаем формировать непосредственно SQL-запрос. Для людей, знакомых с языком SQL  это не составит труда, а вот те, кто не сталкивался с ним, могут застопориться. Поэтому коротко расскажу, что здесь к чему.

Итак, наша цель – выбрать из базы данных определенные данные. Для того, чтобы сделать это, нужно ответить на 3 основных вопроса:

1) Что выбирать? (SELECT)

2) Из чего выбирать? (FROM)

3) Как выбирать? (WHERE)

В скобочках я написал основные операторы SQL, ответственные за каждый из вопросов.

Теперь подробнее.

1) Как известно, база данных Joomla – это набор таблиц. У каждой таблицы есть столбцы и строки, при этом в столбцах указывается переменная, а в строках – ее значения.

Вот пример:

Таблица: birthday

ФИО

Год рождения

Иванов Иван Иванович

1977

Петров Петр Петрович

1988

Сидоров Сидр Сидорович

1999

Чтобы выбрать конкретную запись, нам нужно выбрать правильный столбик и задать условие выбора строки. Т.е., например, сказать: «Выбери ФИО того человека, который родился в 1988 году».

В SQL за «выбери» отвечает SELECT, а за «который родился» – WHERE. Кроме того, т.к. в Joomla таблица не одна, а много, нам нужно указать в запросе название таблицы( за это отвечает оператор FROM).

Таким образом, наш SQL-запрос будет иметь следующий вид:

 

SELECT ФИО FROM birthday WHERE Год рождения = '1988'
Результатом выполнения этого запроса будет «Петров Петр Петрович»

Надеюсь, более-менее понятно. Более подробно о языке SQL можно почитать в Интернете. Информации море.

Вернемся к нашему плагину. Следующие три опции теперь должны быть понятны. Кроме того, они уже заполнены, так что можно делать по аналогии.

SELECT – сюда вписываем название столбца, из которого будем выбирать значение;

FROM – тут будет название таблицы, из которой будем выбирать столбец;

WHERE – здесь нужно указать условие, по которому будет выбираться строка столбца.

Кстати, нужно отметить, что и столбцов, и таблиц, и условий может быть несколько. Разберем стандартный пример, который появляется по умолчанию:

1 2 3 4 5
SELECT CONCAT(name, ' - ', viewscount)   FROM #__comprofiler_views, #__users   WHERE viewer_id = id AND profile_id = {USERID}

Посмотрим, что тут к чему. Во-первых, «CONCAT» - это оператор языка SQL, который объединяет строки. Т.е. мы объединяем значения столбцовname (имя пользователя) и viewscount (количество просмотров профиля), вставляя между ними дефис. Т.е. результатом будет что-то типа: «Иванов Иван Иванович - 156» и именно это выведется в профиль.

Теперь далее. Т.к. столбцов у нас два, и находятся они в разных таблицах, нам нужно указать эти две таблицы: #__comprofiler_views#__users.

И последнее, самое важное и сложное, это условие выбора. Здесь в ход идут уже логические выражения «И»(AND) и «ИЛИ»(OR). AND означает, что результат будет выдан только для тех строк, в которых выполняется и первое и второе условие. OR или первое, или второе, или обе вместе.

Нашим условием мы говорим, что нужно выбрать строку с тем пользователем, идентификатор которого является идентификатором пользователя текущей страницы (т.е. его страницы) и строку с тем количеством просмотров, идентификатор которой является идентификатором текущей страницы. Как-то так. Понимаю, разобраться здесь сложно. Но нужно хорошенько поднапрячь мозги, поэкспериментировать и все получится.

Output Mode (режим выводов результата запроса) – ниже расскажу, что это такое, и, вообще, зачем нужен этот режим.

В ранних версиях плагина выбор режима вывода отсутствовал, и результат запроса просто выводился в профиль. Все работало отлично, если бы не одно но. В этом случае в базе данных не содержаться полученные результаты, они формируются «на лету» с помощью SQL-запроса. Из этого следует один большой минус данного метода – невозможно провести ранжирование пользователей по данному полю. Т.е. составить упорядоченный список пользователей, где они упорядочены по полю, полученному с помощью SQL-запроса. Это логично и правильно, но плохо, т.к. хочется, и потому многие пользователи писали автору плагина, что надо как-нибудь решить данную проблему. Автор прислушался и решил путем добавления возможности не только вывести результаты SQL-запроса, но и сохранить их в базу данных, что позволит производить по ним ранжирование. Решение, конечно, не слишком элегантное, т.к. для добавления в профиль одного поля в базу приходится добавлять два: в одном как бы исполняется SQL-запрос, а во второе сохраняется его результат. Зато это позволяет формировать какие душе угодно списки пользователей, что невероятно расширяет возможности  Community Builder.

Таким образом, в данной опции мы можем выбрать одно из трех значений:Display Only – только показывать на профиле, не сохраняя значения,Save Only только сохранение в базу данных, без отображения на профиле, Both – и отображать и сохранять в базу. При выборе Save Onlyили Both ниже появляется еще одна опция, про которую написано ниже.

– Field Name – имя таблицы базы данных, в которую нужно сохранять результаты выполнения SQL-запроса. Для этих целей нам нужна новая таблица. Она легко создается через все тот же менеджер полей Community Builder. При добавлении поля добавляется и таблица, которую в дальнейшем можно использовать для сохранения результатов. И ранжирование будет происходить как раз по этому полю.

Add Prefix – добавление чего-либо перед выводом результата запроса. Под «чем-либо» я понимаю, например какой-нибудь вступительный текст и.т.д.

Add Suffix – добавление чего-либо после вывода результата запроса.

– Add Delimiter (добавить разделитель) – появляется только в случае, когда опция Result Type установлена в Multiple. Позволяет выбрать разделитель значений результата, если результат множественный.

Profile Display (отображение на профиле) – здесь можно выбрать кому показывать данное поле. All – всем, User Only – только пользователю, которому принадлежит профиль, Viewer Only – тол ько тем, кто просматривает профиль.

Как можно заметить, CB MySQL Field Plugin замечательный плагин, особенно, если его использовать в связке с Community Builder Profile PRO.Главный плюс этих расширений в том, что они снимают почти все технические ограничения. Остается только проявить фантазию и создать уникальный, ни с чем несравнимый сайт.

 
Промышленная Кухонная металлическая мебель смотрите на www.bikomspb.ru.