Новая тема оформления и изменения на сайтеПодписка на Комментарии к "Новая тема оформления и изменения на сайте"

Аватар zenon

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

  • Тема основана на AdaptiveTheme.
  • Главное преимущество - тема "умная" и умеет подстраиваться под десктоп/планшет/смартфон.
  • Понимает ориентацию дисплея (portrait/landscape).
  • Тема с фиксированной шириной (для десктопа - 1140px).
  • Исправлен шрифт в отображении ASCII-капчи на планшете.
  • Установлен модуль личных сообщений, темизация в процессе.
  • Установлен ajax модуль для комментирования (комментарий отображается без перезагрузки страницы) - надо ли?
  • Последние комментарии - Блок + Страница + RSS.
    http://linuxru.org/comments/recent
    http://linuxru.org/recent-comments.rss
  • Для всех материалов/комментариев теперь есть возможность подписки (уведомления на e-mail). Заведует эти модуль - Comment Notify
  • Установлен модуль Drupal 7.x Sphinx Search module.
    В главном меню оставлена ссылка на стандартный поиск Drupal, Sphinx бывает не срабатываетс, разберемся...
    Инструкции по установке есть тут, написаны они немного обобщенно, и не только для Linux, собственно трудностей не возникло.
    На официальном drupal.org почему-то этого модуля нет...
    Главный плюс sphinx`а конечно же морфологические возможности поиска.
    Официальный сайт.
    Возможности и документация.
    Ещё одна инструкция на друпал хостинге.
Дополнительно - просьба ко всем - сообщить о возможных недочетах.
В ближайшее время станет основной темой сайта. - теперь это основная тема, в профиле зарегистрированных пользователей сохранена возможность переключиться на старую тему.
Внешний вид темы примерно вот такой:
Ноутбук:

Смартфон:

Десктоп:

Временные иконки для linuxforum.ru:


Похожие материалы:
Аватар zenon

Формат вывода дат в материалах.
В нодах (templates/node.tpl.php):

<?php
print t('[') . format_date($node->created'custom'"d/m/Y H:i") . t(' - ') . $name t(']');
?>

В комментариях (templates/comment.tpl.php):
<?php
print t('[') . format_date($comment->created'custom'"d/m/Y H:i") . t(' - ') . $author t(']');
?>
Аватар zenon

В разделе блогов сделал сортировку с убыванием по:
Содержимое: Дата обновления/комментирования
Позднейшая из двух дат - даты последнего комментирования и даты обновления материала.

Те, как на форумах вверху оказывается материал с последним комментарием.
Мне кажется так довольно правильно (обсуждается).

Аватар xxblx

Про уведомления о новых непрочитанных личных сообщениях уже отписался в ЛС.

Помимо этого, в личных сообщениях, если открыть переписку с человеком, время получения/отправки сообщения отображается в 12-часовом формате am/pm. Неплохо бы поправить на привычный в нашей стране 24-часовой формат времени.

Аватар zenon

Предупреждение о новых личных сообщениях исправил, выглядит вот так:

Вроде нормально.

Аватар xxblx

Да, если будет так, как на скриншоте, то смотрится очень даже хорошо.

Аватар zenon

Вернул вывод похожих материалов, для определения "похожести" используется "вес" тэгов.

Функция в template.php:

<?php
function linuxruorg_preprocess_node(&$vars) {
  if (!
$vars['page'] || !$vars['node'] || !count($vars['field_tags'])) {
    return;
  }
 
  
$tids = array();
  foreach (
$vars['field_tags'] as $tag) {
    
$tids[] = $tag['tid'];
  }
 
  
$query db_select('node''n');
  
$query->fields('n', array('nid''title'));
  
$query->addExpression('COUNT(*)''hits');
  
$query->leftJoin('taxonomy_index''ti''n.nid = ti.nid');
  
$query->condition('n.type'$vars['type']);
  
$query->condition('n.status'NODE_PUBLISHED);
  
$query->condition('ti.tid'$tids'IN');
  
$query->condition('n.nid'$vars['nid'], '<>');
  
$query->groupBy('n.nid');
  
$query->orderBy('hits''DESC');
  
$query->orderBy('n.created''DESC');
  
$query->range(03);
 
  
$result node_title_list($query->execute(), null);
    if (
$result != null) {
        
$vars['content']['similar'] = $result;
        
$vars['content']['similar']['#weight'] = 5;
        
$vars['content']['similar']['#prefix'] = '<btag>Похожие материалы:</btag><br>';
    }

  
// Если находимся в просмотре тизеров, ничего не делаем
  
if (!$vars['page'] || !$vars['node'] || !count($vars['field_tags'])) {
    return;
  }
  
$tids = array();
  foreach (
$vars['field_tags'] as $tag) {
    
$tids[] = $tag['tid'];
  }
  if (
$vars['view_mode'] == 'full' && node_is_page($vars['node'])) {
    
$keywords = array();
    foreach (
field_get_items('node'$vars['node'], 'field_tags') as $item) {
      
$keywords[] = check_plain($item['taxonomy_term']->name);
    }
    
drupal_add_html_head(array(
      
'#type' => 'html_tag',
      
'#tag' => 'meta',
      
'#attributes' => array(
        
'name' => 'keywords',
        
'content' => implode(', '$keywords),
      ),
   ), 
'meta_keywords');
  }
}
?>
Аватар zenon

xxblx написал:
Помимо этого, в личных сообщениях, если открыть переписку с человеком, время получения/отправки сообщения отображается в 12-часовом формате am/pm.

Пришлось править шаблон личных сообщений, благо это можно сделать "правильно" и безболезненно.
Смысл - приоритет шаблона находящегося в каталоге темы выше, чем у шаблона, входящего в состав модуля.
Значит копируем шаблон в тему, и правим что нам нужно.
Измененный шаблон privatemsg-view.tpl.php:
Интересующая нас строка:
<?php
print $message_timestamp;
?>

<?php
print format_date($message->timestamp'custom'"d/m/Y H:i");
?>

Штатными методами решить это не получилось, вот например подобный вопрос на форуме Drupal.
Конечно можно было в модуле поправить вот это:
<?php
$vars
['message_timestamp'] = privatemsg_format_date($message->timestamp);
?>

Но при обновлении всё вернется назад.
Аватар xxblx

Я вот думаю, может куда-нибудь пристроить "облако тегов" в сайдбар, чтобы пользователи могли, нажав на интересующий их тег, отобразить все записи, отмеченные этим тегом?
Тем более, rss-ленты генерируются в том числе и для отдельных тегов (например, вот rss-лента для тега python), для удобства навигации по тегам было бы круто, плюс сразу бы все видели генерации rss-лент по тегам и могли подписываться на ленты с новыми записями, содержащими интересующие их теги.

Аватар zenon

Раньше стоял Cumulus - красивый блок облака тэгов на флэш, и потому как на флэш - отказался от него.
Поставил простой TagClouds.
1-ый вариант.

2-ой вариант:

Как лучше?

Аватар xxblx

1-ый вариант лучше смотрится, красивее. Но 2-ой более информативный и удобней при большом количестве тегов.
Пока думаю, стоит поставить 1-ый вариант, а когда в будущем тегов скопится огромное количество, при необходимости, переключим на 2-ой вариант.

Аватар zenon

Ну и остановимся на первом.
Мысль ещё одна пробегала - сделать отдельный словарь тэгов для новостей.

Аватар Serj

Немного критики, если позволите)
1. В посте автор указывается внизу сообщения (а аватарка вверху), а в комментариях - вверху.
2. Аватарка съедает место в сообщении, например, как здесь - http://linuxru.org/tips/350 - срезана справа вставка кода, ИМХО как-то объединить автора, аватарку и прочую доп. инфу в шапку сообщения.
3. ИМХО, как-нибудь визуально отделять комментарии от основного сообщения.

Аватар zenon

Serj написал:
Аватарка съедает место в сообщении

Главное не перекрывает, не знаю как лучше сделать, предлагай.
Чтобы отделить визуально комментарии от сообщений могу "серое" пространство сделать побольше между нодой и комментариями, хотя как раз отделено тэгами, автором и датой.
Аватар zenon

Для защиты от спама установлен модуль Honeypot
Для зарегистрированных пользователей немного запоздал с его bypass`ом, могли возникнуть проблемы, сейчас они решены.

Аватар zenon

Ещё одно важное нововведение, - теперь каждый зарегистрированный пользователь может предоставить другому пользователю права на редактирование своего материала.
Для этого необходимо отрыть свой материал, перейти на вкладку "Предоставить" и в появившемся поле поиска ввести ник-нэйм пользователя, которому вы решили дать доступ к вашей публикации.

Аватар zenon

Вчерашние обновления, и создание Галереи перенес на завтра-послезавтра.

Аватар zenon

Дополнения функционала - каждому зарегистрированному пользователю доступно 30Мб для загрузки личных файлов/картинок.
Файловый менеджер - IMCE, доступно создание/удаление личных каталогов, создание миниатюр, ресайз/кроп картинок.
Новый раздел - "Галерея" http://linuxru.org/gallery
Свои материалы теперь можно опубликовать/снять с публикации. (модуль Publish Content)
Также можно предоставить права на просмотр/редактирование своего неопубликованного материала другому пользователю.

Аватар zenon

Не работали некоторые пункты меню, в php (/etc/php5/fpm/php.ini) надо было поправить пару строк, ошибка была:

Multibyte string input conversion in PHP is active and must be disabled.

Fix:
mbstring.http_input = pass
mbstring.http_output = pass

Добавить комментарий