Ostatnio na forum pojawiły się pytania tego typu.
Przedstawię prosty sposób: modyfikacja 2 plików (w tym jeden można nadpisać szablonem). Po zalogowaniu użytkownik jest przenoszony do prywatnego artykułu.
Jeśli takowy nie został dla niego napisany jest przenoszony standardowo, tak jakby modyfikacji nie było.
Dostęp do takiego artykułu ma "adresat" i osoby uprawnione do jego edycji ($canEdit).

  1. Napisz artykuł (artykuły) przeznaczone dla konkretnego Użytkownika. Poziom dostępu ustaw na: Rejestrowany; Alias: id użytkownika, dla którego piszemy artykuł (np. 68, zapisanie w ten sposób aliasu jest konieczne).
  2. Zmieniamy przekierowanie: plik: component/com_user/controller.php funkcja login() linia 146 jest:
    Kod PHP:
    if(!JError::isError($error))
            {
                
    // Redirect if the return url is not registration or login
                
    if ( ! $return ) {
                    
    $return    'index.php?option=com_user';
                }

         
    $mainframe->redirect$return );

    zamieniamy na:
    Kod PHP:
    if(!JError::isError($error))
            {
                
    // Redirect if the return url is not registration or login
                
    if ( ! $return ) {
                    
    $return    'index.php?option=com_user';
                }
    //// dodane
    $db    = & JFactory::getDBO();
    $user =& JFactory::getUser();
    $user_id $user->get('id');

    $sql "select id from #__content where alias = '".$user_id."'";
    $db->setQuery($sql);
    $id $db->loadResult();
    if(
    $id)
     
    $return "index.php?option=com_content&view=article&id=".$id;
    // koniec dodane
                
    $mainframe->redirect$return );
            } 
    Przypominam, że taka modyfikacja ma prawo zniknąć po aktualizacji Joomla.
  3. Ustawiamy dostęp do artykułu tylko dla adresata. Plik components/com_content/views/article/tmpl/default.php tuż pod (linia 4)
    Kod PHP:
    $canEdit    = ($this->user->authorize('com_content''edit''content''all') || $this->user->authorize('com_content''edit''content''own')); 
    wstawiamy:
    Kod PHP:
    $user =& JFactory::getUser();
    if(
    $this->article->alias != $user->get('id') && !$canEdit){
    echo 
    JText::_('ALERTNOTAUTH');
    return;

    Plik zapisujemy korzystając z metody nadpisywania szablonem.

I już .