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).
- 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).
- Zmieniamy przekierowanie: plik: component/com_user/controller.php funkcja login() linia 146 jest:
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';
}
$mainframe->redirect( $return );
}
Przypominam, że taka modyfikacja ma prawo zniknąć po aktualizacji Joomla.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 );
}
- Ustawiamy dostęp do artykułu tylko dla adresata. Plik components/com_content/views/article/tmpl/default.php tuż pod (linia 4)
wstawiamy:Kod PHP:
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own'));
Plik zapisujemy korzystając z metody nadpisywania szablonem.Kod PHP:
$user =& JFactory::getUser();
if($this->article->alias != $user->get('id') && !$canEdit){
echo JText::_('ALERTNOTAUTH');
return;
}
I już .