Установил модуль Archive by terms на многоязычном сайте с i18n и переводом таксономии.
Функционал - то что надо, но с переводами выявился небольшой но неприятный глюк.
В блоке Archive by terms в меню выводятся непереведенные пункты из словаря таксономии. При этом на страницах архива по ссылкам меню все ок, пункты переведенные.
Стал смотреть код и вижу там такое вот интересное:
$where = '';
$flag = true;
foreach ( $vid as $value ) {//first we want to build the sql where clause
if($flag){
$flag = false;
$where .= 'WHERE vid = %d';
}else{
$where .= ' OR vid = %d';
}
}
//We get all the terms that should be displayed in the block
$sql = "SELECT tid,name FROM {term_data} ".$where;
$result = db_query($sql, $vid);
$out = array ();
$i = 0;
//for each term selected we get the nodes
while ($row = db_fetch_object($result)) {
$nid_by_year = archive_by_terms_get_years($row->tid);
$out[$i] = array (
'tid' => $row->tid,
'name' => $row->name,
);
//all those nodes are now ordered by year
foreach ($nid_by_year as $el) {
$out[$i]['year'][format_date($el->created, 'custom', 'Y')] = 'true';
}
$i++;
}
return $out;
}
немного удивился зачем использовать прямые sql запросы, но авторам модуля наверное виднее.
естественно первым же движением было
в принципе это работает, но теперь все термины словарей такономии, подключеных к archive by terms надо переводить дважды.
Я думаю тут должно быть какое то нормальное решение которое API функцией вернет сразу список в текущем языке. Подскажите как это лучше сделать?
Думаю это необходимо будет запостить в код модуля.