Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 1193 Просмотров
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Здравствуйте, уважаемые веб-программисты!

Нужно, чтобы у зарегистрированного пользователя сайта была своя страничка, на которой отображались бы все произведения, опубликованные этим пользователем.

Подскажите, пожалуйста, как это можно осуществить?
*

Ilhom666

  • Завсегдатай
  • 1384
  • 184 / 0
Создайте Контакт, привяжите к нему вашего пользователя и в настройках Контактов включите "Показывать материалы пользователя"
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Страничка у пользователя уже есть (если быть точнее, то у него есть свой личный кабинет, сделанный по подобию личного кабинета автора сайта stihi.ru). Так вот, нужно, чтобы на одной из страниц этого личного кабинета (под словами "Произведения, не вошедшие в сборники" - см. ссылку ниже), автоматически выводился список всех произведений, опубликованный данным автором.
http://vk.com/photo304500865_374189006

Задачу, насколько я поняла, можно решить созданием специального модуля и вставкой этого модуля в нужное место в тексте.
Как вставить модуль в текст я разобралась: назначить модулю позицию, например "position-100", а в нужное место в тексте вставить формулу: {loadposition position-100}
Осталось разобраться с самим модулем.
На одном из форумов мне посоветовали установить flexi custom code, создать модуль с типом " flexi custom code" и поместить в него такой код:
 <?php $user = & JFactory::getUser();
    if (!$user->guest) {
        $db = JFactory::getDBO();
        $userID = $user->id;
        $catID = 10; // категория произведений пользователя
        $query = "select * from #__content where created_by = '".$userID."' and state = '1' and access = '1' and catid='".$catID."' order by ordering asc";
        $db->setQuery($query);
        $result = $db->loadObjectList();
    
        //print_r($result);
        if(count($result)){
            foreach($result as $key=>$item):?>
            <div id="val"><?php echo $item->title; ?></div>
            <?php endforeach;  
        
        }
    
    }
?>

Модуль я создала: http://vk.com/photo304500865_374468784, назначила ему позицию "position-101". В тексте статьи под словами "Произведения, не вошедшие в сборники" вставила конструкцию: {loadposition position-101}. Никакого списка не отобразилось. В чём может быть ошибка, подскажите, пожалуйста!

Или, может быть, задачу можно решить как-то иначе? Подскажите, пожалуйста!
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
$user = & JFactory::getUser();
Это текущий пользователь.
  $query = "select * from #__content where created_by = '".$userID."' and state = '1' and access = '1' and catid='".$catID."' order by ordering asc";
Надо чтобы:
1.У пользователя под которым вы вошли были статьи.
2. Статьи пользователя были в категории с id = 10
3. Статьи опубликованы и у пользователя есть к ним доступ.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
http://extensions.joomla.org/extension/author-list
Shustry, прошла по ссылке. Установочные файлы скачала, но устанавливать не стала - испугал английский язык. Может быть, есть ещё какой-то вариант решения задачи?
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
passer, вы пишите: "надо чтобы ....статьи пользователя были в категории с id = 10". Я правильно поняла, что id статей для каждого нового пользователя нужно набирать вручную?

На сайте будут регистрироваться сотни пользователей, поэтому нужно, чтобы на одной из страниц личного кабинета (под словами "Произведения, не вошедшие в сборники"), автоматически выводился список всех произведений, опубликованный данным автором.
Подскажите, пожалуйста, как это можно осуществить?

На данный момент я смогла только вывести в нужное место модуль с типом "Материалы-последние новости": http://vk.com/photo304500865_374266319 - это для примерного понимания картины.
 
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Код: php
$query = "select * from #__content where created_by = '".$userID."' and state = '1' and access = '1' and catid='".$catID."' order by ordering asc";
заменить на
Код: php
$query = "select * from #__content where created_by = '".$userID."' and state = '1' and access = '1' order by ordering asc";
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
passer, спасибо, код поменяла. Это решило вопрос, (правда, как выяснилось, частично) получилась такая картина: http://vk.com/photo304500865_374490079
Сразу возник вопрос другой:
Как сделать ссылки на опубликованные произведения кликабельными, чтобы они вели на опубликованное произведение?
 
Вот пример: при нажатии на стихотворение "Украине" http://vk.com/irinkapelsinka?z=photo304500865_374492747%2Fphotos304500865 открывается страница с самим стихотворением: http://vk.com/irinkapelsinka?z=photo304500865_374492754%2Fphotos304500865

« Последнее редактирование: 16.07.2015, 00:41:37 от mila_serdnaya »
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Shustry, прошла по ссылке. Установочные файлы скачала, но устанавливать не стала - испугал английский язык. Может быть, есть ещё какой-то вариант решения задачи?
Ну я использовал этот компонент успешно. Английский в админке не смущает. Несколько фраз на фронте перевёл, дело минутное.
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Как сделать ссылки на опубликованные произведения кликабельными, чтобы они вели на опубликованное произведение?
Как-то так.
Код: php
if(count($result)){
     foreach($result as $key=>$item):
        $link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language));
     ?>
        <div id="val"><a href="<?php echo $link; ?>"><?php echo $item->title; ?></a></div>
        <?php endforeach;  
        
  }
Но может не найти какие-то классы типа Fatal error: Class ... not found
Это уж надо конкретно смотреть какие и подключать по мере необходимости.
Может кто-то и с ходу подскажет. Я в Jooml-е не великий спец.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
passer, вопрос со списком произведений, которые автор опубликовал на сайте, в итоге решён проще: с помощью функции {loadposition position-100} в нужное место в тексте страницы вставляется модуль с названием "Список опубликованных произведений" (Тип модуля выбрала - "Материалы-последние новости"), назначила модулю позицию - position-100.
Важно: в основных параметрах создаваемого модуля в пункте авторы указать "добавлены или изменены мной", вместо "кто угодно".
http://vk.com/irinkapelsinka?z=photo304500865_374834090/photos304500865
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться