Uffff.. muchas gracias, que trabajo te estoy dando.
Parece que funciona, pero he tenido que modificar dl.fecha_de_alta por dl.date y además no me muestra el número de clicks, ni el número de comentarios de cada enlace. Ahora también aparece un enlace para editores que antes no aparecía y la url para mostrar más detalles del enlace está casi correcta, pero no funciona porque le falta el id del enlace.
Mira, te pongo el código php original "Top enlaces" para ver si te sirve de ayuda:
Código PHP:
$sql = "SELECT t1.*, COUNT(DISTINCTROW(t2.`id`)) clicks, ";
$sql .= ($aEditor) ? "IF (t5.id_editor IS NULL, '0', '1') id_editor_edit," : "'0' id_editor_edit,";
$sql .= "COUNT(DISTINCTROW(t3.`id`)) comments, t4.`path` path ";
$sql .= "FROM `{$this->mPrefix}links` t1 ";
$sql .= "LEFT JOIN `{$this->mPrefix}link_clicks` t2 ";
$sql .= "ON t1.`id` = t2.`id_link` ";
$sql .= "LEFT JOIN `{$this->mPrefix}link_comments` t3 ";
$sql .= "ON t1.`id` = t3.`id_link` ";
$sql .= "LEFT JOIN `{$this->mPrefix}categories` t4 ";
$sql .= "ON t1.`id_category` = t4.`id` ";
if ($aEditor)
{
$sql .= "LEFT JOIN `{$this->mPrefix}categories_editors` t5 ";
$sql .= "ON t1.id_category = t5.id_category AND t5.id_editor = {$aEditor} ";
}
$sql .= "WHERE t1.`status` = 'active' AND `id_category` != '333' ";
$sql .= "GROUP BY t1.`id` ";
$sql .= "ORDER BY t1.`rank` DESC ";
$sql .= $aLimit ? "LIMIT {$aStart}, {$aLimit}" : '';
Yo le he cambiado por el siguiente pero me da los errores que te he comentado.
Código PHP:
$sql = "SELECT dl.title, dl.location, dl.url, dl.rank, dl.date, dl.description, dc.path, count( dlc.id_link ) totallinks
FROM {$this->mPrefix}links dl
INNER JOIN {$this->mPrefix}categories dc ON dl.id_category = dc.id
INNER JOIN (
SELECT dl.id
FROM `{$this->mPrefix}links` dl
WHERE dl.id_category !=333 AND dl.STATUS = 'active'
ORDER BY rank DESC ";
$sql .= $aLimit ? "LIMIT {$aStart}, {$aLimit}" : '' ;
$sql .= ")t1 ON dl.id = t1.id
INNER JOIN {$this->mPrefix}link_clicks dlc ON dlc.id_link = dl.id
GROUP BY dlc.id_link
ORDER BY dl.rank DESC , totallinks DESC";