Хак, скрытые комментарии, [инструкция]
Для примера будем добавлять возможность скрывать в комментарии в Топики:
Первое (БД):
В таблицу {prefix}_topic вставляем строку с параметрами —
Второе(Скрипты):
В файле — classes\modules\topic\entity\Topic.entity.class.php
После
добавить
После
добавить
В файле — classes\actions\ActionTopic.class.php
после 165 строки
добавляем строку
В функции SubmitAdd
после
добавляем:
В функции SubmitEdit($oTopic)
после
Вставить
По желанию аналогичные действия проделываются в файлах:
— classes\actions\ActionAdmin.class.php
— classes\actions\ActionLink.class.php — для ссылок
— classes\actions\ActionQuestion.class.php — для топиков типа вопрос.
Третье (шаблоны и язык):
В файле шаблонов templates\skin\new\actions\ActionTopic\add.tpl (тему выбирайте свою, в данном случае редактируем тему NEW)
После блока:
Вставляем чекбокс для скрытых каментариев:
В данном случае получается что этот чекбокс будет виден при добавлении постов и при редактировании, для желающих которые хотят ограничить использование данной функции можно обрамить блок указанный выше в
Закрываем и забываем.
В файле templates\skin\new\actions\ActionBlog\comment.tpl отвечающем за вывод комментариев после строки
вставляем
Из этого условия можно выкинуть $oTopic->getUserIsBlogAdministrator() or $oTopic->getUserIsBlogModerator() or если не хотите чтобы комментарии видели модераторы и администраторы блога в который будет отправлен пост. В случае если это блог пользователя то он будет! видеть комментарии
В том же файле, перед
вставляем блок:
Переходим к языковому файлу — templates\language\russian.php:
1. после строки
Вставлем:
2. после строки
Вставляем
ВАЖНО:
По возможности рекомендую опробовать у себя на машине и отписать по результатам.
мог забыть какие-то детали включить в инструкцию…
Первое (БД):
В таблицу {prefix}_topic вставляем строку с параметрами —
`topic_publish_comments` tinyint(1) NOT NULL DEFAULT '0',
для ленивых ALTER TABLE `prefix_topic` ADD `topic_publish_comments2` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `topic_publish_index`
.Второе(Скрипты):
В файле — classes\modules\topic\entity\Topic.entity.class.php
После
public function getPublishIndex() {
return $this->_aData['topic_publish_index'];
}
добавить
public function getPublishComments() {
return $this->_aData['topic_publish_comments'];
}
После
public function setPublishIndex($data) {
$this->_aData['topic_publish_index']=$data;
}
добавить
public function setPublishComments($data) {
$this->_aData['topic_publish_comments']=$data;
}
В файле — classes\actions\ActionTopic.class.php
после 165 строки
$_REQUEST['topic_publish_index']=$oTopic->getPublishIndex();
добавляем строку
$_REQUEST['topic_publish_comments']=$oTopic->getPublishComments();
В функции SubmitAdd
после
/**
* Принудительный вывод на главную
*/
$oTopic->setPublishIndex(0);
if (getRequest('topic_publish_index')) {
$oTopic->setPublishIndex(1);
}
добавляем:
/**
* Скрытие комменатриев
*/
$oTopic->setPublishComments(0);
if (getRequest('topic_publish_comments')) {
$oTopic->setPublishComments(1);
}
В функции SubmitEdit($oTopic)
после
if ($this->oUserCurrent->isAdministrator()) {
/**
* Принудительный вывод на главную
*/
if (getRequest('topic_publish_index')) {
$oTopic->setPublishIndex(1);
} else {
$oTopic->setPublishIndex(0);
}
}
Вставить
/**
* Скрытие комменатриев
*/
if (getRequest('topic_publish_comments')) {
$oTopic->setPublishComments(1);
} else {
$oTopic->setPublishComments(0);
}
По желанию аналогичные действия проделываются в файлах:
— classes\actions\ActionAdmin.class.php
— classes\actions\ActionLink.class.php — для ссылок
— classes\actions\ActionQuestion.class.php — для топиков типа вопрос.
Третье (шаблоны и язык):
В файле шаблонов templates\skin\new\actions\ActionTopic\add.tpl (тему выбирайте свою, в данном случае редактируем тему NEW)
После блока:
{if $oUserCurrent->isAdministrator()}
<p><label for=""><input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if}/>
— {$aLang.topic_create_publish_index}</label><br />
<span class="form_note">{$aLang.topic_create_publish_index_notice}</span></p>
{/if}
Вставляем чекбокс для скрытых каментариев:
<!-- отметка для скрытия по умолчанию комментариев -->
<p><label for=""><input type="checkbox" id="topic_publish_comments" name="topic_publish_comments" class="checkbox" value="1" {if $_aRequest.topic_publish_comments==1}checked{/if}/>
— {$aLang.topic_create_publish_comments}</label><br />
<span class="form_note">{$aLang.topic_create_publish_comments_notice}</span></p>
В данном случае получается что этот чекбокс будет виден при добавлении постов и при редактировании, для желающих которые хотят ограничить использование данной функции можно обрамить блок указанный выше в
{if $oUserCurrent->isAdministrator()} ... {/if}
, для администратора.Закрываем и забываем.
В файле templates\skin\new\actions\ActionBlog\comment.tpl отвечающем за вывод комментариев после строки
{assign var="nesting" value="-1"}
тогда будет видна надпись Комменатрии (7) вставляем
{if $oTopic->getPublishComments()==0 or
($oUserCurrent and
(
$oUserCurrent->getId()==$oTopic->getUserId() or
$oUserCurrent->isAdministrator() or
$oTopic->getUserIsBlogAdministrator() or
$oTopic->getUserIsBlogModerator() or
$oTopic->getBlogOwnerId()==$oUserCurrent->getId()
)
) }
, если нет желания показывать пользователям сколько уже оставлено комментариев, то вставить этот блок перед <!-- Comments Header -->
Из этого условия можно выкинуть $oTopic->getUserIsBlogAdministrator() or $oTopic->getUserIsBlogModerator() or если не хотите чтобы комментарии видели модераторы и администраторы блога в который будет отправлен пост. В случае если это блог пользователя то он будет! видеть комментарии
В том же файле, перед
<span id="comment-children-0"></span>
вставляем блок:
{else}
<p>{$aLang.comment_cases_in_work}</p>
{/if}
Переходим к языковому файлу — templates\language\russian.php:
1. после строки
'topic_create_publish_index_notice' => 'Если отметить эту галку, то топик сразу попадёт на главную страницу (опция доступна только администраторам)',
Вставлем:
'topic_create_publish_comments' => 'Скрывать комментарии',
'topic_create_publish_comments_notice' => 'Если отметить эту галку, то комментарии в топике будут крыты пока она стоит.',
2. после строки
'comment_unregistered' => 'Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.',
Вставляем
'comment_cases_in_work' => 'Владелец блога скрыл комментарии',
ВАЖНО:
По возможности рекомендую опробовать у себя на машине и отписать по результатам.
мог забыть какие-то детали включить в инструкцию…
8 комментариев
к сожалению мог забыть какие-то детали включить в инструкцию…
теряеш контакты и просиш чтобы те кто у тебя был в книжке накидали свои тлефоны и не светить их всем.
или например организовавается викторина, и чтобы пользователи не видели правильного ответа (если кто-то правильно ответил) можн оскрить коменты. после окончания викторины их показать.
это скорее получается одностороння связь, так как на коментарий может ответить админ/владелец дока, но это не предусматривается, разве что получит сообщение на почту.
но все равно спасибо. плюсик за псто :)
По возможности глянем в приближении)