Jola
21-11-2010, 21:57
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:
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:
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.
Ustawiamy dostęp do artykułu tylko dla adresata. Plik components/com_content/views/article/tmpl/default.php tuż pod (linia 4)
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own')); wstawiamy:
$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ż :).
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:
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:
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.
Ustawiamy dostęp do artykułu tylko dla adresata. Plik components/com_content/views/article/tmpl/default.php tuż pod (linia 4)
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own')); wstawiamy:
$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ż :).