подсчет количества нодов

Главные вкладки

Аватар пользователя colombo_ colombo_ 26 мая 2012 в 19:08

собственно сабж - сайт с объявлениями.
как подсчитать количество нодов за определенный срок ( кол-во объявлений за сегодня) а так же общее количество нодов в определенной категории (таксономии)

в общем я представляю, но может есть где-то готовые решения)

Комментарии

Аватар пользователя multpix multpix 27 мая 2012 в 0:10

обобщенно:
взять вьюс
делать вывод с фильтрацией по дате,
и выводя допустим список категорий, отношениями подтянуть NID,
включить агрегацию, и для этого поля указать в ее настройках - счетчик.
получим вывод кол-ва нод попадающих под наши условия.

Аватар пользователя colombo_ colombo_ 27 мая 2012 в 17:29

я на д6 поставил в3. вроде получилось, но прикол в другом. таксономия у меня 2х уровневая. И результаты он выдает как для родительского так и для дочернего термина, а хочется, чтобы только родительский термин. А поля "таксономия: родительский термин" для отображения при "Отношения: Таксономия: Термины материала" нету Sad
как быть?

ЗЫ: упорно не хотят добавляться скобочки в суффик и префикс.

Аватар пользователя multpix multpix 27 мая 2012 в 17:51

если я правильно понял, то группировка происходит по родителю,
собственно связь сделать обязательной,а поле можно из вывода исключить.

Аватар пользователя colombo_ colombo_ 27 мая 2012 в 18:01

когда включаю обязательную связь то вот такое получается
"user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= term_data_node.tid ) count_alias' at line 3 query: SELECT COUNT(*) FROM (SELECT COUNT(node.nid) AS nid FROM node node INNER JOIN term_data term_data_node ON .tid = term_data_node.tid ) count_alias in /home/arty/domains/test2.simfer.tv/html/sites/all/modules/views/plugins/views_plugin_pager.inc on line 141."

Аватар пользователя colombo_ colombo_ 27 мая 2012 в 18:46

параллельно решил попробовать сниппет

<?php
$vid 
13;  // Номер словаря
$pole = array();
$items = array();
$terms taxonomy_get_tree($vid);
//var_dump($terms);

foreach ( $terms as $term ) {
  
$count db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d"$term->tid));
  
$pole[]=Array ("[".$term->depth."]" .l($term->name"taxonomy/term/$term->tid") . (($count) ? " (".$count.")"""), $term->depth$count$term->tid)  ;
}
$depth =-1;
foreach (
$pole as $list) {
  
//$depth- глубина предыдущего уровня
  //$list[1] - глубина текущего элемента
  
if ($list[1] == $depth) {
    echo 
"</li>";
    
next;
  }
  while (
$list[1] != $depth) {
    if (
$list[1] > $depth) {
      
$depth++;
      echo 
"\n<ul>";
      
next;
    }
    if (
$list[1] < $depth) {
      
$depth--;
      echo 
"\n</li>\n</ul>";
    }
  }

  echo 

"\n<li>$list[0]";
  
$depth=$list[1];
}

//Закрываем все открытые теги до нулевого уровня:
$depth=0;
while (
$list[1] != $depth) {
  if (
$list[1] > $depth) {
    
$depth++;
    echo 
"</li>\n</ul>";
  }
}
?>

но он выводит как родительский так и дочерний термин. как ограничиться только родительскими?

Аватар пользователя colombo_ colombo_ 27 мая 2012 в 19:16

сделал так Smile

                <?php
$vid 
1;  // Номер словаря
$pole = array();
$items = array();
$terms taxonomy_get_tree($vid);
//var_dump($terms);

foreach ( $terms as $term ) {
  
$count db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d"$term->tid));
 
$pole[]=Array (l($term->name"taxonomy/term/$term->tid") . (($count) ? " (".$count.")"" (0)"), $term->depth$count$term->tid)  ;
}
$depth =-1;

echo 

"\n<ul>";
foreach (
$pole as $list) {
  
//$depth- глубина предыдущего уровня
  //$list[1] - глубина текущего элемента
  
if($list[1] == 0) {
    echo 
"<li> $list[0] </li> ";  
  }
 }
echo 
"\n </ul>";
?>

а вьюса так и не хочет показывать только родительские. видать надо на семерочку переходить