Готовые решения / MODX / Топики

mFilter2 и фильтрация через select по (Популярным товарам и их Ценам)



Вывод сниппета mFilter2 выглядит у нас следующим образом:

                {$_modx->runSnippet('!mFilter2', [
                    'parents' => $_modx->resource.id,
                    'limit' => 12,
                    'class' => 'msProduct',
                    'element' => 'msProducts',
                    'tpl' => 'tpl.Site.msFilter2.productTpl',
                    'tplOuter' => 'tpl.Site.mFilter2.outerTpl',
                    'tplPageWrapper' => '@INLINE [[+pages]]',
                    'tplPage' => '@INLINE <a href="[[+href]]">[[+pageNo]]</a>',
                    'tplPageActive' => '@INLINE <a class="selected" href="[[+href]]">[[+pageNo]]</a>',
                    'where' => '{"class_key":"msProduct"}',
                    'suggestions' => 'true',
                    'filters' => '
                        ms|width:select,
                        ms|height:select,
                        ms|length:select,
                        ms|made_in:checkbox,
                        ms|vendor:vendors,
                    ',
                    'sort' => '
                        ms|price:desc
                    ',
                    'tplFilter.outer.ms|vendor' => 'tpl.Site.mFilter2.filter.outer',
                    'tplFilter.row.ms|vendor' => 'tpl.Site.mFilter2.filter.checkbox',
                    'tplFilter.outer.ms|made_in' => 'tpl.Site.mFilter2.filter.outer',
                    'tplFilter.row.ms|made_in' => 'tpl.Site.mFilter2.filter.checkbox',
                    'tplFilter.outer.ms|width' => 'tpl.Site.mFilter2.filter.outer.whl',
                    'tplFilter.outer.ms|height' => 'tpl.Site.mFilter2.filter.outer.whl',
                    'tplFilter.outer.ms|length' => 'tpl.Site.mFilter2.filter.outer.whl',
                    'tplFilter.row.ms|width' => 'tpl.Site.mFilter2.filter.select.whl',
                    'tplFilter.row.ms|height' => 'tpl.Site.mFilter2.filter.select.whl',
                    'tplFilter.row.ms|length' => 'tpl.Site.mFilter2.filter.select.whl',
                    'tplFilter.outer.ms|popular' => 'tpl.Site.mFilter2.filter.outer.whl',
                    'tplFilter.row.ms|popular' => 'tpl.Site.mFilter2.filter.select.whl',
                ])}

Читать дальше
28 марта 2018, 20:05    SEQUEL.ONE Готовые решения 1    481    0 +1

Дополнительные поля профиля User (не extended)



Потребовалось на одном проекте в форму профиля добавить для пользователей дополнительные поля. Отдельно Имя, Фамилия, Отчество и поля для добавления ссылок на социальные группы.

Читать дальше
28 марта 2018, 19:39    SEQUEL.ONE Готовые решения 1    509    0 +1

Проблемы с провайдерами VK и Facebook в HybridAuth

Недавно заметил что авторизация через VK и Facebook перестали работать, после долгих поисков решения оно было найдено. Сейчас подробно опишу действия которые нужно сделать для того чтобы всё у вас заработало. Начнём с провайдера Vkontakte.

Читать дальше
28 марта 2018, 18:27    SEQUEL.ONE Готовые решения 1    488    0 +1

Курс цен от производителей miniShop2

На одном проекте нужно было сделать курс цен от производителей, чтобы была одна глобальная цена и возможность выставлять индивидуальные курсы у производителей. Готовых решений на тот момент не было, по этому пришлось импровизировать.

Нужно к ценам умножать курс от производителя для price, если производитель у товара не указан, то выводить глобальный курс, который создаём системными настройками как ms2_curs_global_enable (включить/выключить) и ms2_curs_global куда мы собственно и забиваем глобальный курс, который включается по настройке ms2_curs_global_enable. Добавил новое поле в таблицу modx_ms2_vendors под названием `curs`, а также добавил изменения в файлах модели, схемы и extjs, чтобы добавить новое поле с курсом пересчёта и установить на эти файлы CHMOD 444, чтоб при обновлении эти файлы не затёрлись.

Список изменённых файлов:

/site.ru/core/components/minishop2/model/minishop2/msvendor.class.php
/site.ru/core/components/minishop2/model/schema/minishop2.mysql.schema.xml
/site.ru/assets/components/minishop2/js/mgr/settings/vendor/grid.js
/site.ru/assets/components/minishop2/js/mgr/settings/vendor/window.js

Читать дальше
25 марта 2018, 18:33    SEQUEL.ONE Готовые решения 2    417    0 +3

Copyright в подвале сайта

Многие сталкивались с такой проблемой, что сайту нужно обновлять года действия. Многие разработчики делают это руками, но иногда забывают сменить дату на текущую. Хочу поделиться с вами простым решением как внизу странички сделать такую запись © 2015 – 2016 MODX.ONE и на автомате отсчитывать года. Нужно создать простенький сниппет под названием Copyright:

<?php
$year = date("Y");
if($year == $start) {
	return $year;
} else {
return ''.$start.' – '.$year.'';
}
А в нужном месте вывести таким незатейливым образом:

© [[!Copyright? &start=`2015`]]
Где 2015 в параметре &start год запуска сайта.
Читать дальше
31 марта 2016, 14:01    SEQUEL.ONE Готовые решения 1    669    0 +1

Редиректы с /index.php?id=* на ссылки чпу

Недавно обнаружился при неприятнейший баг, связанный с работой MODX Revo 2.4.*

Появилась проблема с дублями страниц в поисковиках, если включено ЧПУ. Начали проседать позиции, так как из-за дублей ПС считал исходную страницу не уникальной.

Создаём плагин с названием скажем Redirect и вешаем на него событие OnHandleRequest.

<?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));
		}
	}

Читать дальше
04 декабря 2015, 18:26    SEQUEL.ONE Готовые решения 1    746    0 +1