Приветствую всех.
Появилась проблема...
Нужно вывести в блок количество групп и общий объём данных (суммарное значение всех файлов).
Группа — это материал с типом "новость". Соответственно, нужно подсчитывать количество материалов этого типа.
В материалах (новость о группе) есть строка (используется CCK) "Размер", в которой указан размер альбома группы. Нужно суммировать значение всех строк из всех новостей.
Может есть какой-либо модуль или что-то ещё. Ума не приложу как это реализовать.
Прошу помощи.
Благодарю заранее.
Комментарии
Есть новости об альбомах рок-групп. В каждой новости указано название группы, альбома, год выпуска, размер и треклист (в треклисте после списка треков указана ссылка на скачивание альбома).
Нужно суммировать все показания строк "размер" и полученное число вывести в блок.
Лучше всего простой SQL-запрос в своём модуле, который будет предоставлять блок (hook_block), плюс кэширование блока. Кэш блока сбрасывать по изменению материала Группа. То есть этот SQL-запрос у вас будет срабатывать только при изменении нод, в остальное время - браться из кэша.
Отвергая - предлагай.
Я с программированием на далекой руке (основы php немного знаю, но об API друпала мне ничего не известно).
Если не сложно, пожалуйста, напишите рабочий код и укажите куда его вставить. Буду очень благодарен.
Подождём что скажет MDinc - у него, видимо, решение лучше.
Может кто-то ещё может поделиться знаниями?
Было бы чудесно если бы Вы написали SQL-запрос, т.к. не знаю Вашей структуры. Если не можете, то скажите как называется тип материала и какое системное имя у поля "размер".
С SQL языком я пока в ещё больших неладах, нежели с php. =[
Тип материала: "news" (создавал вручную).
Системное имя поля "размер": "field_mb" (повторюсь, CCK).
Хорошо. Но Вы можете проверить запрос (например в phpMyAdmin)?
LEFT JOIN content_type_news node_news ON node.vid = node_news.vid
WHERE node.type in ('news') AND node.status <> 0
Если Вы используете префиксы, то замените PREF_ на свой:
LEFT JOIN PREF_content_type_news node_news ON node.vid = node_news.vid
WHERE node.type in ('news') AND node.status <> 0
Это запрос считает сумму по полю field_mb. Подразумевается, что тип у этого поля - integer.
MDInc у нас важная птица, он бесплатно не работает
Амперметр мне в руку! ))
Результат: mb_value = 2005.9
Это магия какая-то. )) Спасибо.
Не подскажите как это вывести в блок и там же подсчитать кол-во групп (то бишь, материалов типа "news")?
2marazmus: ну наскребём 30$ всем миром, может хватит
2CASHMAR: Да, подскажу, но чуть позже - сейчас пока со временем завал.