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

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Добрый день.
Есть статья. Текст в редакторе разделен кнопкой "Подробнее"
Как сделать чтобы незарегистрированные пользователи не смогли прочитать статью?
В настройках менеджера материалов "Показывать ссылки не авторизованным" стоит нет. В описании
пункта написано
Цитировать
Если установлено значение Да, то ссылки на просмотр полного текста материалов смогут видеть все пользователи, в том числе, не прошедшие авторизацию, но для просмотра полного текста система потребует ввести логин и пароль.
Я и да ставил и нет - все равно кнопка "Подробнее" открывает полный текст материала
*

AlekVolsk

  • Гуру
  • 6773
  • 395 / 4
потребуется переопределить макет материала и обернуть вывод полного текста материала в условие, проверяющее авторизацию пользователя

это внештатный функционал, только дописка по месту

"Показывать ссылки не авторизованным" - это про другое совсем, не связано с вашим вопросом
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
@AlekVolsk
"Показывать ссылки не авторизованным" - это про другое совсем, не связано с вашим вопросом
ясно.

потребуется переопределить макет материала и обернуть вывод полного текста материала в условие, проверяющее авторизацию пользователя
А можно, для особо грамотных :), чуть подробнее?
Цитировать
обернуть вывод полного текста материала в условие
- по идее должно быть событие нажатия кнопки "Подробнее" ?
*

AlekVolsk

  • Гуру
  • 6773
  • 395 / 4
@AlekVolsk  ясно.
А можно, для особо грамотных :), чуть подробнее? - по идее должно быть событие нажатия кнопки "Подробнее" ?
нет, "подробнее" - это просто ссылка на страницу материала из категории, не более. стандартный блоговый функционал

переопределение шаблона материала Joomla - легко гуглится
проверка авторизованности пользователя Joomla - легко гуглиться
вывод по условию - это уже надо составлять логику, что будет выводиться для неавторизованного пользователя (гостя) и писать соответствующий код

если вы не знаете PHP, то лучше наймите специалиста, ваша задача несложная и недорогая
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
@AlekVolsk
Где-то на этапе формирования страницы должен быть код на проверку материала на наличие в нем тега
<hr id="system-readmore" />
Почему нельзя в этом месте сделать проверку на авторизованость пользователя и просто не показывать вообще кнопку "Продробнее"?
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Как бы разобрался.
@AlekVolsk  Все намного проще.
за формирование кнопки "Подробнее" отвечает layouts\joomla\content\readmore.php
вот что я наваял
Код
	<?php $user = JFactory::getUser(); if ($user->guest == 1) :?>
<a class="btn" href="index.php?option=com_users&view=login" itemprop="url" aria-label="<?php echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE'); ?>
<?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?>">
<?php echo '<span class="icon-chevron-' . $direction . '" aria-hidden="true"></span>'; ?>
<?php echo JText::_('Надо бы зайти'); ?>
</a>
<?php elseif (!$params->get('access-view')) : ?>

посмотрите, может надо что-то подправить? или выкинуть лишнее :)
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Да, спасибо за ответы - натолкнули на мысли
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Как закрыть тему что она решенная?
*

AlekVolsk

  • Гуру
  • 6773
  • 395 / 4
layouts\joomla\content\readmore.php
надеюсь, вы его переопределили в основном шаблоне сайта? иначе при обновлении Joomla ваши правки затрутся

но в целом это надо делать в шаблоне материала, а не разделителя
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
надеюсь, вы его переопределили в основном шаблоне сайта?
Неа, не подумал об етом.
А в шаблоне сайта нету такого файлика.
шаблоне материала
- не подскажете где его искать?
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Дело в том что в шаблоне readmore  встречается только в classes.js
Код
var p = document.getElementsByTagName("p");
for (var i = 0; i < p.length; i++) {
    if (p[i].className === 'readmore') {
        p[i].className = 'btn';
    }
}
только я не понял что данная функция делает
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Точнее не во всех шаблонах описывается клас <p class="readmore">
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
А можно как-то автоматически вставить код в *.php  - сделать что-то типа плагина - Joomla обновилась и загнал свой код?
*

draff

  • Живу я здесь
  • 3923
  • 262 / 7
  • Ищу работу
А в шаблоне сайта нету такого файлика
Нужно самому создать переопределение в шаблоне /templates/name_template/html/layouts\joomla\content\readmore.php
*

antarey

  • Захожу иногда
  • 105
  • 0 / 0
Нужно самому создать переопределение в шаблоне /templates/name_template/html/layouts\joomla\content\readmore.php
@draff отлично помогло - просто скопировал файл с сохранением пути. Хорошо, а если в шаблоне есть определение класса readmore  но нет файла readmore.php  и я его закину - у чего будет больший приоритет ? или надо просто пробовать?
*

draff

  • Живу я здесь
  • 3923
  • 262 / 7
  • Ищу работу
а если в шаблоне есть определение класса readmore  но нет файла readmore.php  и я его закину - у чего будет больший приоритет
Класс PHP ? Читайте ман про классы
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться