Ссылки в компоненте UserContent
Как-то понадобился компонент для Joomla, что выводит список всех материалов, написанных конкретным пользователем. Подходящий был обнаружен на joomlaforum, написал его SmokerMan, за что ему спасибо. К сожалению он требовал небольшой доработки - ссылки на материалы, им генерируемые были несколько неполными.
Выглядели они примерно так: http://example.com/component/content/article/58 (при включенном htaccess и SEO), когда истинный адрес статьи http://example.com/component/content/article/4-category-name/58-article-name или же вообще другой (если статья определена в каком-либо меню Joomla.
Для того чтобы ссылки выглядели нормально пришлось внести несколько исправлений (возможно SmokerMan включит их в официальную версию)
- В файле models/usercontent.php заменить строчки:
$query = ' SELECT a.*, s.title as sectiontitle, c.title as cattitle, ' . ' u.name AS author, u.usertype, g.name AS groups, u.email as author_email '. ' FROM #__content AS a ' . ' LEFT JOIN #__sections AS s ON s.id = a.sectionid' . ' LEFT JOIN #__categories AS c ON c.id = a.catid' . ' LEFT JOIN #__users AS u ON u.id = a.created_by' . ' LEFT JOIN #__groups AS g ON a.access = g.id'. $where. $orderby;
на$query = ' SELECT a.*, s.title as sectiontitle, c.title as cattitle, ' . ' u.name AS author, u.usertype, g.name AS groups, u.email as author_email, '. ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug, '. ' CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as catslug '. ' FROM #__content AS a ' . ' LEFT JOIN #__sections AS s ON s.id = a.sectionid' . ' LEFT JOIN #__categories AS c ON c.id = a.catid' . ' LEFT JOIN #__users AS u ON u.id = a.created_by' . ' LEFT JOIN #__groups AS g ON a.access = g.id'. $where. $orderby;
- В файле views/usercontent/view.html.php: заменить
JRoute::_(ContentHelperRoute::getArticleRoute($item->id, $item->catid, $item->sectionid));
наJRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid));
во всех местах где это встречается (на всякий случай;)
Как оно получилось можете посмотреть на примере Codesex'а: вот список статей, написанных мной, как видите выглядит он вполне замечательно и ссылки красивые. И статьи просто отличные, да.
Обновлено 01.11.2009 13:29
