Способ не тестировался на высоконагруженных частопосещаемых галереях с кол-вом фоток чуть более чем дофига.
перед правками не забывайте делать бэкапы!!11
Итак, проблема аналогична проблеме вывода количества статей во вложенных категориях: не выводит кол-во фоток во вложенных фотогалереях.
Как решил проблему я:
1. создаём колонку в таблице cms_photo_albums:
2. правим файл /admin/components/photos/backend.php — для сохранения категорий детей при правке категорий галереи через админку
в двух местах, после строки
вставляем код
итак. у нас теперь в базе есть (будут) перечислены вложенные категории в таблице
3. вывод. правим файл /core/classes/photo.class.php
находим функцию
перед ней добавляем новую
и чуть ниже в функции
замените блок
на
вроде ничего не забыл.
не забывайте делать бэкапы!!11
перед правками не забывайте делать бэкапы!!11
Итак, проблема аналогична проблеме вывода количества статей во вложенных категориях: не выводит кол-во фоток во вложенных фотогалереях.
Как решил проблему я:
1. создаём колонку в таблице cms_photo_albums:
в таблицу cms_photo_albums добавить child_ids типа varchar(200)
в двух местах, после строки
$album['parent_id'] = cmsCore::request('parent_id', 'int');
//!---ищем детей //1 уровень $sql1 = "SELECT id FROM cms_photo_albums WHERE parent_id = '".cmsCore::request('item_id', 'int')."'"; $result1 = $inDB->query($sql1); $innercats=""; if ($inDB->num_rows($result1)) { while($innercat1 = $inDB->fetch_assoc($result1)){ $innercats = $innercats.", ".(int)$innercat1['id']; } } $album['child_ids'] = $innercats;
3. вывод. правим файл /core/classes/photo.class.php
находим функцию
public function getAlbums($parent_id=0, $differ='', $recurse=false){
// ============================================================================ // /** * Возвращает кол-во фоток в перечисленных через запятую альбомах ($parents_ids) * @return array $albums */ public function getChildAlbumsPhotocount($parents_ids){ $sql = "SELECT count(*) FROM cms_photo_files WHERE album_id IN (".$parents_ids.")"; $result = $this->inDB->query($sql); }
public function getAlbums($parent_id=0, $differ='', $recurse=false){
while ($album = $this->inDB->fetch_assoc($result)){ $album['file'] = $album['iconurl'] ? $album['iconurl'] : ($album['file'] ? $album['file'] : 'no_image.png'); $album['pubdate'] = cmsCore::dateFormat($album['pubdate']); $albums[] = $album; }
while ($album = $this->inDB->fetch_assoc($result)){ $album['file'] = $album['iconurl'] ? $album['iconurl'] : ($album['file'] ? $album['file'] : 'no_image.png'); $album['pubdate'] = cmsCore::dateFormat($album['pubdate']); if($parent_id>0) { $child=$album['id']; $album['content_count']=$this->getChildAlbumsPhotocount($child); } $albums[] = $album; }
не забывайте делать бэкапы!!11
Реклама #
eoleg 11 лет назад #
полезная мелочь, нужно только указать для какой версии.
Cruzka 11 лет назад #
Fichter 11 лет назад #
Я не силен в базах данных. Подскажите как правильно выполнить запрос к бд, чтобы в таблицу cms_photo_albums добавить child_ids типа varchar(200)
Заранее спасибо!
Dizels 11 лет назад #
1 поле, в конец таблицы и нажимаете ок. Появится окно, где вводите название поля (child_ids), выбираете тип VARCHAR и в ячейке длина\значение укаываете 200.
Dizels 11 лет назад #
Dizels 11 лет назад #
Вот ссылки на измененные файлы:
http://dfiles.ru/files/l7a7s1uez
http://dfiles.ru/files/kzt1u3oww
прошу понимающих подсказать, что я сделал не так или почему не работает.
Nikit 11 лет назад #
AtlantisWeb 11 лет назад #