Вывод текста комментария в прямой эфир и ссылки на топик комментария

Всем привет! Я в блоке прямой эфир вывел текст комментария в 200 символов так

<a href="{if $oConfig->GetValue('module.comment.nested_per_page')}{router page='comments'}{else}{$oTopic->getUrl()}#comment{/if}{$oComment->getId()}" class="stream-topic">{$oComment->getText()|strip_tags|trim|truncate:200:'...'|escape:'html'}</a>


А ссылку на топик сделать не могу. Не могу переписать код, чтобы была ссылка на пост, а не комментарий в этом посте

<a href="{if $oConfig->GetValue('module.comment.nested_per_page')}{router page='comments'}{else}{$oTopic->getUrl()}#comment{/if}{$oComment->getId()}" class="stream-topic">{$oTopic->getTitle()|escape:'html'}</a>


Заранее благодарен!

18 комментариев

avatar
Привет! Коротко:

<a href="{$oTopic->getUrl()}" class="stream-topic">{$oTopic->getTitle()|escape:'html'}</a>
  • dex-
  • +1
avatar
Спасибо! Вопрос решился, оказалось, Sublime text странным образом поломался и не сохранял изменения
avatar
Я еще наберусь наглости, помощи попросить) Последняя мелочь осталась, которая не получается
Не могу переделать input checkbox подписки на комментарии на подписку по клику на иконку glyphicons

Исходный код

{if $bAllowSubscribe and $oUserCurrent}
				<div class="hidden-xs text-muted subscribe">
					<div class="checkbox">
						<label>
							<input {if $oSubscribeComment and $oSubscribeComment->getStatus()}checked="checked"{/if} 
type="checkbox" id="comment_subscribe" class="input-checkbox" onchange="ls.subscribe.toggle('{$sTargetType}_new_comment','{$iTargetId}','',this.checked);">
							{$aLang.comment_subscribe}
						</label>
					</div>
				</div>
			{/if}
avatar
К сообщению выше.
Сделал иконку, повесил onclick на ссылку, каким условием проверить подписан ли юзер на комментарии, чтобы были разные css иконки для подписанных и не подписанных пользователей?
class="subscribe {if здесь должно быть условие}active{/if}
avatar
Получите список подписок пользователя. И яваскриптом проверьте, есть ли блог в списке подписок пользователя.
avatar
Ну, такое я точно не напишу! Я не программист, я сеошник. Попроще ничего нет?
Например, при добавлении топика в избранное, css для подписавшихся так меняются
class="favourite {if $oUserCurrent && $oTopic->getIsFavourite()}active{/if}


В style.css соответственно прописаны стили для .favourite и .favourite.active
Для подписки на комменты тоже наверное что-нибудь есть!?!?
avatar
class=«subscribe {if $oSubscribeComment and $oSubscribeComment->getStatus()}active{/if}
avatar
Это первое, что попробовал, но не работает
avatar
Это хорошо что попробовали. В таком случае очевидно что в файл шаблона (.tpl) не передается объект $oSubscribeComment.
Так как вы не написали что за шаблон редактируется, то я не могу написать конкретно что сделать.
Вариантов 2:
1. Если шаблон includ'ится в другой шаблон, где использование $oSubscribeComment работает, то нужно поменять инклуд на следующий:
{include file='конечный шаблон.tpl' oSubscribeComment=$oSubscribeComment}

2. Если это сделать невозможно, то нужно получить и передать этот объект из PHP кода, ответственного за вывод этого шаблона, методом
$this->Viewer_Assign("oSubscribeComment",$oSubscribeComment);
avatar
Шаблон maxone. В исходном коде шаблона условие if $oUserCurrent && $oTopic->getIsFavourite() прописано и работает

{if $bAllowSubscribe and $oUserCurrent}
				<div class="hidden-xs text-muted subscribe">
					<div class="checkbox">
						<label>
							<input {if $oSubscribeComment and $oSubscribeComment->getStatus()}checked="checked"{/if} 
type="checkbox" id="comment_subscribe" class="input-checkbox" onchange="ls.subscribe.toggle('{$sTargetType}_new_comment','{$iTargetId}','',this.checked);">
							{$aLang.comment_subscribe}
						</label>
					</div>
				</div>
			{/if}
avatar
$oUserCurrent и $oTopic работают потому что они переданы в шаблон, а $oSubscribeComment это совсем другой объект. Было бы не разумно передавать на каждую страницу все объекты движка.
avatar
код смотрите внимательнее
<input {if $oSubscribeComment and $oSubscribeComment->getStatus()}checked=«checked»{/if} type=«checkbox» id=«comment_subscribe» class=«input-checkbox» onchange=«ls.subscribe.toggle('{$sTargetType}_new_comment','{$iTargetId}','',this.checked);»>
avatar
Если все работает тогда что еще нужно? Или дайте весь код всех файлов.
avatar
На чекбоксе работает на кнопке нет. Исходный код шаблона выше. То, что есть сейчас

{if $bAllowSubscribe and $oUserCurrent}
				
<a href="#" onclick="ls.subscribe.toggle('{$sTargetType}_new_comment','{$iTargetId}','',this.checked); return false;" id="comment_subscribe" class="sublink{if $oSubscribeComment and $oSubscribeComment->getStatus()}active{/if}"><span class="icon-heart"></span></a>
							
					
			{/if}


Остальной код наверное в ядре
avatar
class="sublink {if $oSubscribeComment and $oSubscribeComment->getStatus()}active{/if}

Забыли пробел
avatar
Да нет, не работает ни с пробелом, ни без
avatar
Тебе нужно править JS функцию ls.subscribe.toggle, потому что ты передаешь в нее аргумент this.checked, а тег не может быть checked в отличии от input.
avatar
Думаю нужно в js шаблона прописать добавление/удаление класса active по хуку в функции ls.subscribe.toggle
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.