Можете привести код отдельного вызова полей? Т.е. у вас определенная колонка выводит определенное поле. Как?
Уффф... Ну, и задаёте Вы задачку, барин. Проще было прислать шаблон
Но зато теперь всё по полочкам расписал. Тексту много получилось, т.к. основательно переделывал category.php и category_item.php.
Значит, так. Первым делом
ПЕРЕДЕЛКА CATEGORY.PHP
Начиная со строки 138 и по 156 - отдаём функции отображения leading items в category_item.php. Вместо
<?php if(isset($this->leading) && count($this->leading)): ?>
<!-- Leading items -->
<div id="itemListLeading">
<?php foreach($this->leading as $key=>$item): ?>
<?php
// Define a CSS class for the last container on each row
if( (($key+1)%($this->params->get('num_leading_columns'))==0) || count($this->leading)<$this->params->get('num_leading_columns') )
$lastContainer= ' itemContainerLast';
else
$lastContainer='';
?>
<div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->leading)==1)? '' : ' style="width:'.number_format(100/$this->params->get('num_leading_columns'), 1).'%;"'; ?>>
<?php
// Load category_item.php by default
$this->item=$item;
echo $this->loadTemplate('item');
?>
</div>
<?php if(($key+1)%($this->params->get('num_leading_columns'))==0): ?>
<div class="clr"></div>
<?php endif; ?>
<?php endforeach; ?>
<div class="clr"></div>
</div>
<?php endif; ?>
Просто вызываем category_item.php
<?php if(isset($this->leading) && count($this->leading)): ?>
<!-- Leading items -->
<div id="itemListLeading">
<?php
$item = reset($this->leading);
$this->item=$item;
echo $this->loadTemplate('item');
?>
<div class="clr"></div>
</div>
<?php endif; ?>
Остальное - Primary items, Secondary items - до Link items лучше удалить, т.к. они будут использовать уже переделанную category_item.php, что приведёт к ошибкам.
ПЕРЕДЕЛКА CATEGORY_ITEM.PHP
После 17 строки создаём заголовок таблицы
<table class="tablecatalog">
<thead>
<tr>
<th><span class="catItemExtraFieldsLabel">Название<br/>(для просмотра подробностей щёлкните мышью)</span></th>
<?php if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields)): ?>
<?php foreach ($this->item->extra_fields as $key1=>$extraField): ?>
<th><span class="catItemExtraFieldsLabel"><?php echo $extraField->name; ?></span></th>
<?php endforeach; ?>
<?php endif; ?>
</tr>
</thead>
Дальше переносим функции category.php в category_item.php - открываем счётчик Leading items (количество строк таблицы до пагинации, которое указывается в свойствах категории - "Количество основных материалов")
<?php foreach($this->leading as $key=>$item): ?>
<?php
// Define a CSS class for the last container on each row
if( (($key+1)%($this->params->get('num_leading_columns'))==0) || count($this->leading)<$this->params->get('num_leading_columns') )
$lastContainer= ' itemContainerLast';
else
$lastContainer='';
?>
<?php
$this->item=$item;
?>
После 46 строки вместо заголовка материала
<h3 class="catItemTitle">
<?php if ($this->item->params->get('catItemTitleLinked')): ?>
<a href="<?php echo $this->item->link; ?>">
<?php echo $this->item->title; ?>
</a>
<?php else: ?>
<?php echo $this->item->title; ?>
<?php endif; ?>
Начинаем первую ячейку строки
<tr>
<td class="catItemTitle">
<?php if ($this->item->params->get('catItemTitleLinked')): ?>
<a href="<?php echo $this->item->link; ?>">
<?php echo $this->item->title; ?>
</a>
<?php else: ?>
<?php echo $this->item->title; ?>
<?php endif; ?>
</td>
Строка 65 - удаляем закрывающий тег </h3> - он нам больше не нужен
Дальше вместо отображения дополнительных полей (строка 101)
<?php if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields)): ?>
<!-- Item extra fields -->
<div class="catItemExtraFields">
<h4><?php echo JText::_('Additional Info'); ?></h4>
<ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<li class="<?php echo ($key%2)? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="catItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="catItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
</li>
<?php endforeach; ?>
</ul>
<div class="clr"></div>
</div>
<?php endif; ?>
Создаём для них ячейки
<?php if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields)): ?>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<td>
<span class="catItemExtraFieldsLabel"><?php echo $extraField->value; ?></span>
</td>
<?php endforeach; ?>
<?php endif; ?>
</tr>
Ну, и в самом конце файла завершаем счётчик Leading items и закрываем таблицу
<?php endforeach; ?>
</table>
Вот, вроде, и всё. Почему пришлось передавать счётчик из category.php в category_item.php - потому что иначе при каждом вызове category_item.php над таблицей образовывалась одна паразитная пустая строка. Стало быть, сколько строк в таблице отображалось, на столько строк она вниз и уезжала
ЗЫ: В принципе, вместо дополнительных полей можно использовать что угодно - от заставочной картинки до интротекста, алгоритм я описал. Ежели где был невнимателен, и ошибся (т.е. работать не будет) - вышлю полностью шаблон.