вообщем у меня ничего не работало правильно...
особенно важно было
считать в родительской категории без субкатегорий.
изменения чайниковые, почти все уже известные здесь... кое что моё... но работает.. по крайне мере у меня...
1. считает кол-во в субкатегориях (правильно показывает 0)
2. считает кол-во в род. категории и в субкатегориях суммарно (правильно показывает 0)
3. считает кол-во в род. категории даже если нет субкатегорий. (тут нюансы для профи, остальным просто работает и всё!)
правильно показывает 0 = это значит не нужно набить абъявок, чтобы считало правильно.
вот файлы версия 2.5.2 rc2
www.norpe3s.info/sharedfiles/v252rc2.rar
изменения:
в adsmanager.php
function getCatTree(&$tree) {
global $database;
/*$database->setQuery( "SELECT c.id, c.name, c.parent, ".
" (select count(*) ".
" from #__adsmanager_ads a ".
" where a.category = c.id ".
" and a.published = 1 ".
" ) as num_ads ".
"FROM #__adsmanager_categories as c ".
"WHERE c.published = 1 ORDER BY c.parent,c.ordering");*/
//echo $query;
меняем на вот это:
function getCatTree(&$tree) {
global $database;
/////////////////показать количество объявлений в подкатегории//////////////////////////////////////////////////////////////////////////////////////
$query = "SELECT c.*, count(a.id) as num_ads,a.id as not_empty ".
"FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid ".
"RIGHT JOIN #__adsmanager_categories as c ON adcat.catid = c.id ".
"WHERE c.published = 1 ".
"GROUP BY c.id ".
"ORDER BY c.parent,c.ordering";
/////////////////показать количество объявлений в подкатегории//////////////////////////////////////////////////////////////////////////////////////
//echo $query;
теперь в adsmanager.html.php
<h3 class="adsmanager_sub_cat">
<?php
}
else
{
if ($first == false)
echo ' - ';
echo '<a href="'.$link.'">'.$row->name.'</a>';
$first = false;
}
if ($level == 0)
{
adsmanager_html::recurseCategories( $row->id, $level+1, $children,$itemid,$option);
}
if ($level == 0)
{
?>
</h3>
меняем на
<small>
<?php
}
else
{
if ($first == false)
echo ' <br> ';
echo ' - ';
echo '<a href="'.$link.'">' .$row->name. ' </a>('.$row->num_ads.')';
$first = false;
}
if ($level == 0)
{
adsmanager_html::recurseCategories( $row->id, $level+1, $children,$itemid,$option);
}
if ($level == 0)
{
?>
</small>
и ещё в этом же файле вот здесь:
<h2 class="adsmanager_main_cat"><a href="<?php echo $link; ?>" ><?php echo $row->name; ?></a></h2>
меняем на это
<?php ini_set('display_errors', 0); ?>
<?php foreach($children[$row->id] as $rowx) {
$kassx[] = $rowx->num_ads;
}
$summall = $row->num_ads + array_sum($kassx);
?>
<?php ini_set('display_errors', 1); ?>
<?php echo '<a href="'.$link.'">' .$row->name. ' </a>('.$summall.')<br>'; ?>
<?php unset($kassx);
$summall = 0;
?>