я наконец-то нашел решение с Вашей помощью! спасибо
Чтобы была
сортировка записей в категории по своему полю и дате добавления использовал такой хак:
нашел кусок кода в файле
components/com_sobi2/frontend.class.php 909 строка примерно
if ($use_original_catid) { //ermittele die catid vom Eintrag (wenn in mehreren Kategorien, den ersten in DB)
$query = "SELECT DISTINCT relation.itemid, relation.catid, title, owner, image, background, icon FROM `#__sobi2_cat_items_relations` AS relation " .
"LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
"WHERE (`published` = '1' AND (relation.catid > 1) AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}' ) AND items.itemid IN({$query}) ) " .
"GROUP BY items.itemid ORDER BY {$config->listingOrdering} {$limits}";
заменил на
if ($use_original_catid) { //ermittele die catid vom Eintrag (wenn in mehreren Kategorien, den ersten in DB)
$query = "SELECT DISTINCT relation.itemid, relation.catid, title, owner, image, background, icon, fieldsdata.fieldid, fieldsdata.data_txt " .
"FROM `#__sobi2_cat_items_relations` AS relation " .
"LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
"LEFT JOIN `#__sobi2_fields_data` AS fieldsdata ON items.itemid = fieldsdata.itemid " .
"WHERE (`published` = '1' AND (relation.catid > 1) AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}' ) AND items.itemid IN({$query}) AND (fieldsdata.fieldid = 57) AND (fieldsdata.data_txt = 1) ) " .
"GROUP BY items.itemid ORDER BY {$config->listingOrdering},publish_up DESC {$limits}";
и еще в этом же файле ниже
if ($use_original_catid) { //ermittele die catid vom Eintrag (wenn in mehreren Kategorien, den ersten in DB)
$query = "SELECT DISTINCT relation.itemid, relation.catid, title, owner, image, background, icon FROM `#__sobi2_cat_items_relations` AS relation " .
"LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
"WHERE ((`catid` = {$catid} {$or}) AND `published` = '1' AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}' ) AND items.itemid IN({$query}) ) " .
"GROUP BY items.itemid ORDER BY {$config->listingOrdering} {$limits}";
заменил на
if ($use_original_catid) { //ermittele die catid vom Eintrag (wenn in mehreren Kategorien, den ersten in DB)
$query = "SELECT DISTINCT relation.itemid, relation.catid, title, owner, image, background, icon, fieldsdata.fieldid, fieldsdata.data_txt " .
"FROM `#__sobi2_cat_items_relations` AS relation " .
"LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
"LEFT JOIN `#__sobi2_fields_data` AS fieldsdata ON items.itemid = fieldsdata.itemid " .
"WHERE ((`catid` = {$catid} {$or}) AND `published` = '1' AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}' ) AND items.itemid IN({$query}) AND (fieldsdata.fieldid = 57) ) " .
"GROUP BY items.itemid ORDER BY {$config->listingOrdering},publish_up DESC {$limits}";
также нужно в файле
administrator/components/com_sobi2/includes/adm.helper.class.php под строкой
$listingOrdering[] = sobiHTML::makeOption('items.publish_down DESC', _SOBI2_CONFIG_GENERAL_SORT_EXP_DESC);
добавить новую строку
$listingOrdering[] = sobiHTML::makeOption('fieldsdata.data_txt DESC','Featured');
где
Featured-название вашего поля (по которому сортируете)
57-ID вашего поля (можно найти в админке при редактировании полей)
также в файле
components/com_sobi2/axsearch.php строка 342 примерно
под
if ($use_original_catid) { //ermittele die catid vom Eintrag (wenn in mehreren Kategorien, den ersten in DB)
$config->listingOrdering = str_replace( "itemid", 'relation.itemid', $config->listingOrdering );
нужно заменить
$query = "SELECT DISTINCT relation.itemid, relation.catid, title, owner, image, background, icon, metadesc, publish_up FROM `#__sobi2_cat_items_relations` AS relation " .
"LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
"WHERE (`published` = '1' AND (relation.catid > 1) AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}' ) AND items.itemid IN({$whereId}) ) " .
"GROUP BY items.itemid ORDER BY {$config->listingOrdering} {$limits}";
на
$query = "SELECT DISTINCT relation.itemid, relation.catid, title, owner, image, background, icon, metadesc, publish_up, fieldsdata.fieldid, fieldsdata.data_txt " .
"FROM `#__sobi2_cat_items_relations` AS relation " .
"LEFT JOIN `#__sobi2_item` AS items ON relation.itemid = items.itemid " .
"LEFT JOIN `#__sobi2_fields_data` AS fieldsdata ON items.itemid = fieldsdata.itemid " .
"WHERE (`published` = '1' AND (relation.catid > 1) AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}' ) AND items.itemid IN({$whereId}) AND (fieldsdata.fieldid = 57) ) " .
"GROUP BY items.itemid ORDER BY {$config->listingOrdering},publish_up DESC {$limits}";
затем в админке выбрать сортировку "Сортировать записи по" полю которое названо
FeaturedВ итоге-первыми выведуться записи которые имеют параметр
Featured, затем пойдут обычные, причем те что добавлены последними-сразу под
Featured"ми
частично материал взят с первоисточника
http://www.sigsiu.net/forum/index.php?topic=25001.0еще интерестная темка
http://www.sigsiu.net/forum/index.php/topic,15937.0.html