Pull to refresh

Comments 29

спасибо, интересно. и про Views я лично не отказался бы почитать :)
Почитаете. Не думаю, что это последний мой пост про Views.
Отличная статья. Всё кратко и доходчиво. Теперь осталось применить на практике, но придется подождать случая как подвернется такая задача.

Если у вас есть такая возможность, то напишите статью о том, как с помощью Views API создавать нужные ссылки для представлений.
Не совсем понял, что Вы имели ввиду под «ссылки для представлений»?
Отлично! Огромный плюс за комментарии в функциях.
Спасибо, за отличный материал. Приятно читать про Drupal на Хабре, с друпалом только и работаю последний год.
Более подробно про Views было бы интересно, особенно в связке с CCK
Это больше относится к CCK нежели к Views. Что конкретно Вас интересует? Вроде и так все CCK поля доступны во Views.
Постараюсь об этом в будущем также написать.
Ну, если честно, во Views я толком не разобрался, то есть простейшие примеры со страницами или заметками понимаю как работают, новый тип материалов в CCK создать могу, а вот вывести их в нужном мне виде так и не осилил. В итоге просто пишу модули реализующие нужные мне типы материалов и их представление, хотя понимаю, что по идее это можно сделать в админке, используя CCK+Views.

То есть в принципе хотелось бы «более подробно о Views, там еще много интересного: как создать свои настройки для полей, как создавать поля, доступные в фильтрах и сортировках, свои аргументы и связи, и многое другое.» просто на примерах с CCK :)
Ок. В следующем посте о Views прихвачу CCK.
Заранее спасибо :)
<?php
// для начала создадим sql функцию
function privatemsg_sql_getcount(&$fragments, $uid) {
  // указываем таблицу
  $fragments['primary_table'] = '{pm_message} pm';
  
  // добавляем поле
  $fragments['select'][] = 'count(pm.mid)';
  
  // добавляем условия
  $fragments['where'][] = 'pm.account = %d';
  $fragments['query_args'][] = $uid;
}

// Теперь мы можем использовать наш запрос
$query = _privatemsg_assemble_query('getcount', $user->uid);
$result = db_result($query['query']);
?>

// Для получения количества новых сообщений залогиненного юзера
$new_count = privatemsg_unread_count();


Все это можно сделать в препроцессе конкретного блока. Мне кажется, что так намного проще.
Из Вашего поста я не понял, зачем использовать Views?
Хотя, подход и интересный, но слишком сложный.

Можно приватно посмотреть live версию?
Все это можно сделать в препроцессе конкретного блока. Мне кажется, что так намного проще.

Проще не есть правильнее.

Во-первых: Если делать препроцесс конкретного блока, мы автоматически привязываемся к данному конкретному блоку на данном конкретном сайте. Мне же нужно было универсальное решение, которое можно без труда вставлять на все сайты + удобство добавления информации прямо из конструктора Views.
Во-вторых:
$result = db_result($query['query']);

privatemsg_unread_count();

это +2 отдельных запроса к бд минимум. При использовании Views, вся выборка осуществляется одним запросом (с подзапросами конечно, но всё-же), так что тут Вы неправы.

Извините, но, во-первых, у Вас 3 запроса в одном, что само по себе уже «тяжко», а во-вторых, есть разница, прикручивать целый модуль или одну функцию в препроцесс темплейта.
Функция в темплейте гораздо гибче и понятнее, нежели препроцессы и хэндлеры Views.
imho
Не путайте вложенные запросы и отдельные запросы из php. Мне кажется разница очевидна.

И вообще, Вы название топика читали? Вроде как я писал о том, как работать с Views, а не о конкретной задаче, которую я привел исключительно для примера.
Не путайте вложенные запросы и отдельные запросы из php. Мне кажется разница очевидна.
Совершенно верно. Разница очевидна ;)
Вы не забывайте, что в Вашем случае, Вы заставляете работать еще кучу сторонних функций модуля Views ;)
Вообщем спор считаю состоявшимся. Вам удобнее делать иначе — дело ваше. Пост был не о том, и мы ушли от темы.
Дык, я пытаюсь понять, о чем пост с таким заголовком. О модуле Views? Нет.
О Вашем умении использовать хендлеры? Может быть.
Но, не кажется ли Вам, что начиная серию постов о модуле Views, Вы начали с конца?
Мне как раз кажется, что я начал с начала. На примере доступно изложил как добавлять свои данные в конструктор Views. Далее я планирую написать как добавлять к своим полям настройки, как работать с полями CCK, как добавлять фильтры, сортировки и т.п. и это всё будет базироваться как раз на простых вещах, описанных в этом посте. Вы вероятно с друпалом мало работали.
Очень спорное начало.
Да, и с друпалом я, действительно, очень мало работаю ;)
может быть начать все же стоит с того как устроен views внутри, почему он такой бесстыдно-объекто-ориентированный в отличие от ядра друпала. какие хуки он поддерживает, как добавить свой тип данных… ну вобщем действительно по порядку… уж если вы смогли осилить оф.документацию, думаю изложить все это в простой форме будет несложно?
Алилуйя! пост про друпал, но не про то какой скачать модуль, и где найти какую галочку в админке! У views реально все плохо как-то по документации, вообще не нравится она мне… а сам код посложнее чем у ядра для понимания. По поводу views vs блок — года два назад я отдавал предпочтение кастомному куску кода, сейчас все чаще предпочитаю views.
Спасибо за статью! Буду ждать продолжения :)
Views очень функциональны, но очень громоздки — всегда интересно почитать чьи-то решения по работе с ними.
проще и быстрее ручками написать 1 select, чем мастерить такое)
Проще — да. Быстрее — да. Познаете ли основы вьюса — нет.
функция t() неправильно используется, ей должен передаваться текст на английском
Не обязательно на английском. Читаем матчасть.
Sign up to leave a comment.

Articles