Форум русской поддержки Joomla!® CMS
11.12.2016, 10:05:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Разграничение доступа по автору материала

 (Прочитано 402 раз)
0 Пользователей и 1 Гость смотрят эту тему.
roga_i_kopita
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 32


« : 28.05.2014, 00:07:34 »

Приветствую, уважаемые.

Кто-нибудь сталкивался с задачей разграничить доступ к статьям не по группам зарегистрированных пользователей, а по автору материала?
Т.е. чтобы статью мог видеть только пользователь, который её создал - автор. Ну и супер администратор, разумеется.

Перелопатил FAQ по Joomla 3. Не нашёл. Через поиск не нашёл.

Предполагаю, что в шаблоне нужно переопределять макет материала, вставляя в нём проверку id вошедшего на сайт пользователя и сравнивать с параметрами материала, в которых указан автор.
Но как? ID материала - это цифры, а автор - это, вроде как, логин пользователя.

Не прошу за меня всё сделать, подскажите хоть кусок кода, как реализовать сравнение зашедшего пользователя и автора статьи.
Остальное сам доделаю.
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #1 : 28.05.2014, 00:20:34 »

В бд в таблице #__content есть поле created_by, это id пользователя, который является создателем (автором) материала. А далее - переопределение com_content, точнее - переписание
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #2 : 28.05.2014, 10:07:46 »

В бд в таблице #__content есть поле created_by, это id пользователя, который является создателем (автором) материала. А далее - переопределение com_content, точнее - переписание
Аха, именно так. Код для проверки простой:
Код
<?php $user = JFactory::getUser();
 
if ($user->id == $item->created_by) : ?>
 
// показываем материал только автору
 
<?php endif; ?>
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #3 : 28.05.2014, 10:11:42 »

Только я бы при проверке условия местами поменял бы, по логике правильнее, имхо:
if ($item->created_by == $user->id) :
« Последнее редактирование: 28.05.2014, 10:24:47 от b2z » Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #4 : 28.05.2014, 10:24:56 »

Только я бы при проверке условия местами поменял бы, по логике правильнее, имхо:
if ($item->created_by == $user->id) :
Хех, как знаете. По сути это не имеет никакого значения  Smiley
Записан
mt_3000
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 91



« Ответ #5 : 16.07.2015, 20:59:26 »

Вопрос знатокам: как разрешить скачивать файл только автору закачки? Условие: линк на файл доступен
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #6 : 16.07.2015, 22:02:27 »

надо формировать ссылку примерно следующим образом:
Код
<?php
$user = Jfactory::getUser();
if (!$user->guest && ($item->created_by == )) {
?>
<a href="<?php echo JRoute::_($item->link); ?>"><?php echo $item->linkname; ?></a>
<?php } else { ?>
<span><?php echo $item->linkname; ?></span>
<?php } ?>
Записан
mt_3000
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 91



« Ответ #7 : 17.07.2015, 01:09:22 »

Спасибо
Записан
wytcorp
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3



« Ответ #8 : 22.12.2015, 16:26:42 »

Гуру, подскажите куда код вставлять. Только начал разбираться c внутренней структурой Joomla 3. Вставлять, как я понял надо com_content\views\article\tmpl\default.php
Я его туда поставил, результата не дало. Помогите...
Код:
<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

// Create shortcuts to some parameters.
$params  = $this->item->params;
$images  = json_decode($this->item->images);
$urls    = json_decode($this->item->urls);
$canEdit = $params->get('access-edit');
$user    = JFactory::getUser();
$info    = $params->get('info_block_position', 0);
JHtml::_('behavior.caption');
?>
<?php if (JFactory::getUser()->quest) ;
if ($user->id == $item->created_by) : ?>
<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope itemtype="http://schema.org/Article">
<meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*')? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
<?php if ($this->params->get('show_page_heading')) : ?>
<div class="page-header">
<h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>

</div>
<?php endif;
if (!empty($this->item->pagination) && $this->item->pagination && !$this->item->paginationposition && $this->item->paginationrelative)
{
echo $this->item->pagination;
}
?>....
Записан
Ragivort
Живу я здесь
******

Репутация: +48/-2
Offline Offline

Пол: Мужской
Сообщений: 1005


Есть мечта-стоит жить


« Ответ #9 : 22.12.2015, 16:48:17 »

Цитировать
<?php if (JFactory::getUser()->quest) ;

А это зачем?
Записан
wytcorp
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3



« Ответ #10 : 22.12.2015, 17:01:56 »

Это случайно...пытался сделать разные вариации...  Сначала по группа, но потом заказчик захотел чтоб каждый мог свои материалы создавать, но видимы были только для автора
Код:
<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

// Create shortcuts to some parameters.
$params  = $this->item->params;
$images  = json_decode($this->item->images);
$urls    = json_decode($this->item->urls);
$canEdit = $params->get('access-edit');
$user    = JFactory::getUser();
$info    = $params->get('info_block_position', 0);
JHtml::_('behavior.caption');
?>
<?php $user = JFactory::getUser();
 
if ($user->id == $item->created_by) : ?>
 

<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope itemtype="http://schema.org/Article">
<meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*')? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
<?php if ($this->params->get('show_page_heading')) : ?>
<div class="page-header">
<h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>

</div>
<?php endif;
if (!empty($this->item->pagination) && $this->item->pagination && !$this->item->paginationposition && $this->item->paginationrelative)
{
echo $this->item->pagination;
}
?>
Вот сейчас стоит все равно не работает. Вот ссылка http://project.ironwood.com.ua/en/decision-making-table/20-jbhkjh

Записан
Ragivort
Живу я здесь
******

Репутация: +48/-2
Offline Offline

Пол: Мужской
Сообщений: 1005


Есть мечта-стоит жить


« Ответ #11 : 22.12.2015, 17:05:00 »

Я думаю надо не $item->created_by  а $this->item->created_by
Записан
wytcorp
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3



« Ответ #12 : 22.12.2015, 17:13:18 »

Спасибо Гуру!Огромное! Заработало...
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet