Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.
Форум  ->   Разработка плагинов, вопросы по API  ->  Условие в шаблон


Показать все сообщения в этой ветке


Добавлено: 27.08.12 21:03:57  




Регистрация: 22.08.12
Сообщений: 7


Обратиться по имени

Спасибо, сделал.
Даже расскажу как .

1. Добавил дополнительное поле к Пользователям через Сервис -> Набор полей -> Доп.поля.
При этом галочка "не показывать в общем списке" или как-то так, чтобы было видно только в админке, а не пользователю.

Т.к. нельзя было добавить сразу Select box, а только input type=text (строка/число), добавил числом, а в шаблоне (/_admin/templates/member.tpl) JS'ом подменяю его на select:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
<!--
    $(function(){
    var x = '<select name="cf_secret_access"><option value="0">Нет</option><option value=1';
    var secret_f = $('input[name="cf_secret_access"]');

    if (secret_f.val() == 1) x += ' selected';
    x += '>Да</option></select>';

    secret_f.replaceWith(x);
    });
//-->
</script>


2. В /_local/front_functions.php написал функцию получению статуса, вот код:
	function __secret_allowed() {
		global $frn, $secret_allowed;
		if(isset($secret_allowed) && $secret_allowed) {
			$res = $secret_allowed;
		} else {
			$res = 0;
			if(is_object($frn->Member) && $frn->Member->isLoggedIn()) {
				$x = @mysql_fetch_row(mysql_query('select `cf_secret_access` from `cms_members` where `id`="'.$frn->Member->User['id'].'"'));
				if ($x && !empty($x) && $x[0]) {
					$res = $secret_allowed = 1;
				} else {
					$res = $secret_allowed = 0;
				}
			}
		}
		return $res;
	}


В описаниях и везде используется тег <secret>секретные данные</secret>.
И для его обработки в той же front_functions.php в функцию CustomApplyVars ввёл следующее:
	function CustomApplyVars(&$vObject, $cThread, &$aVars, $pageId = 0){
		if ($cThread == 'page_finalize') {
			$i = strpos($aVars,'<secret>');
			if ($i === false) {
				return true; // not found
			} else {
				$aVars = __parseDesc($aVars);
			}
		}
		return true;
	}

В том же файле, соответственно, функция __parseDesc проверяет весь текст на <secret></secret> и меняет их в зависимости от результата __secret_allowed() или на <div class=secret></div>; или вырезает.

Авось кому поможет .

зы. Алекс, спасибо за вклад!



0


Создать новую тему Ответить