Analizando con más calma tu problema, el inconveniente se te presenta porque estás intentando mostrar todas las imágenes relacionadas a una categoría, pero con una consulta inadecuada, puesto que de ese modo, siempre mostrarás una y solamente una imagen por cada categoría.
Lo que debes hacer es agrupar a todos los nombres e imágenes asociadas a cada categorías y cuando imprimas los datos de la categoría, también imprimes a todos los nombres e imágenes que estén asociadas a dicha categoría, así con cada una.
Código PHP:
Ver original<?php
$query = mysql_query("SELECT C.*, GROUP_CONCAT(P.nombre) AS name, GROUP_CONCAT(P.imagen) AS img FROM categorias C INNER JOIN productos P ON C.categoria_id = P.categoria_padre GROUP BY C.categoria_id ORDER BY C.categoria_nombre ASC, P.nombre ASC"); $catactual = NULL;
if ($catactual != $row["categoria_id"]){
$catactual = $row["categoria_id"];
?>
<div class = "recent-projects">
<h4 class="title">
<span>
<?=$row["categoria_nombre"]?>
</span>
</h4>
<div class = "projects-carousel touch-carousel">
<?php
$nombres = explode(",", $row["name"]); $imagenes = explode(",", $row["img"]); for ($i = 0, $limite = count($nombres); $i < $limite; $i++){ ?>
<div class = "portfolio-item item">
<div class = "portfolio-border">
<div class = "portfolio-thumb">
<a class = "lightbox" data-lightbox-type = "ajax" href = "https://vimeo.com/78468485">
<div class="thumb-overlay">
<i class="icon-video-1"></i>
</div>
<img src="images/<?php echo $imagenes[$i]; ?>" />
</a>
</div>
<div class="portfolio-details">
<a href="#">
<h4><?=$nombres[$i]?></h4>
</a>
</div>
</div>
</div>
<?php
}
?>
</div>
</div>
<?php
}
}
}
?>
En esencia, con
GROUP_CONCAT, agrupo a todos los nombres e imágenes que estén relacionadas a cada categoría, por ejemplo, categoría 1 tiene los nombres A1, A2 y A3 y las imágenes A1.jpg, A2.jpg, A3.jpg, de este modo, dichos nombres e imágenes son agrupados junto a ese registro y cuando imprimo la información, quito las comas con las que esta función de MySQL agrupa a los datos, convirtiéndose dicho grupo en un array y dado a que debe existir la misma cantidad de nombres como de imágenes, recorro con un bucle al array de los nombres y en cada iteración, muestro la imagen y nombre respectivo estando aún dentro del Div principal de la categoría en curso. Así será con cada categoría.
Saludos