Отображение автора в mod_latestphoto

Очень я хотела чтобы в модуле был виден автор картинки

#1 6 февраля 2012 в 13:44
Очень долго рылась и очень хочется это воплотить… К сожалению альбом в инстанте не очень удобен для нужд худ. сообществ. Было бы идеально сократить перемещения юзеров, позволив им самим создавать альбомы. В этом очень удачен Coppermine Photo Gallery...
Я совершенно бездарный программист)))) Но что не сделаешь когда хочется… Мне посоветовали сделать запрос в мускуле на тему отображения user_id по примеру, напрмер, "последних статей". К сожалению, я так ничего и не смогла сделать, хотя таблицу mod_latestphoto редактировала и рыла. В общем, ковыряла-ковыряла и ничего не придумала (странно что из бэкапа потом не пришлось восстанавливать базу))))).
Решила обратиться к пхп исходникам тела модуля. И нашла зацепку!
Для сравнения привожу две части кода из module.php последних статей и последних фото:

Последние статьи:
  1. $sql = "SELECT con.*,
  2. con.pubdate as fdate,
  3. u.nickname as author,
  4. u.login as author_login
  5. FROM cms_content con
  6. LEFT JOIN cms_category cat ON cat.id = con.category_id
  7. LEFT JOIN cms_users u ON u.id = con.user_id
  8. WHERE con.published = 1 AND con.showlatest = 1 AND con.is_arhive = 0 AND con.pubdate <= '$today'
  9. AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today'))
  10. ".$catsql."
  11. ORDER BY con.pubdate DESC
  12. LIMIT ".$cfg['newscount'];
  13.  
  14. $result = $inDB->query($sql);
  15.  
  16. $is_con = false;
  17.  
  18. if ($cfg['is_pag']) {
  19. // Считаем общее количество материалов если опция пагинация включена
  20. $sql_total = "SELECT 1
  21. FROM cms_content con
  22. LEFT JOIN cms_category cat ON cat.id = con.category_id
  23. WHERE con.published = 1 AND con.showlatest = 1 AND con.is_arhive = 0 AND con.pubdate <= '$today' AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today')) ".$catsql."";
  24. $result_total = $inDB->query($sql_total) ;
  25. $total_page = $inDB->num_rows($result_total);
  26. }
  27.  
  28. if ($inDB->num_rows($result)){
  29.  
  30. $is_con = true;
  31.  
  32. $inCore->loadModel('content');
  33. $model = new cms_model_content();
  34.  
  35. $articles = array();
  36. while($con = $inDB->fetch_assoc($result)){
  37. $next = sizeof($articles);
  38. $articles[$next]['id'] = $con['id'];
  39. $articles[$next]['title'] = $con['title'];
  40. $articles[$next]['hits'] = $con['hits'];
  41. $articles[$next]['href'] = $model->getArticleURL(null, $con['seolink']);
  42. $articles[$next]['author'] = $con['author'];
  43. $articles[$next]['authorhref'] = cmsUser::getProfileURL($con['author_login']);
  44. $articles[$next]['comments'] = $cfg['showcom'] ? $inCore->getCommentsCount('article', $con['id']) : false;
  45. $articles[$next]['date'] = $inCore->dateformat($con['fdate']);
  46. $articles[$next]['description'] = $con['description'];
  47. $articles[$next]['image'] = (file_exists(PATH.'/images/photos/small/article'.$con['id'].'.jpg') ? 'article'.$con['id'].'.jpg' : '');
  48. }
  49.  
  50. }

Последние фото:

  1. $sql = "SELECT f.*,
  2. a.id as album_id,
  3. a.title as album
  4. u.nickname as author,
  5. u.login as author_login
  6. FROM cms_photo_files f
  7. LEFT JOIN cms_photo_albums a ON a.id = f.album_id
  8. LEFT JOIN cms_users u ON u.id = con.user_id
  9. WHERE f.published = 1 ".$catsql."
  10. ORDER BY f.id DESC
  11. LIMIT ".$cfg['shownum'];
  12.  
  13. $result = $inDB->query($sql);
  14. $is_photo = false;
  15.  
  16. if ($inDB->num_rows($result)){
  17. $photos = array();
  18. $is_photo = true;
  19.  
  20. while($con = $inDB->fetch_assoc($result)){
  21. if ($cfg['showtype']=='full'){
  22. if($cfg['showcom'] || $cfg['showdate']){
  23. if ($cfg['showdate']){
  24. $con['fpubdate'] = $inCore->dateFormat($con['pubdate']);
  25. }
  26. if ($cfg['showcom']){
  27. $con['comments'] = $inCore->getCommentsCount('photo', $con['id']);
  28. }
  29. }
  30. }
  31. $photos[] = $con;
  32. }
  33. }
У меня вопрос, как правильно записать отображение имени, если в запрос к мускулу я уже ввела строки:
  1. u.nickname as author,
  2. u.login as author_login
  3. LEFT JOIN cms_users u ON u.id = con.user_id
А при написании вот такой вот штуки (товарищи профессионалы — не смеяться над тщётными попытками дамы!:)):
  1. if ($cfg['user_id']){
  2. $con['authorhref'] = cmsUser::getProfileURL($con['author_login']);
  3.  
}

Модуль на сайте пишет, что мол нет материалов для отображения… :)

Товарищи, помогите. :(
#2 7 февраля 2012 в 00:47
Делается просто )
В файле /modules/mod_latestphoto/module.php замените запрос, начиная со строки 33, на
  1. $sql = "SELECT f.*, a.id as album_id, a.title as album, u.nickname, u.login, p.gender
  2. FROM cms_photo_files f
  3. LEFT JOIN cms_photo_albums a ON a.id = f.album_id
  4. LEFT JOIN cms_users u ON u.id = f.user_id
  5. INNER JOIN cms_user_profiles p ON p.user_id = u.id
  6. WHERE f.published = 1 ".$catsql."
  7. ORDER BY f.id DESC
  8. LIMIT ".$cfg['shownum'];
далее найдите строку 50
  1. if($cfg['showcom'] || $cfg['showdate']){
и прямо перед ней вставьте
  1. $con['genderlink'] = cmsUser::getGenderLink($con['user_id'], $con['nickname'], 0, $con['gender'], $con['login']);
Далее в файле шаблона, в месте где вам нужно, внутри блока
  1.  
  2. {if $cfg.showtype == 'full'}
  3. {/if}
  4.  
вставьте
  1. {$con.genderlink}
Ссылка на автора будет выводиться только при режиме вывода "Подробный".
#3 8 февраля 2012 в 16:23
СПАСИБО ВАМ ОГРОМНОЕ!!! angel
Сейчас же пойду пробовать!!!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.