вопрос
Здравия желаю!
Есть сайт, который функционирует на DataLife Engine v.9.7 Final Release. Понадобилась реализация такой функции. В файлах шаблона fullstory.tpl и shortstory.tpl надо каким-то образом определить, является ли залогиненный пользователь автором данной статьи.
Поясню. На сайте среди прочих групп пользователей есть две: Авторы и Почетные авторы. Обе эти группы имеют право добавлять новости на сайт и редактировать свои новости. Разница лишь при просмотре новостей на сайте. Авторам доступны для просмотра новостей лишь определенные поля, а почетным авторам доступны все поля. Так для Авторов, например, при просмотре странички с полной новостью, вместо полной новости надо вывести краткую новость (анонс). Для реализации этой функции в файле шаблона fullstory.tpl я использовал примерно такой фрагмент кода:
Получается, что при просмотре странички с конкретной новостью Авторы не видят полного содержимого статьи. Собственно так и надо. Но в то же время, если я автор данной статьи, вошел на сайт под своим логином, то я должен видеть ее полный текст. То есть, если предположить, что для файла-шаблона fullstory.tpl существовали бы, к примеру, дополнительные теги [this-story-your-author] и [not-this-story-your-author], которые проверяли бы, является ли автором статьи юзер, вошедший в данный момент на сайт, то код можно было бы написать так:
Надеюсь, понятно изложил суть проблемы. Может, кто-нибудь знаете, как решить данную задачу, или как зарегистрировать и создать в DLE 9.7 дополнительные собственные теги. Буду премного благодарен.
Есть сайт, который функционирует на DataLife Engine v.9.7 Final Release. Понадобилась реализация такой функции. В файлах шаблона fullstory.tpl и shortstory.tpl надо каким-то образом определить, является ли залогиненный пользователь автором данной статьи.
Поясню. На сайте среди прочих групп пользователей есть две: Авторы и Почетные авторы. Обе эти группы имеют право добавлять новости на сайт и редактировать свои новости. Разница лишь при просмотре новостей на сайте. Авторам доступны для просмотра новостей лишь определенные поля, а почетным авторам доступны все поля. Так для Авторов, например, при просмотре странички с полной новостью, вместо полной новости надо вывести краткую новость (анонс). Для реализации этой функции в файле шаблона fullstory.tpl я использовал примерно такой фрагмент кода:
[group=1,2,3,7] <!-- Привилегированные пользователи, в число которых входят и Почетные авторы -->
Открыть /engine/modules/show.full.php и найти:if ( $row['votes'] ) {
$tpl->set( '[poll]', "" );
$tpl->set( '[/poll]', "" );
$tpl->set_block( "'\\[not-poll\\](.*?)\\[/not-poll\\]'si", "" );
} else {
$tpl->set( '[not-poll]', "" );
$tpl->set( '[/not-poll]', "" );
$tpl->set_block( "'\\[poll\\](.*?)\\[/poll\\]'si", "" );
}
после вставить:if( $member_id['name'] == $row['autor'] ) {
$tpl->set( '[allowauthor]', "" );
$tpl->set( '[/allowauthor]', "" );
$tpl->set_block( "'\\[not-allowauthor\\](.*?)\\[/not-allowauthor\\]'si", "" );
} elseif ( $member_id['name'] !== $row['autor'] ) {
$tpl->set( '[not-allowauthor]', "" );
$tpl->set( '[/not-allowauthor]', "" );
$tpl->set_block( "'\\[allowauthor\\](.*?)\\[/allowauthor\\]'si", "" );
}
В шаблоне fullstory.tpl использовать теги:[allowauthor]Для авторов[/allowauthor]
[not-allowauthor]Для лохов[/not-allowauthor]
<div class="DivStoryPages">{pages}</div>
[/group]
[not-group=1,2,3,7] <!-- Остальные пользователи, в том числе и простые Авторы -->
{short-story}
<div class="DivClear"></div>
<div class="berrors">Внимание! Вам недоступно полное содержание материалов на сайте.</div>
<br />
[/not-group]
Получается, что при просмотре странички с конкретной новостью Авторы не видят полного содержимого статьи. Собственно так и надо. Но в то же время, если я автор данной статьи, вошел на сайт под своим логином, то я должен видеть ее полный текст. То есть, если предположить, что для файла-шаблона fullstory.tpl существовали бы, к примеру, дополнительные теги [this-story-your-author] и [not-this-story-your-author], которые проверяли бы, является ли автором статьи юзер, вошедший в данный момент на сайт, то код можно было бы написать так:
[this-story-your-author] <!-- Вы автор данной статьи -->
Открыть /engine/modules/show.full.php и найти:if ( $row['votes'] ) {
$tpl->set( '[poll]', "" );
$tpl->set( '[/poll]', "" );
$tpl->set_block( "'\\[not-poll\\](.*?)\\[/not-poll\\]'si", "" );
} else {
$tpl->set( '[not-poll]', "" );
$tpl->set( '[/not-poll]', "" );
$tpl->set_block( "'\\[poll\\](.*?)\\[/poll\\]'si", "" );
}
после вставить:if( $member_id['name'] == $row['autor'] ) {
$tpl->set( '[allowauthor]', "" );
$tpl->set( '[/allowauthor]', "" );
$tpl->set_block( "'\\[not-allowauthor\\](.*?)\\[/not-allowauthor\\]'si", "" );
} elseif ( $member_id['name'] !== $row['autor'] ) {
$tpl->set( '[not-allowauthor]', "" );
$tpl->set( '[/not-allowauthor]', "" );
$tpl->set_block( "'\\[allowauthor\\](.*?)\\[/allowauthor\\]'si", "" );
}
В шаблоне fullstory.tpl использовать теги:[allowauthor]Для авторов[/allowauthor]
[not-allowauthor]Для лохов[/not-allowauthor]
<div class="DivStoryPages">{pages}</div>
[/this-story-your-author]
[not-this-story-your-author] <!-- Вы не автор данной статьи -->
[group=1,2,3,7] <!-- Привилегированные пользователи, в число которых входят и Почетные авторы -->
Открыть /engine/modules/show.full.php и найти:if ( $row['votes'] ) {
$tpl->set( '[poll]', "" );
$tpl->set( '[/poll]', "" );
$tpl->set_block( "'\\[not-poll\\](.*?)\\[/not-poll\\]'si", "" );
} else {
$tpl->set( '[not-poll]', "" );
$tpl->set( '[/not-poll]', "" );
$tpl->set_block( "'\\[poll\\](.*?)\\[/poll\\]'si", "" );
}
после вставить:if( $member_id['name'] == $row['autor'] ) {
$tpl->set( '[allowauthor]', "" );
$tpl->set( '[/allowauthor]', "" );
$tpl->set_block( "'\\[not-allowauthor\\](.*?)\\[/not-allowauthor\\]'si", "" );
} elseif ( $member_id['name'] !== $row['autor'] ) {
$tpl->set( '[not-allowauthor]', "" );
$tpl->set( '[/not-allowauthor]', "" );
$tpl->set_block( "'\\[allowauthor\\](.*?)\\[/allowauthor\\]'si", "" );
}
В шаблоне fullstory.tpl использовать теги:[allowauthor]Для авторов[/allowauthor]
[not-allowauthor]Для лохов[/not-allowauthor]
<div class="DivStoryPages">{pages}</div>
[/group]
[not-group=1,2,3,7] <!-- Остальные пользователи, в том числе и простые Авторы -->
{short-story}
<div class="DivClear"></div>
<div class="berrors">Внимание! Вам недоступно полное содержание материалов на сайте.</div>
<br />
[/not-group]
[not-this-story-your-author]
Надеюсь, понятно изложил суть проблемы. Может, кто-нибудь знаете, как решить данную задачу, или как зарегистрировать и создать в DLE 9.7 дополнительные собственные теги. Буду премного благодарен.
Открыть /engine/modules/show.full.php и найти:
после вставить:
В шаблоне fullstory.tpl использовать теги:
if ( $row['votes'] ) {
$tpl->set( '[poll]', "" );
$tpl->set( '[/poll]', "" );
$tpl->set_block( "'\\[not-poll\\](.*?)\\[/not-poll\\]'si", "" );
} else {
$tpl->set( '[not-poll]', "" );
$tpl->set( '[/not-poll]', "" );
$tpl->set_block( "'\\[poll\\](.*?)\\[/poll\\]'si", "" );
}
после вставить:
if( $member_id['name'] == $row['autor'] ) {
$tpl->set( '[allowauthor]', "" );
$tpl->set( '[/allowauthor]', "" );
$tpl->set_block( "'\\[not-allowauthor\\](.*?)\\[/not-allowauthor\\]'si", "" );
} elseif ( $member_id['name'] !== $row['autor'] ) {
$tpl->set( '[not-allowauthor]', "" );
$tpl->set( '[/not-allowauthor]', "" );
$tpl->set_block( "'\\[allowauthor\\](.*?)\\[/allowauthor\\]'si", "" );
}
В шаблоне fullstory.tpl использовать теги:
[allowauthor]Для авторов[/allowauthor]
[not-allowauthor]Для лохов[/not-allowauthor]