Александр Янк
С нами с 01 августа 2014; Место в рейтинге пользователей: #164Соединяем EasyComm и mFilter2
Всем привет, и сразу к делу (кстати пишу первый раз тут, если будут ошибки — исправим).
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов 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"
}`
[mSearch2] 1.5.2 - произвольные слова в индексе
Представляю вам новую версию mSearch2 с небольшим, но очень важным изменением в логике работы индексации.
Теперь вы можете добавлять любые произвольные поля и слова в индекс буквально на лету, свои плагином на событие mse2OnBeforeSearchIndex:
Теперь вы можете добавлять любые произвольные поля и слова в индекс буквально на лету, свои плагином на событие mse2OnBeforeSearchIndex:
<?php
switch ($modx->event->name) {
case 'mse2OnBeforeSearchIndex':
$mSearch2->fields['my_field'] = 1;
$resource->set('my_field', 'My Words');
if ($resource->get('class_key') == 'msProduct') {
$mSearch2->fields['product_field'] = 1;
$resource->set('product_field', 'Product Property');
}
break;
}
[customExtra] Создание кастомных объектов
Периодически мне приходится реализовывать на сайтах клиентов какой-то уникальный функционал. Часто требуется сохранять информацию в базу данных, выводить её оттуда, реализовывать возможность управления из админки. Раньше для этого приходилось писать кастомный компонент.
А значит, надо написать схему, сгенерировать модель, оформить интерфейс, написать процессоры и прочее, и прочее… Для начинающих разработчиков этот метод достаточно сложен. А мне, например, каждый раз та-а-ак лень это делать.
Недавно я все-таки решился собрать некий стандартный компонент, с большим количеством полей, которые можно использовать как угодно. Даже написал небольшую заметку о нем у себя в блоге и на какое-то время успокоился.
До тех пор, пока мне не понадобилось иметь два таких кастомных объекта…
А значит, надо написать схему, сгенерировать модель, оформить интерфейс, написать процессоры и прочее, и прочее… Для начинающих разработчиков этот метод достаточно сложен. А мне, например, каждый раз та-а-ак лень это делать.
Недавно я все-таки решился собрать некий стандартный компонент, с большим количеством полей, которые можно использовать как угодно. Даже написал небольшую заметку о нем у себя в блоге и на какое-то время успокоился.
До тех пор, пока мне не понадобилось иметь два таких кастомных объекта…
какой код нужно прописать,что бы MODX не выполнял
Здравствуйте. Подскажите какой код нужно прописать, что бы MODX не выполнял теги:
Мне очень нравится как устроено тут, я только вставляю код и сохраняю, и мне показывается то, что я вставил, а не выполняются теги.
<div class="files-attach">
<form action="[[~[[*id]]]]" method="post" class="ajax_form" enctype="multipart/form-data">
<div class="cf">
<div class="col-sm-6 col-xs-12">
<i class="error_name">[[+fi.error.name]]</i>
<div class="input-group input-group-lg">
<span class="input-group-addon fa fa-user" id="name"></span>
<input type="text" name="name" value="[[+fi.name]]" class="form-control" title="Укажите Ваше имя" placeholder="Представтесь *" aria-describedby="name">
</div>
<i class="error_email">[[+fi.error.email]]</i>
<div class="input-group input-group-lg">
<span class="input-group-addon fa fa-envelope" id="email"></span>
<input type="email" name="email" value="[[+fi.email]]" class="form-control" title="Укажите правильный email адрес" placeholder="Укажите Ваш email *" aria-describedby="email">
</div>
<button type="submit" name="submit" class="btn btn-default"><i class="fa fa-paper-plane"></i> Отправить</button>
</div>
<div class="col-sm-6 col-xs-12">
<i class="error_message">[[+fi.error.message]]</i>
<div class="input-group input-group-lg">
<span class="input-group-addon fa fa-comments" id="message"></span>
<textarea name="message" class="form-control" placeholder="[[+placeHolder]]" aria-describedby="email" rows="5">[[+fi.message]]</textarea>
</div>
</div>
</div>
[[+fi.success:is=`1`:then=`
<div class="alert alert-success">[[+fi.successMessage]]</div>
`]]
[[+fi.validation_error:is=`1`:then=`
<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
`]]
</form>
</div>
Мне очень нравится как устроено тут, я только вставляю код и сохраняю, и мне показывается то, что я вставил, а не выполняются теги.
Новое поле товара
Не могу создать у товара MiniShop2 поле типа селект.
Нужно чтобы было вот так:
Пробовал уже разные способы, один из них:
Пробовал кучу xtype:
Помогите! :)
Нужно чтобы было вот так:
<select>
<option value="1">Да</option>
<option value="0">Нет</option>
</select>
Пробовал уже разные способы, один из них:
miniShop2.plugin.ms2NewFields = {
getFields: function(config) {
return {
available: {
xtype: 'minishop2-combo-autocomplete'
,minChars: 1
,description: '<b>[[+available]]</b>
' + _('ms2_product_dimension')
,mode: 'local'
,editable: false
,store: new Ext.data.SimpleStore({
fields: ['available']
,data: [[0, 'Да'], [1, 'Нет']]
})
}
}
}
};
Либо не записывается в базу, либо не выводится в списке варианты (пустые строки)Пробовал кучу xtype:
- combo,
- combo-boolean,
- modx-combo,
- modx-compo-property-set
Помогите! :)
Модуль MODX Revo для постинга в FB, TW, LI
2
Ищу разработчика для реализации модуля кросспостинга в социальные сети для MODX Revolution. Модуль необходимо снабдить возможностью работы с facebook*, Twitter и LinkedIn с учетом возможности дальнейшей доработки модуля для поддержки API других сетей.
*Meta, которой принадлежат facebook и instagram признана экстремистской в России
Вывод даты публикации (выводит неправильно)
Здравствуйте уважаемые пользователи.
Вывожу дату публикации с помощью этой функции
[[+publishedon:strtotime:date=`%d.%m.%Y`]]
День и месяц выводятся нормально, год — неправильно (23.10.7700)
Так же неправильно выводит время, не соответствует дате публикации. Притом что везде стоит одно и то же время, только секундами отличается.
Вот вывод времени, публиковал в разное время.
[[+publishedon:strtotime:date=`%I:%M:%S`]]
В php.ini часовой пояс установлен.
Помогите пожалуйста с решением этой проблемы.
Вывожу дату публикации с помощью этой функции
[[+publishedon:strtotime:date=`%d.%m.%Y`]]
День и месяц выводятся нормально, год — неправильно (23.10.7700)
Так же неправильно выводит время, не соответствует дате публикации. Притом что везде стоит одно и то же время, только секундами отличается.
Вот вывод времени, публиковал в разное время.
[[+publishedon:strtotime:date=`%I:%M:%S`]]
В php.ini часовой пояс установлен.
Помогите пожалуйста с решением этой проблемы.
Бесплатная доставка курьером от определенной суммы
Здравствуйте. Пожалуйста, подскажите как реализовать данный функционал:
например, до 5000 тысяч доставка 300 рублей, от 5000 тысяч – бесплатно?
joxi.ru/zAN5Mxls156329
например, до 5000 тысяч доставка 300 рублей, от 5000 тысяч – бесплатно?
joxi.ru/zAN5Mxls156329
Сортировка по алфавиту в pdoPage?
Здравствуйте. Подскажите пожалуйста, как настроить сортировку ресурсов по алфавиту:
[[!pdoPage?
&tpl=`tpl.countri`
&limit=`10`
&sortby=`publishedon`
&showHidden=`1`
&sortdir=`ASC`
&includeTVs=`img`
&includeContent=`1`
]]
Что указать тут: &sortby=``
что бы ресурсы выводились по алфавиту? Дополнительные поля в свойство товара miniShop2
Подскажите пожалуйста, как добавить дополнительные поля в свойство товара miniShop2?