Передача параметров из url во views
Прислано: vic
пн, 05/09/2011 - 14:39
Доброго всем дня!
Есть вопрос по модулю views (drupal 7)
Мне нужно на странице термина таксономии вывести имеющиеся подразделы.
Я пишу вьюс, который принимает контекстный параметр - Term ID. Все вроде работает, передаю во вьюс параметр, например, 108 и получаю термины таксономии, у которых родителем является термин с id=108.
А как мне сделать так, чтоб параметр брался из url. Например, если мы находимся на странице texonomy/term/108, то во вьюс должен передаться параметр 108.
arg(2)
Есть ли такая возможность? Или надо использовать дополнительные модули?
Не запускается крон
Прислано: vic
вс, 28/08/2011 - 04:21
Доброго всем дня!
Сайт работает на drupal 7.7
Столкнулся с проблемой запуска крона.
Пока крон запускаю вручную, при этом при запуске мгновенно происходит переадресация на
страницу site.ru/user?destination=admin/config/system/cron
При этом никаких сообщение и ошибок не выводится.
В чем может быть причина?
Migrate: как перенести аватары пользователей
Прислано: vic
ср, 20/07/2011 - 08:12
Доброго всем дня.
Для переноса материалов на друпал 7 использую модуль migrate.
У меня возникли трудности с переносом аватарок пользователей. У меня есть имена файлов изображений и сама папка с изображениями.
В примерях я лишь нашел как переносить изображения для поля с изображением
Вот такое не работает:
<?php
// Копируем аватары пользователей из sites/all/modules/customs/convert/fotos
$arguments = MigrateFileFieldHandler::arguments(drupal_get_path('module', 'convert'),
'file_copy', FILE_EXISTS_RENAME, NULL);
$this->addFieldMapping('picture', 'foto')
->arguments($arguments);
?>Как перенести аватарки?
- Для комментирования войдите или зарегистрируйтесь
Как вывести пагинатор в блоке
Прислано: vic
пн, 04/07/2011 - 03:30
Доброго всем дня!
Написал блок, который должен выводить на странице просмотра группы (og) все ноды, которые принадлежат этой группе. Причем выводить с разбивкой на страницы по 10 нод.
Но оказалось что пагинатор не выводиться в блоке.
Вот код блока
<?php
function site_block_view($delta = '') {
$block = array();
switch ($delta) {
// Дискуссии (на странице просмотра сообщества)
case 'site_group_discussion':
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'node')
->entityCondition('bundle', array('blog', 'recipe'), 'IN')
->propertyCondition('status', 1)
->propertyOrderBy('created', 'DESC')
->pager(10)
->execute();
$node_list = array();
if (!empty($result['node'])) {
$nodes = entity_load('node', array_keys($result['node']));
foreach ($nodes as $node) $node_list[] = $node;
}
$block['subject'] = 'Дискуссии';
$block['content'] = theme('site_group_discussion', array('node_list' => $node_list)).theme('pager');
break;
}
return $block;
?>Т.е. такая строчка "theme('pager')" не добавляет пвгинатор в конец блока.
Как сделать блок с пагинатором? Может какие параметры использовать?
Почитал http://api.drupal.org/api/drupal/includes--pager.inc/function/theme_pager/7
Но пока ничего не выходит.
Запрос на получения списка групп с максимальным числом участников [Решено]
Прислано: vic
ср, 29/06/2011 - 04:03
Доброго всем дня!
Необходимо сформировать запрос на получение 5 групп с максимальным числом участников. Имеются ввиду группы из модуля og (Organic Group), но суть именно в запросе.
Если строить запрос в сыром виде, то получается как то так:
SELECT g.group_audience_gid, COUNT(g.group_audience_gid) AS total FROM {field_revision_group_audience} g WHERE g.bundle='user' GROUP_BY g.group_audience_gid.
У меня два вопроса:
1) Как отсортировать выборку по полю COUNT(g.group_audience_gid), возможно ли такое?
2) Как переписать запрос в рамках db_select() ?
У меня пока вышло вроде этого:
<?php
$query = db_select('field_revision_group_audience ', 'g');
$query->condition('g.bundle', 'user');
$query->groupBy('g.group_audience_gid');
$query->fields('g', array('group_audience_gid'));
$query->range(0, 5);
$result = $query->execute();
?>Не знаю как добавить поле COUNT(g.group_audience_gid) и как затать сортировку?
Нужна помощь!
Почему то запускается cron на каждый запрос.
Прислано: vic
пн, 27/06/2011 - 07:53
Доброго всем дня!
Разрабатываю проект на локалхосте.
Писал задание для крона - обновление рейтингов материалов. Тестировал наподобие этого
<?php
print_r($result);
die();
?>А потом обнаружил, что у меня cron стал запускаться на каждый запрос к сайту.
Отчего это могло произойти?
Обнаружил это так: в кроне добавил строку <?php print('Cron running!!!'); ?>
Теперь эта надпись вылазит на каждой странице.
Я в недоумении!
- Для комментирования войдите или зарегистрируйтесь
Как запустить Bueditor не на друпале?
Прислано: vic
чт, 23/06/2011 - 10:30
Есть вариант Bueditor редактора не для друпала.
Или есть ли аналог?
В документации есть раздел об этом, но информация явно устарела.
http://ufku.com/drupal/bueditor/non-drupal
Вывод поля изображения заданного по умолчанию [решено]
Прислано: vic
ср, 22/06/2011 - 03:06
Доброго всем дня!
Имеется некоторый тип материала, который содержит поле изображения.
Поле необязательное и загружено изображение по умолчанию.
Мне нужно вручную вывести список материалов данного типа с изображением.
Вот с выводом изображения у меня трудности. Если взять объект ноды, то поле с изображением может быть пустым (ведь оно необязательное).
В этом случае нужно выводить изображение по умолчанию.
А вот как его достать?
<?php
stdClass Object
(
[vid] => 3
[uid] => 3
[title] => Сообщество пользователя vic
...
[field_group_img] => Array
(
)
)
?>Вообще, я думаю, что должна быть некоторая функция темизации, которая возвращала бы изображение, определенное в некотором поле.
Есть такая?
Переобпределить вывод последних записей в блоге
Прислано: vic
сб, 11/06/2011 - 04:57
Приветствую, друзья!
Используется стандартный модуль blog, он формирует страницу последних записей в блоге (/blog).
Я добавил типу материала "Запись в блоге" свое поле "Личный блог".
И теперь мне надо на странице последних записей в блоге выводить все кроме личных блогов, т.е. надо добавить условие в запрос.
Можно конечно написать свой вьюс и "убить" стандартный. НО хочется именно переопределить запрос стандартного вывода.
Вот функция, которая выводит последние записи в блоге
<?php
/**
* Menu callback; displays a Drupal page containing recent blog entries of all users.
*/
function blog_page_last() {
global $user;
$build = array();
$query = db_select('node', 'n')->extend('PagerDefault');
$nids = $query
->fields('n', array('nid', 'sticky', 'created'))
->condition('type', 'blog')
->condition('status', 1)
->orderBy('sticky', 'DESC')
->orderBy('created', 'DESC')
->limit(variable_get('default_nodes_main', 10))
->addTag('node_access')
->execute()
->fetchCol();
if (!empty($nids)) {
$nodes = node_load_multiple($nids);
$build += node_view_multiple($nodes);
$build['pager'] = array(
'#theme' => 'pager',
'#weight' => 5,
);
}
else {
drupal_set_message(t('No blog entries have been created.'));
}
drupal_add_feed('blog/feed', t('RSS - blogs'));
return $build;
}
?>Для переопределения запроса можно использовать функцию http://api.drupal.org/api/drupal/modules--system--system.api.php/functio...
Отладочная информация в drupal7
Прислано: vic
чт, 09/06/2011 - 04:22
Доброго всем дня!
В друпал 6 я доволно часто использовал следующий код
<?php
function hook_comment_insert($comment) {
print_r($comment);
}
?>Т.е. мне надо что то сделать в ответ на добавление пользователем комментария. Но содержимое объекта $comment я наизусть не помню. Поэтому я прописываю в хуке print_r и при добавлении нового комментария я вижу на экране содержимое объекта $comment. Очень просто и удобно.
Но при работе с drupal7 подобные вещи не работают. Вывод print_r не попадает на экран. Видимо разаработчики чтото подправили/улучшили.
Как мне на drupal7 получать подобные подсказки?
Чем вы пользуетесь в этих целях?
Узнать число записей в выборке EntityFieldQuery
Прислано: vic
чт, 12/05/2011 - 04:36
Доброго всем дня!
Вот такой код использую для запроса нужных нод с пагинатором
<?php
$recipe_list = array();
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'recipe')
->propertyCondition('status', 1)
->propertyCondition('uid', $account->uid)
->propertyOrderBy('created', 'DESC')
->pager(30)
->execute();
if (!empty($result['node'])) {
$nodes = entity_load('node', array_keys($result['node']));
foreach ($nodes as $node) $recipe_list[] = $node;
}
?>А как я могу узнать общее количество элементов в выборке? Эти же данные есть, ведь пагинатор их использует!
Хранение дополнительной информации в объекте пользователя
Прислано: vic
вт, 26/04/2011 - 06:03
Доброго всем дня!
В drupal 6 можно было легко схранять и получать любые данные в объекте пользователя. Например так:
// Add user's disposition.
global $user;
$extra_data = array('disposition' => t('Grumpy'));
user_save($user, $extra_data);
// Print user's disposition.
global $user;
print $user->disposition;
В друпал 7, как я понял, так сделать нельзя. Для сохраниения дополнительной информации, необходимо использовать хук hook_user_presave:
function rating_user_presave(&$edit, $account, $category) {
$edit['data']['rating_user_profile'] = 12;
}
Я так понимаю, что это можно сделать только при создании/обновлении профиля пользователя.
А если мне нужно хранить в объекте пользователя, например, количество созданных им нод. Т.е. мне надо каждый раз при создании ноды обращаться к этой переменной в объекте пользователя и увеличивать ее на 1.
Как такое сделать в drupal 7?
Да, и попутно возник вопрос - как удалить сериализованную переменную из объекта пользователя?
- Для комментирования войдите или зарегистрируйтесь
Очистить строку от тегов форматирования
Прислано: vic
сб, 23/04/2011 - 04:37
Доброго всем дня!
Нужно в блоке вывести часть содержимого материала - текст длинной 60 символов.
Обрезание текста осуществляю с помощью truncate_utf8().
Ну вот незадача - текст соержит теги форматирования. Т.е. при обрезке, можно обрезать пол абзаца и получится некорректная верстка.
Надо перед применением truncate_utf8() очистить содержимое от тегов форматирования.
Есть ли в друпале подходящая функция для этого?
Как писать сложные запросы к БД?
Прислано: vic
чт, 21/04/2011 - 05:27
Доброго всем дня!
Прочитал много доков, книг, но что то не нашел сложных примеров запросов к БД.
В друпал 7 новые возможности работы с БД и Field API.
Хотелось бы увидеть примеры подобных запросов:
1) Получение материалов определенного типа с одним определенным полем
2) Получение материалов определенного типа со всеми доступными полями
...
Примеров может быть много.
Пробовал писать - получается, но запросы получаются громоздкими.
Мне кажется что должны быть функции, которые позволили бы легко формировать вышеуказанные запросы.
Вот только примеров я найти не смог.
Как сформировать ссылку из uri
Прислано: vic
чт, 14/04/2011 - 10:17
Доброго всем дня!
Что то совсем запутался. Имеется uri картинки
public://albums/3/image34.jpg
Как мне сформировать ссылку на это изображение. Пробую так, но не работает
l('Увеличить изображение', $node->field_photo['ru'][0]['uri']);