Передача параметров из 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_RENAMENULL);
    
$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(05);
  
$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']);

RSS-материал

Новое на сайте

Ссылки партнёров