Борис И

Борис И

С нами с 20 апреля 2014; Место в рейтинге пользователей: #71
Василий Наумкин
06 января 2016, 09:04
4
+2
Я бы написал плагин на событие сохранения комментария:
if ($modx->event->name == 'OnBeforeCommentSave') {
	if (stripos($_POST['text'], 'b-nosov.blogspot') !== false) {
		$modx->event->output('Хватит спамить!');
	}
}
Email очень просто изменить, поэтому лучше проверять текст комментария на спамерскую ссылку.
Максим Кузнецов
04 января 2016, 17:17
1
+1
Написать свой сниппет, который будет записывать данные в сессию и исходя из этого формировать результат для сниппета. Допустим:

В чанке (баннера) вызываем сниппет, который будет записывать в сессию idx баннера:
[[!getBannerPosition? &mode=`write` &idx=`[[+idx]]`]]
<?php
	if ($mode == 'write') {
		$_SESSION['lastviewed'] = $idx;
	}
	else {
		$offset = $_SESSION['lastviewed'];
		if (empty($offset)) {
			return '0';
		}
		else {
			return $offset;
		}
	}

А в вызове BannerY допишем параметр &offset=`[[!getBannerPosition]]`, чтобы отображать еще не просмотренный баннер.

Можно также расширить сниппет, чтобы при $_SESSION['lastviewed'] == [[+banner.total]] — сбрасывать значение сессии, но, думаю, с этим уже проблем не возникнет.
Андрей
02 января 2016, 19:42
1
+1
В htaccess добавьте директиву:

php_flag register_globals off
99% что после этого все заработает.
Алексей
29 декабря 2015, 14:39
1
0
У меня подобная ситуация случилась при установке пакета tagManager. Его деинсталляция с последующим удалением не привело к результату. Замена содержимого файла:
/core/model/modx/processors/element/tv/renders/mgr/input/text.class.php
помогло.
Спасибо.
Виталий
11 декабря 2015, 13:18
2
0
А видел компоненты Андрея Чирко на эту тему?
modx.com/extras/package/aloha
modx.com/extras/package/frontendsimpleedit

Делали года 3 назад наверно — может быть будет полезно.
Владимир
10 декабря 2015, 18:51
1
+2
Вот отличный функционал (это отдельный сервис) playbuzz.com
SaLacoste
06 декабря 2015, 00:33
1
+1
Страница index.php статична (ее урл имею ввиду), то ее легко можно закрыть правилом редиректа.

Про sendRedirect прочитал в документации, без доп. параметров он ставит 302 редирект, что не есть хорошо в нашей ситуации.
Но 301 редирект предложенный Вами не отрабатывал у меня, поэтому я написал полную запись

<?php
if ($modx->event->name != "OnHandleRequest" || $modx->context->key == 'mgr') {
		return;
	}
	
	if ($_SERVER['REQUEST_URI'] != '/') {
		$uri = strtok(substr($_SERVER['REQUEST_URI'], 1), '?');
		
		if ($uri == 'index.php') {
			$uri = intval(str_replace('/index.php?id=', '', $_SERVER['REQUEST_URI']));
			//не уверен, нужна ли здесь проверка на наличие ресурса, т.к. в случае отсутствия оного, событие должно перехватить OnPageNotFound
			
			if(empty($uri)) {
				$url = 1;
			}
                        $modx->sendRedirect($modx->makeUrl($uri), 0, 'REDIRECT_HEADER', 'HTTP/1.1 301 Moved Permanently');
		}
	}
Так все работает.

И если уже мы заговорили про canonical, то этот тег не гарантирует поведение ПС в выдаче, может и с тегом выйти в выдачу.
Эта проблема актуальна для страниц пагинации, например. Так как по умолчанию ставится только canonical на вторых и следующих страницах. (Я на этот счет даже писал Василию), корректно отрабатывать пагинацию через noindex, follow.

Максим Кузнецов
03 декабря 2015, 17:12
1
+1
По первому пункту: добавьте tv-поле (например Ticket.Comments.Disallow — Отключить комментарии) к шаблону тикетов, тип — чекбокс, с возможным вариантом «да==1».

В самом шаблоне тикетов вывести конструкцию:

[[*Ticket.Comments.Disallow:is=`1`:then=`
	<div class="ticket-comments alert alert-warning">Комментарии отключены.</div>
`:else=`
	[[!TicketComments]]
`]]
Сергей Шлоков
19 октября 2015, 17:25
1
+1
Забыл написать, что есть небольшой баг MODX. Если определить параметры для одного сниппета, то при определении параметров для другого, ему присвоятся измененные параметры первого сниппета. Чтобы исправить это, нужно заменить файл отсюда.