Just ran into this myself. I don't know whether this should be described as a bug or a feature, but it's certainly the way the code is written as of version 1.6.1.4.
In the file /classes/Category.php
the getSubCategories()
function checks whether a cover image file exists for the current category. Image data is only added to the subcategory data if a cover image exists, otherwise the default placeholder image information is added.
One way round this is to replace:
foreach ($result as &$row) {
$row['id_image'] = Tools::file_exists_cache(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg') ? (int)$row['id_category'] : Language::getIsoById($id_lang).'-default';
$row['legend'] = 'no picture';
}
with
foreach ($result as &$row) {
if (Tools::file_exists_cache(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg') || Tools::file_exists_cache(_PS_CAT_IMG_DIR_.$row['id_category'].'-medium_default.jpg')) {
$row['id_image'] = (int)$row['id_category'];
$row['legend'] = $row['meta_title'];
} else {
$row['id_image'] = Language::getIsoById($id_lang).'-default';
$row['legend'] = 'no picture';
}
}