суббота, 11 декабря 2010 г.

Социальная сеть на CMS Drupal: создаем стену пользователя в его профайле

dfgdg_0

Важных антуражем социальной сети в последнее время стала так называемая стена в профайле пользователя. Это, по сути, место, где любой желающий может оставить комментарий профайлу пользователя. На данный момент лучшим модулем для настройки профайла пользователей является модуль Content Profile (http://drupal.org/project/content_profile). Он позволяет настроить отображение профайла пользователей практически на 100% так, ка Вы пожелаете. Поэтому мы рекомендуем использовать именно этот модуль при создании любой социальной сети на основе CMS Drupal (речь идет о 6 версии Drupal).

Но и самые популярные модули имеют свои недостатки. С помощью Content Profile в той версии, которая есть на данный момент, мы не можем отображать в профайле пользователя комментарии и форму ввода комментариев к тому типу материалов, который определен на сайте как "Conetnt Profile" пользователей. То есть мы не сможем сделать полноценную стену пользователя.

Но и здесь сообщество Drupal нашло выход. Чтобы обойти ограничение модуля надо выполнить следующую последовательность действий.

Перейдите в тот тип материалов, который определен как "Conetnt Profile" пользователей. Перейдите в раздел "Conetnt Profile". Выберите пункт в настройке "Don't display this content profile on the user account page from admin options" и сохраните данные.

Далее в папке темы Вашего сайта выберите файл, который отвечает за отображение профайла пользователей - user-profile.tpl.php и добавьте (добавьте дополнительно или замените полностью имеющийся там код) в него следующий код:

<?php
  $node
= NULL;
 
$node_profile = $content_profile->get_variables('profile');
  if(
$node_profile)
   
$node = &$node_profile['node'];
 
// [ ... ]
  // This is the ready-for-print variable for the user profile data
 
print $user_profile;
 
// [ ... ]
  // Print this wherever you want to show the node_profile content
 
print node_view($node, FALSE/*teaser*/, TRUE, TRUE);
 
// [ ... ]
  // Put this where you want to show your comment block
 
if ($node && function_exists('comment_render')){
    if(
$node->comment)
    {
      print
comment_render($node);
    }
  }
?>

Ну вот и все.Теперь комментарии отображаются и у нас есть на странице профайла пользователя полноценная "стена". Не забудьте очистить кеш сайта через раздел "Производительность" для того, чтобы увидеть произведенные изменения.

В заключении можем посоветовать еще ряд модулей, чтобы сделать стену пользователя одной из лучших фишек Вашего сайта. Это прежде всего модуль Ajax Comments (http://drupal.org/project/ajax_comments), позволяющий добавлять комментарии без перезагрузки страницы с помощью технологии Ajax, и модуль Usercomment (http://drupal.org/project/usercomment), который позволит дать пользователям право удалять комментарии на их собственной стене (это особенно важно при борьбе со спамом и просто неадекватными людьми).

Оригинал статьи: http://www.startdrupal.com/node/130