Николай

Николай

С нами с 09 ноября 2013; Место в рейтинге пользователей: #57

Соединяем EasyComm и mFilter2

Всем привет, и сразу к делу (кстати пишу первый раз тут, если будут ошибки — исправим).

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

Добавляем в вызов mFilter2 следующий код:

&loadModels=`easycomm`
&where=`{"class_key":"msProduct"}`
&leftJoin=`{
	"ecThread": {
		"class": "ecThread",
		"on": "msProduct.id = ecThread.resource"
	}
}`

&select=`{
	"msProduct": "*",
	"ecThread": "ecThread.rating_simple AS rating, ecThread.count AS reviews"
}`
Павел
25 декабря 2015, 10:34
modx.pro
34
5 125
+14

Создание правил при смене суффикса контейнера

Хочу поменять у ресурсов-контейнеров суффикс контейнера с / на .html
Установил autoRedirector, поменял суффикс в системных настройка, обновил кэш. URI-ссылки поменялись, но автоматически правила не создались. А ведь должны были?

MODX Revolution 2.3.3-pl (traditional)
Михаил
22 декабря 2015, 11:44
modx.pro
1
1 408
+1

Расширение объекта modResource

Добрый день, Уважаемые!
Начитавшись статей про расширение таблиц modx, решил попробовать совсем простой вариант для закрепления материала, решил добавить дополнительное поле keywords к объекту modResource, как делают это многие с помощью TV, но захотелось что бы оно было в одной таблице modx_site_content, попробовал использовать плагин Василия, который инициализируется по событию OnMODXInit. Физически я в таблицу добавил столбец, и теперь когда пишу в консоли получить объект и распечатать его я вижу своё поле keywords, но вопрос а как его теперь вывести на панели ресурса, что бы можно было его заполнять?
Семён Кудрявцев
20 декабря 2015, 12:16
modx.pro
2
1 776
+2

mFilter2 - функции обратного вызова

Как перехватить данные с pdoPage, используемому в mFilter2 по умолчанию?
То есть в обычном pdoPage прекрасно работают функции обратного вызова, а в mFilter2 почему-то не получается.
Или я не туда смотрю? Может и для mFilter2 есть функции обратного вызова, только я пропустил это?
Василий Столейков
14 декабря 2015, 19:25
modx.pro
12
3 066
+1

[SkypeNotify] - уведомление в скайп для MODX

[SkypeNotify] — собственно уведомление в скайп для MODX.
подключить и инициализировать skypenotify
$skypenotify = $modx->getService('skypenotify')
$skypenotify->initialize();
подключить аккаунт скайп
$skypenotify->connect('login', 'password');
отправить сообщение
$skypenotify->sendMessage('login', 'Привет Боб, как дела?');
Володя
11 декабря 2015, 13:31
modx.pro
17
2 091
+11

Вывод пути к статическому чанку

Доброго времени суток,
Есть статический чанк, как средствами modx вывести урл, куда сохранен данный чанк?
в описании getChunk() не нашел.
SaLacoste
09 декабря 2015, 20:25
modx.pro
1
1 244
+1

pdoFetch поиск в TV-полях с разделителем ||

Наверняка много кто использовал в своей практике TV-поля типа «Список» (множественный, одиночный, не важно) или «Тег». Здесь важно именно то, в каком виде в базе данных хранятся данные таких полей, ведь они сохраняют множественные значения. А хранят они их одной общей строкой в той же самой таблице ТВшек (естественно, по одной записи на один документ). К примеру, если мы отметили три значения 100, 1005, 10, в БД это запишется 100||1005||10. И здесь возникает вопрос как потом выполнить поиск по таким полям? Простой LIKE здесь не поможет, так как LIKE %100%, к примеру, найдет и '100||1000' и '1001||1005'. Данного вопроса мы уже касались здесь и подобный вопрос опять возник здесь.
Fi1osof
06 декабря 2015, 10:14
modx.pro
37
6 358
+16

АнтиСео в MODX 2.4.0

Доброго времени суток, господа
Думаю не все в курсе (по крайней мере я не был) о том, что последние версии modx не корректно отрабатывают в связке в nginx ЧПУ (верней переадресацию при включении чпу).

В результате чего контент сайта целиком дублируется в глазах поисковика и вы уныло катитесь вниз в выдаче.
Приведу простой пример:
Ваш сайт доступен по ссылке */index.php?id=1 и /, */index.php?id=2 и по чпу документа с id 2 и т.д.

К сожалению на modhost установлен nginx и я совершенно случайно обнаружил этот факт.

Василий предложил использовать плагин

<?php
if ($modx->event->name == 'OnHandleRequest') {
	if (!empty($_GET['id'])) {
		$id = (int)$_GET['id'];
		if (!$modx->getCount('modResource', array('id' => $id, 'published' => 1, 'deleted' => 0))) {
			$id = $modx->getOption('error_page', null, $modx->getOption('site_start'));
		}
		$modx->sendRedirect($modx->makeUrl($id));
	}
}
На первый взгляд он закрывает эту дырку, но на практике получилось, что он ресолвит id и для страниц бэкенда, что убило его функционал.
Так же обратил внимание, что при включении этого плагина слетает выборка последних новостей (последние 3 дочерных документа у родителя по id).

Вот собственно вопрос:
как поставить проверку по содержанию /manager/ в url?
Почему может не работать pdoResources при включении этого плагина?
SaLacoste
03 декабря 2015, 22:39
modx.pro
11
7 057
+1

Упрощаем работу с TV

Продолжая тему, начатую Василием, предлагаю решение для упрощения работы с TV. Оно поможет тем, у кого логика сайта завязана на TV — запросы, фильтры и т.п.
Решается эта задача созданием полей в таблице ресурсов и копированием в них значений TV.
Сергей Шлоков
02 декабря 2015, 09:18
modx.pro
49
8 213
+7

Конвертировать сырой SQL в xPDO. Вложенные запросы

Ребят, может кто помочь переделать сырой sql в xpdo?

Есть вот такой код, который отлично работает в phpmyadmin:

SELECT * FROM (
SELECT * FROM `modx_site_tmplvar_contentvalues` WHERE `tmplvarid` = '11'
) AS `tv_article`
LEFT JOIN `modx_shopmodx1c_tmp_categories` AS `main`
ON `main`.`parent` = `tv_article`.`value` AND `main`.`processed`=1

На modx перешел недавно, поэтому не ориентируюсь пока в xpdo, так как раньше надобности не было.
Ruslan
28 ноября 2015, 12:30
modx.pro
2
1 853
0