Андрей Коробков

Андрей Коробков

С нами с 10 января 2017; Место в рейтинге пользователей: #283
Андрей Коробков
31 мая 2018, 16:42
0
Редактировать уже не могу — выше написан баг репот github.com/Sterc/FormIt/issues/170 — там как раз предлагают добавить в if условие вместе с $this->formit->hasHook('recaptcha')
а там в самом hasHook — return strpos($this->config['hooks'], $hook) !== false;
а сам вызов if ($this->formit->hasHook('recaptcha')) {… — тут подключаются классы рекапчи от formIt
Андрей Коробков
31 мая 2018, 14:12
0
Как раз сейчас этим занимаюсь, вернее само решение делал давно, докручиваю к нему рекапчу и косметические правки. У меня так сделано — сами вопросы как отдельные ресурсы, у которых доп.поля — имя, емайл, тема, сам вопрос. Ответ пишется в контенте. Форма вопроса через formIt (через AjaxForm), с вызовом хука-сниппета, который создает неопубликованный дочерний ресурс в вопросах с заполнением всех полей, formIt уже отправляет отчет на емайл. Если нужен такой подход — сообщите.
Андрей Коробков
31 мая 2018, 13:20
1
0
Как временное решение — сделайте копию сниппета recaptchav2, назовите его по-другому, например re_captchav2, соответственно в вызове &hooks=`re_captchav2,...`.
Там дело в чем — formIt проверяет функцией strpos (вроде ей или типа нее, недели две назад как раз тоже самое было — разбирался, как раз в обновленном formIt), присутствует ли в hooks слово recaptcha, если присутствует — пытается загрузить свои классы для рекапчи — а там ошибка возникает, не вдавался уже в детали, некогда было.
Андрей Коробков
08 марта 2018, 22:42
0
Скорее всего с сайтом не связано — до него эти запросы даже не дошли — коды ответа — 400 Bad Request — ошибочный запрос, и 408 Request Timeout — клиент соединился, но что то долго передает свой запрос (либо не передает). Копайте конфиг сервера, вполне возможно, что не хватает соединений, к примеру из-за ru.wikipedia.org/wiki/SYN-флуд

была подобная ерунда даавно, и временами действительно сервер долго отвечал, и непонятно по какой причине — нагрузка минимальная, после гугления сделал так — поставил
net.ipv4.tcp_syncookies = 1 ( ru.wikipedia.org/wiki/SYN_cookies ).

Потом уже настроил примерно так romantelychko.com/blog/1300/

Есть и другой вариант — если сайт на простом хостинге (особенно если сервер загружен) — плавающие тормоза сервера (от нагрузки соседей). Буквально пару недель назад — у товарища сайт в руцентре (nic.ru) — также в вебастере стали появляться сообщения, что время ответа бывает более 3 сек. Стали разбираться — в поддержку написали, те говорят — неа, у нас все ок, приводят скрин с тестом доступа с разных серверов (есть такой сервис) — им объясняем, что проблема плавающая — те наотрез, что у них все ок, смотрите мол свои скрипты. Решили пологгировать тайминги — в index.php напрямую код встроил и в конфиг nginx добавил, чтобы велся дополнительный лог обращений только к страницам со своим форматом, в частности туда добавил $request_time — результаты ужаснули — у 5% запросов время ответа более 3сек (были и более 10-20сек), ~15% — более 1 секунды и это кешированные самые простые страницы, у которых без тормозов и не кешированный — 0.2-0.3сек. Дальше в техподдержке соизволили отмолчаться, ну а сайт успешно переехал на vds. Попробуйте пологгировать времена ответа, лучше через лог nginx.

Кстати, вопрос — в вебмастере давно эту штуку ввели — контроль времени ответа? Если сравнительно недавно — какова вероятность массовой миграции с недохостингов?
Андрей Коробков
08 марта 2018, 20:57
1
+2
Проблему нужно решать не с BannerY, а с mysql — у вас включен only_full_group_by — строгий режим группировки (как раз появился в mysql 5.7 и включен по умолчанию). Не только BannerY ошибку выдает, некоторые другие компоненты тоже будут выдавать. Этот режим нужно отключить. У вас vps — заходите в шелл, там:

mysql -u root -p

после -p — пароль (если установлен)

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY,", ""));
mysql> SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY,", ""));

Но после перезагрузке сервера все вернется. Поэтому в /etc/mysql/my.cnf находим строку

sql_mode = «ONLY_FULL_GROUP_BY, другие режимы...» и удаляем оттуда ONLY_FULL_GROUP_BY,

скорее всего этой строки там даже не будет, тогда на предыдущем шаге (когда находимся в строке mysql>) — вводим
SELECT @@sql_mode;
выдаст текущий список режимов

вставляем в файл /etc/mysql/my.cnf после [mysqld]
sql_mode = "текущий список режимов"
примерно так будет:
[mysqld]  
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

подробности в гугле.
Андрей Коробков
17 августа 2017, 02:30
0


на сервере php 7.0.5, modx 2.5.2-pl, пробовал в опере 46.0.2597.57 и edge
Андрей Коробков
05 июля 2017, 23:14
0
tpl попробуйте перенести в чанк (вместо @INCLUDE)
и
<!-- Запускаю выборку нужных складов в ячейке Склад.....
перед ним проверку нужно сделать, что tv.sklad-id не пустой

во вложенном pdoResources
&includeTVs=`sklad-id`
лишнее — не используется
Андрей Коробков
05 июля 2017, 23:03
0
Тупанул слегка… Хотя работать должно… Почему не используете плейсходеры
<div class="divtable"> <!-- Вывожу заголовки таблицы -->
	<div class="divtable-row divtable-row__title">
		<div class="divtable-col divtable-col__name">Наименование товара</div>
		<div class="divtable-col divtable-col__spec">Спецификация</div>
		<div class="divtable-col divtable-col__adr">Склад</div>
		<div class="divtable-col divtable-col__nds">Цена с НДС за тонну СРТ*</div>
		<div class="divtable-col divtable-col__nonds">Цена без НДС за тонну</div>
	</div>

<!-- Первая выборка формирует строки таблицы с видами продукции -->	
[[!pdoResources?
	&tpl=`@INLINE 
	<div class="divtable-row">
		<div class="divtable-col divtable-col__name">[[+pagetitle]]</div>
		<div class="divtable-col divtable-col__spec">[[+tv.specifikaciya]]</div>
		<div class="divtable-col divtable-col__adr">

			<!-- Запускаю выборку нужных складов в ячейке Склад, где в параметр &resources  хочу подсунуть полученный плейсхолдер skladID, который должен содержать нужные айдишники складов из дополнительного поля ресурса продукции sklad-id  -->
			[[!pdoResources?
				&parents=`28`
				&tplWrapper=`@INLINE <ol> [[+output]]</ol>`
				&tpl=`@INLINE <li><a class="popup-modal" href="#[[+id]]">[[+pagetitle]]</a></li>`
				&sortby=`publishedon`
				&sortdir=`DESC`
				&depth=`0`
				&includeTVs=`sklad-id`
				&resources=`[[+tv.sklad-id]]`
			]]
		
		</div>

		<div class="divtable-col divtable-col__nds">[[+tv.nds]]</div>
		<div class="divtable-col divtable-col__nonds">[[+tv.nonds]]</div>
	</div>
	`
	&sortby=`menuindex`
	&sortdir=`ASC`
	&parents=`21`
	&depth=`0`
	&includeTVs=`specifikaciya,sklad,sklad-id,nds,nonds`
]]
</div>

напоминает чем то анекдот, как текст распечатали, потом отсканировали, картинку вставили в ворд и отправили
Андрей Коробков
05 июля 2017, 22:48
0
бедный сервер:(… Как писал выше, все это полностью нужно переписать… На сейчас думаю поможет следующее:
Копируете сниппет sklady например в sklady1, содержание:
$idskladov = "";
if ($resource = $modx->getObject('modResource', $id)) {
	$idskladov = $resource->getTVValue('sklad-id');
}
return $idskladov;
Убираете вызов
[[!sklady? &id=`[[+id]]`]]
И вместо
&resources=`[[+skladID]]`
вставляете
&resources=`[[!sklady1? &id=`[[+id]]`]]`
не уверен, правда, что парсер это переварит
Андрей Коробков
05 июля 2017, 20:56
0
при использовании jquery-2.2.0.min.js не работает фильтрация и пропадают ползунки цены.
посмотрите какая версия jquery ui используется (за ползунки ui отвечает), скорее всего просто не совместима с jquery 2.2, подключите совместимую версию

Сам стараюсь не пользовать jquery 3, самое первое, что отпугнуло — там window load срабатывает раньше, чем document ready.
Андрей Коробков
05 июля 2017, 20:39
+1
Может вопрос поставлен неверно? Зачем вам запихивать sklad-id в skladID, чем не устраивает нативный плейсхолдер sklad-id? Приведите код
Андрей Коробков
05 июля 2017, 00:57
0
Немного поменять архитектуру, — в сниппете должны приниматься параметры, и он должен принимать параметры, как то так:
[[!sklady? &id=`[[*id]]`]]
внутри выборки так:
[[!sklady? &id=`[[+id]]`]]
или типа того… А лучше продумайте архитектуру
Андрей Коробков
05 июля 2017, 00:47
0
Михаил, еще два вопроса:
1. Любую — это какую? Режим работы возможно получить (дни недели, время)?
2. Сайт на поддоменах, т.е. каждый город — поддомен — будет на них работать?
Андрей Коробков
05 июля 2017, 00:26
0
На evo заработался:) 3 — так
[[!sklady]]
Андрей Коробков
05 июля 2017, 00:08
0
Михаил, спасибо за быстрый ответ. Сниппет получает только адреса? Какие-нибудь координаты выдаются (google, ya)?
Автодополнение — это от кого использовать?
Андрей Коробков
04 июля 2017, 23:56
+1
1.
$idskladov = $modx->resource->getTVValue('sklad-id');
2. Кавычки возможно не те, уберите
$modx->setPlaceholder('skladID', $idskladov);
3. Думаю, что сниппет нужно вызывать не кешированным (не факт, что обязательно):
[!sklady!]
Андрей Коробков
04 июля 2017, 23:45
0
Михаил, возможно ли через ваш компонент для определенного списка городов, получать адреса офисов? Желательно с координатами google.maps
Андрей Коробков
07 апреля 2017, 15:59
0
Для чего мне это нужно.
Задача плагина — взять не распарсенный content ($modx->resource->get('content');), найти в нем картинки, те, у которых реальный размер больше отображаемого (заданный через width/height) — пропустить через phpthumbon (или подобный), заменить на шаблон типа <img src=«thumb_image»....>. Далее $modx->resource->set('content', $content);… Сам код написан и работает.
Проблема в том, что, когда ресурс берется из кеша — $modx->resource->get('content') — получает данные с уже замененными картинками. Временно проблему решил проверкой папки в которой картинка, но хотелось бы сделать правильно. Подскажите, пожалуйста
Андрей Коробков
18 марта 2017, 13:44
0
начитался сравнений — вот и выбрал xen