Задача - на сайте получить список пользователей и возможность посмотреть созданные ими статьи (если, конечно, такой функционал на сайте предусмотрен).
Дополнительно этот же функционал будет показывать на специальной страницы материалы пользователя после его авторизации на фронте.
Действовать будем штатными средствами с некоторыми модификациями
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 46 | <?php // если пришли с страницы списка пользователей $jinput = JFactory::getApplication()->input;$userIDlist = $jinput->get('userid', '', ''); require_once JPATH_SITE.'/components/com_content/helpers/route.php'; $db = JFactory::getDBO();if (!$userIDlist) { $userId = JFactory::getUser()->get('id');} else { $userId = $userIDlist;} $html = ''; $query = ' select a.id as aid, a.catid as catid, u.username, a.alias as aailas, a.title as atitle, a.introtext as atext, c.alias as catalias, c.title as ctitle from #__content as a join #__categories as c on c.id = a.catid join #__users as u on u.id = a.created_by where a.state = 1 and a.created_by = "'.$userId.'" '; $db->setQuery($query);$rows = $db->loadObjectList(); $html .= '<h3>Материалы пользователя '.$rows['0']->username.'</h3>'; $html .= '<ul class="userarticle">'; foreach ($rows as $row){ $rowslug = $row->aid.':'.$row->aailas; $rowcatslug = $row->catid.':'.$row->catalias; $link = JRoute::_(ContentHelperRoute::getArticleRoute($rowslug, $rowcatslug)); $html .= '<li><a href="'.$link.'">'.$row->atitle.'</a></li>'; } $html .= '</ul>'; if (!$userId) { $html = 'Данная информация доступна только после авторизации'; } echo $html; ?> |
1 23 45 67 89 1011 12 | <?php defined('_JEXEC') or die;?> <?php if (!empty($names)) : ?> <ul class="latestusers<?php echo $moduleclass_sfx ?>" > <?php foreach ($names as $name) : ?> <li> <a href="/userarticles?userid=<?php echo $name->id; ?>"><?php echo $name->username; ?></a> </li> <?php endforeach; ?> </ul> <?php endif; ?> |
Обычные материалы с произвольным текстом или без него, но обязательно в каждый из них вставляем созданные модули, в каждый по одному.
Один материал будет называться "список пользователей" и в него вставляем модуль 2.1, второй материал "материалы пользователя" и в него соответственно модуль 2.2
Все, теперь при переходе по ссылке /userlist мы увидим список пользователей, отсортированных по дате регистрации (хотите изменить - смотрим хелпер модуля mod_users_latest), по клику на ник попадаем на страницу /userarticles?userid=XX с списком статей, написанных данным автором.
Если же сделать прямой переход на страницу /userarticles то будет два варианта: я не авторизован - увижу заглушку, я авторизован - увижу список своих статей.
Конечно, есть специализированные расширения для подобного и более расширенного функционала, но зачастую большего и не требуется, тащить мегабайты непонятного кода я не вижу смысла. А так каркас есть, дальше можно наводить красивости, добавлять условия в выборку материалов, сортировки и тд
Комментарии