Максим Кузнецов

Максим Кузнецов

С нами с 01 июля 2013; Место в рейтинге пользователей: #27
Максим Кузнецов
19 февраля 2015, 09:34
0
mFilter2 реализует фильтрацию найденных результатов. Соответственно, т.к. в найденных результатах есть ресурсы с тв только со значением «черное» — он и отобразит лишь этот цвет.

Соответственно, если вы хотите вывести все «возможные» значения, при том что их еще нет в фильтруемом списке (а значит при выборе их по-умолчанию фильтр выдаст «подходящих товаров не найдено»), вам нужен свой шаблон вывода (кастомный чанк) и своя логика фильтрации.
Максим Кузнецов
19 февраля 2015, 06:58
0
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ { //выбирать желаемые форматы
	try_files			$uri $uri/ @rewrite;

	access_log			off;
	expires				10d; // время хранения
	break;
}
Максим Кузнецов
19 февраля 2015, 06:54
0
Это не нормально.

max_user_connections = лимит одновременного подключения к бд.

Вылечить — для начала оптимизировать сниппеты и минимизировать (сгруппировать) запросы к бд.
Максим Кузнецов
19 февраля 2015, 06:52
2
+1
Добрый. Вы имеете ввиду с фронтэнда (в админке есть соответствующие переключатели)?

Тогда можно реализовать так (привожу простой пример-портянку, по-чистому выйдет довольно много изменений):
а) создаем 2 tv и присваиваем нужным шаблонам (их можно скрыть в админке) — ticket_pub_date и ticket_unpub_date

б) подключаем тв в вызов TicketForm и создаем необходимые формы в шаблоне (инпуты для даты, можно навесить маски с jquery, например datetimepicker)

в) создаете плагин на событие OnDocFormSave, перехватывающий значение полей и вставляющих их в pub_date и unpub_date:
<?php
	if ($modx->event->name == 'OnDocFormSave') {
		$pub_value = $resource->getTVValue('ticket_pub_date');
		$unpub_value = $resource->getTVValue('ticket_unpub_date');
		
		if (strlen($pub_value) > 0) {
			$resource->set('pub_date',$pub_value);
		}
		if (strlen($unpub_value) > 0) {
			$resource->set('unpub_date',$unpub_value);
		}
		
		$resource->save();
	}
Максим Кузнецов
19 февраля 2015, 06:37
0
Шаблон для вывода — в настройках сниппета: &tplFilter.row.tv|твое_тв=`шаблон`

Если же логика сортировки своя, то менять и методы фильтрации (http://docs.modx.pro/components/msearch2/extension/filtering-methods)
Максим Кузнецов
19 февраля 2015, 06:34
0
Плагином, скорее всего, на событие OnDocFormSave перехватывать значение, видоизменять и сохранять. Примерно вот так:

<?php
	if ($modx->event->name == 'OnDocFormSave') {
		$metro = $resource->getTVValue('metro');
		
		
		if (strlen($metro) > 0) {
			$newMetroValue = ... //видоизменяешь как тебе необходимо (разбиваешь массив и тд)
			
			$resource->setTVValue('metro', $newMetroValue);
		}
		
		$resource->save();
	}
Максим Кузнецов
18 февраля 2015, 20:45
0
Без конкретного примера — можно только сказать в общих чертах — кэшировать все, что можно +оптимизировать свои пхп-скрипты, чтобы было минимум запросов к бд.

Как правило, еще из основных «ошибкок» при написании сайта на модксе — вызов сниппетов в сниппете, излишние вложенности чанков и тд. Т.е. в таких вызовах — писать свои запросы заместо «готовых» решений — и сайт будет летать.)
Максим Кузнецов
14 февраля 2015, 17:12
0
Смотреть при помощи pdoField родительский контейнер определенного уровня от корня и исходя из него плагином прятать поля как вариант? (если у вас 2 категории товаров — гладильная техника и швейная)
Максим Кузнецов
14 февраля 2015, 10:44
0
Можно реализовать заполнение для товаров со стороны админки при помощи tv, а плагином при сохранении дублировать их в свойства товаров и выводить во фронте уже эти свойства.
Максим Кузнецов
13 февраля 2015, 03:44
0
Еще можно повесить плагин на событие OnUserFormSave или подобное, чтобы полностью исключить возможность изменения полей до не желаемого уровня (к примеру, допустимые поля в профиле меняются селектами в пределах определенных значений).
Максим Кузнецов
11 февраля 2015, 17:09
0
Оптимизация + хорошие характеристики сервера = справится.

