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

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

[HOW-TO]Начало статьи - видно всем, продолжение - только зарегистрированным.

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

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

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


Сайты только на Joostina


« : 27.10.2011, 12:10:26 »

Для одного материала надо сделать так, чтобы начало статьи (т.е. то, что до тега hr id=system-readmore) было видно всем, а то, что после - только зарегистрированным (чтобы гостю при открытии статьи (не раздела!) показывался только анонс, а зарегистрированному - полностью).
Это возможно?

Joomla 1.5.20 Stable. Материал с доступом "Для зарегистрированных", в материале тег hr id="system-readmore" есть. Модуль и меню на этот материал с доступом "для всех".
Результат: гости не видят даже вводной части материала. Проблема в том, что гостю такая статья вообще не отдается.
« Последнее редактирование: 15.11.2011, 01:53:21 от Aleks_El_Dia » Записан
beliyadm
Профи
********

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

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


Севастополь == Россия


« Ответ #1 : 14.11.2011, 14:33:32 »

Элементарно, Ватсон
Выставляем везде в настройках контента и меню опцию "показывать вступительный текст"
Открываем components\com_content\models\article.php, находим примерно с 586 строки "// Are we showing introtext with the article" и заменяем на
Код
// Are we showing introtext with the article
$user =& JFactory::getUser();
if (!$params->get('show_intro') && !empty($this->_article->fulltext)) {
$this->_article->text = $this->_article->fulltext;
} else {
if($user->id) {
$this->_article->text = $this->_article->introtext . chr(13).chr(13). $this->_article->fulltext;
} else {
$this->_article->text = $this->_article->introtext. '<h3>please login first</h3>';
}
}

Теперь в режиме просмотра полной статьи если я не авторизован будет показываться только introtext и сообщение с просьбой авторизоваться
« Последнее редактирование: 15.11.2011, 01:50:32 от Aleks_El_Dia » Записан
Wild Tiger
Осваиваюсь на форуме
***

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

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


Сайты только на Joostina


« Ответ #2 : 14.11.2011, 15:20:53 »

ура, такая реализация работает! (что тогда выводит  \templates\ВашШаблон\html\com_content\article\default.php ?)

P.S. А как вместо сообщения (в примере в тегах <h3>) вывести текст из LOGIN_DESCRIPTION языкового файла?
замена $this->_article->text = $this->_article->introtext. '<h3>please login first</h3>';
на $this->_article->text = $this->_article->introtext. '<p>'.$LOGIN_DESCRIPTION;
не прокатила Azn
Записан
beliyadm
Профи
********

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

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


Севастополь == Россия


« Ответ #3 : 14.11.2011, 15:37:09 »

на $this->_article->text = $this->_article->introtext. '<p>'.$LOGIN_DESCRIPTION;
Ну что вы как маленькие Azn
Код
$this->_article->text = $this->_article->introtext. JText::_("LOGIN_DESCRIPTION");
И вписать LOGIN_DESCRIPTION в файл языка контента (на мой взгляд ради одной фразы подключать весь ини com_user не очень хорошо
Записан
Wild Tiger
Осваиваюсь на форуме
***

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

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


Сайты только на Joostina


« Ответ #4 : 14.11.2011, 16:54:37 »

Рано еще добавлять. Обнаружилась одна особенность: для незарегистрированных во всех статьях после текста материала теперь выводится приглашение зарегистрироваться (даже там, где кроме анонса ничего дальше нет, т.е. короткая статья "для всех"). Слишком назойливо получается.
Т.е. не хватает еще проверки "Если анонс есть, а продолжения нет, то приглашение не выводить".

(Каюсь, сам виноват, в описании исходной задачи не предвидел этого).
Записан
beliyadm
Профи
********

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

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


Севастополь == Россия


« Ответ #5 : 14.11.2011, 17:04:36 »

Т.е. не хватает еще проверки "Если анонс есть, а продолжения нет, то приглашение не выводить".
Код
$user =& JFactory::getUser();
if (!$params->get('show_intro') && !empty($this->_article->fulltext)) {
$this->_article->text = $this->_article->fulltext;
} else {
if($user->id) {
$this->_article->text = $this->_article->introtext . chr(13).chr(13). $this->_article->fulltext;
} else if(!$user->id && $this->_article->fulltext) {
$this->_article->text = $this->_article->introtext. JText::_("LOGIN_DESCRIPTION");
} else {
$this->_article->text = $this->_article->introtext;
}
}

Оно?
Записан
Wild Tiger
Осваиваюсь на форуме
***

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

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


Сайты только на Joostina


« Ответ #6 : 14.11.2011, 17:56:04 »

оно. Работает как и задумано.
Вот что значит настоящая техподдержка Azn
Записан
Страниц: [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