0.00
Рейтинг
0.00
Сила

Алексей

Freelance-style.ru - окно во вселенную фриланса

Доброго времени суток всем!

Хочу представить Вам социальную сеть на LiveStreet — Freelance-style.ru

Freelance-style.ru

Профессиональные социальные сети бывают разными: одни объединяют дизайнеров, другие – бизнесменов и специалистов из разных областей, желающих обзавестись новыми деловыми контактами, третьи – например, фотографов. Наша сеть объединяет людей разных специальностей, имеющих одну общую особенность – все они осуществляют поиск работы на дому.

Freelance-style.ru – это социальная сеть, созданная для удаленных работников, которые хотят разнообразить свои трудовые будни интересным общением. У нас вы не найдете скучных новостей, неактуальных статей или постов. Вместо этого вас ожидает удивительное погружение в увлекательный мир фриланса – мир, наполненный яркими обитателями, загадочными историями и полезными материалами, которые так необходимы для профессионального роста.

Из интересных изменений, внесенных в шаблон и ядро: вывод всех блогов в списке, превью по умолчанию для топиков, свой шаблон для плагина Категории Блогов.
Ну и по мелочи: небольшое изменение цветовой гаммы, картинок, немного каркас изменен, блоки немного настроены, плагины

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

Модификация списка блогов

В Livestreet CMS в списке блогов и в топе блогов выводятся все, кроме персональны блогов. Как-то раз мне потребовалось вывести в этот список еще и личные блоги пользователей.

Этот способ решения проблемы с выводом списка блогов придуман лично мной, и я не гарантирую, что он рационален, прост или полностью правилен

Порыскав по системным файлам, отслеживая выполнение кода, я нашел функцию, которая составляет этот список, а в ней и запрос к базе данных

Это функция GetBlogsRating в файле classes/modules/blog/mapper/Blog.mapper.class.php приблизительно на 280 строке

Посмотрев на нее, видно, что в запросе к базе данных фильтруются персональные блоги:
WHERE b.blog_type <> 'personal'


По умолчанию у личных блогов нет своего собственного url-адреса, они доступны по адресу site.ru/my/имя_пользователя. Поэтому, если мы просто уберем эту проверку, блоги выведутся, но ссылка будет вести в никуда

Поэтому я решил сделать следующим образом: выводить в список те блоги, у которых есть url-адрес

Я заменил вот эту проверку:
WHERE b.blog_type <> 'personal'
на вот такую:
WHERE 		b.blog_url IS NOT NULL


Сейчас ничего не изменится, так как у персональных блогов в базе данных url-адрес указан как NULL

Дальше есть несколько вариантов действий:
  • Вручную подправить url-адрес в базе данных у нужных блогов, таким образом, в список будут выводится только те блоги, которые вы выберете сами
  • Создать url-адрес для всех персональных блогов (уникальный для каждого) и назначать url-адрес каждому новому созданному персональному блогу

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

Для этого, в том же Blog.mapper.class.php нашел функцию CreatePersonalBlog приблизительно на 260 строке

Я уже не помню, устанавливается ли там url-адрес для персонального блога или нет. В общем ищем там (в функции) строку:
$oBlog->setUrl(что-то там);
(если ее нет, то добавьте ее, к примеру после $oBlog->setType('personal');)

Вместо этого «что-то там» и надо подставить url-адрес блога. Важно, чтобы он был уникален

Туда можно подставить логин пользователя:
$oUser->getLogin()

Но лучше что-нибудь еще добавить к этому, к примеру:
"blog_".$oUser->getLogin()
Url-адрес будет таким: blogs/blog_имя_пользователя

Теперь эти блоги появятся в списке (не забудьте почистить кеш!) и ссылки на них будут работать правильно

У этого способа правда есть недостатки: происходит дублирование контента, адреса my/имя_пользователя и blog/blog_имя_пользователя содержат один и тот же текст, что может не понравится поисковикам

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

Для сайтов, которые уже давно работают и где уже много персональных блогов будет трудно (а возможно и очень трудно) поменять в базе данных вручную все url-адреса персональных блогов. Поэтому можно придумать какой-нибудь sql-запрос к базе данных, вроде этого:
UPDATE table имя_таблицы_блогов AS b SET b.blog_url=(SELECT u.user_login FROM имя_таблицы_пользователей AS u WHERE u.user_id=b.blog_owner_id) WHERE b.blog_urs IS NULL


Предупреждаю, что этот запрос может быть неправильным, я его не тестировал и придумал прямо сейчас на ходу. Суть его в следующем: для блогов, у которых нет url-адреса, установить его равным логину автора блога.

В общем, эту проблему со списком блогов я решил именно так, может быть, вам пригодится

Вопрос по списку всех блогов

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