[РЕШЕНО]Все комментарии подписываются как Гость

Аватар пользователя Тимофей Тимофей 20 января 2016 в 0:35

Здравствуйте!

В чем может быть проблема - комментарии от незарегистрированных пользователей подписываются, как Гость. Хотя поле имени есть и в БД информация есть.

Спасибо.

0 Thanks

Комментарии

Аватар пользователя lipinart lipinart 20 января 2016 в 12:13

Не путайте реальное имя и имя пользователя. В друпал по умолчанию все неавторизованные пользователи - гости.
Вы можете в шаблоне заменить вывод имени пользователя на то, что вам оставили в поле "name"

Аватар пользователя Тимофей Тимофей 20 января 2016 в 21:55

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

Аватар пользователя Тимофей Тимофей 20 января 2016 в 22:08

Выяснил, что это Antispam модуль так себя ведет. Без него комментарии подписываются именами корректно.

Аватар пользователя lipinart lipinart 20 января 2016 в 22:14

Для начала:
Structure -> Content types -> Edit на нужном типе контента -> Comment settings
В поле Anonymous commenting ставим значение Anonymous must leave their contact information

Затем в шаблоне комментария:
<?php print($comment->name); ?>

Аватар пользователя Тимофей Тимофей 20 января 2016 в 22:25

Спасибо, буду знать.

В моём случае это модуль Antispam вырезал имена. Dev версия решила проблему.

Аватар пользователя lipinart lipinart 20 января 2016 в 22:39

Кстати о спаме. Разрешая анонимам комментировать - готовьтесь! Если комменты не нужны в индексе можно использовать Discqus, Gravatar и др.

Аватар пользователя lipinart lipinart 20 января 2016 в 22:35

Еще момент. Что если автор будет авторизованным юзером? Как правило, имя юзера выводится в виде ссылки на его профиль. Это можно решить след. функией в template.php:

<?php
 
function mytheme_username($object) {
 
  if (
$object->uid && $object->name) {
    if (
drupal_strlen($object->name) > 20) {
      
$name drupal_substr($object->name015) .'...';
    }
    else {
      
$name $object->name;
    }
    if (
user_access('access user profiles')) {
      
$output l($name'user/'$object->uid, array('title' => t('View user profile.')));
    }
    else {
      
$output check_plain($name);
    }
  }
  else if (
$object->name) {
    
// Sometimes modules display content composed by people who are
    // not registered members of the site (e.g. mailing list or news
    // aggregator modules). This clause enables modules to display
    // the true author of the content.
    
if ($object->homepage) {
      
$output l($object->name$object->homepage);
    }
    else {
      
$output check_plain($object->name);
    }
 
    
//$output .= ' ('. t('not verified') .')';
  
}
  else {
    
$output variable_get('anonymous't('Anonymous'));
  }
 
  return 
$output;
}
?>