Вообще, «300-600 тысяч», оторванных от функционала и способах его реализации = нагрузка только на серверную часть.
Лучше опишите, какой объем документов/ресурсов на сайте и основные процессы.
Максим Кузнецов
11 февраля 2015, 15:26
+1
Попробовал изменить опции меню более «мягким» образом:

1) создаем плагин adminMenuFix и включаем его на событие OnManagerPageBeforeRender:
<?php
	$modx->controller->addHtml('<link rel="stylesheet" type="text/css" media="screen" href="../admin.css" />');
2) в корень сайта (или в любое желаемое место, но тогда в пункте 1 исправляем путь) создаем документ admin.css со стилем
#modx-navbar li:hover ul.modx-subnav {
-webkit-transition-delay: 5s !important;
transition-delay: 5s !important;
}
— меню появляется с указанной задержкой.

P.s. данный способ изменяет скорость появления ВСЕХ вертикальных выпадающих табов. Если необходимо изменить скорость у чего-то конкретного — завязывайте стили ксс на уникальных классах/id.
Максим Кузнецов
10 февраля 2015, 18:22
+2
Так, эм… вон вверху навигации этого сайта кнопка «хостинг»..)
Максим Кузнецов
10 февраля 2015, 17:47
0
Возникла та же проблема — но только при переходе на версию 2.3.3. Решил заменой хостинга (не реклама, но скорость вышла почти сопоставимая).
Ну или как альтернатива — ждать патч на ajaxmanager.
Максим Кузнецов
10 февраля 2015, 17:35
0
1. Можно сделать табы сделать на ajax-е (https://modx.pro/development/3139-foundations-of-ajax/) — проблема будет решена де-факто.

2. Глубоко не смотрел, но подозреваю, что дело в якоре Id=«mapexMap». Не знаю точной работы вашего сниппета карт, но, судя по куску:

<script type="text/javascript">
    ymaps.ready(function(){
        mapexMap = new ymaps.Map("mapexMap", {
            center: [57.886209618522,59.999624185547],
            zoom: 11
        });
        mapexMap.setType("yandex#map");
        var mapexMapControls = "mapTools".split(',');
        for(var i = 0; i < mapexMapControls.length; i++){
            mapexMap.controls.add(mapexMapControls[i]);
        }
        mapexMap.geoObjects.add(new ymaps.Placemark([57.920845758766,60.103013093254], {"iconContent":"\u0412\u0430\u0433\u043e\u043d\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439 12","balloonContentBody":"","balloonContentHeader":"\u0412\u0430\u0433\u043e\u043d\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439 12"}, {"preset":"twirl#blueStretchyIcon"}));
mapexMap.geoObjects.add(new ymaps.Placemark([57.872675912701,59.95150535582], {"iconContent":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0440. 22","balloonContentBody":"","balloonContentHeader":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0440. 22"}, {"preset":"twirl#blueStretchyIcon"}));

        
        
        
    });
</script>

— который вызывается у вас 26 раз, то сниппет при помощи скрипта вставляет в контейнер с айди mapexMap модуль карты, но т.к. в html параметр id должен быть уникальным, то из-за специфики javascript'a он находит первое совпадение Id (первый контейнер) и вставляет туда результат. И так 26 раз.
Максим Кузнецов
07 февраля 2015, 15:25
0
Не знаю почему, но

if($class_key == 'msProduct'){
— значение не цепляет.

Помогло только при:

if($resource->get('class_key') == 'msProduct'){
Максим Кузнецов
07 февраля 2015, 13:59
0
Попробовал запустить этот сниппет на modx 2.3.2, вот как вызвалось:

(в шаблоне, обязательно ДО вызова pdoResources/getResources или ДО вызова самой переменной в шаблоне):
[[!HPCount]]
(в месте вызова):
{%hp-[[+id]]%}
— если в шаблоне самого документа, то + меняем на * соответственно.

Единственный нюанс — как-то странно кэшировались данные, в результате число просмотров, отличное от 0 появилось не сразу.
Максим Кузнецов
06 февраля 2015, 10:04
0
При экспорте можно выбирать загружаемые таблицы.
Максим Кузнецов
06 февраля 2015, 09:14
0
Выгружать таблицы частями — не вариант?
Максим Кузнецов
05 февраля 2015, 21:29
+1
А что если пересохранять товар с одним и тем же артикулом — разве не вылезет алерт?