Роман Садоян

Роман Садоян

С нами с 26 июня 2015; Место в рейтинге пользователей: #79
Иван Чуваев
30 октября 2016, 08:52
1
0
Дмитрий, спасибо что откликнулись. Документацию я читал.
modx.pro/components/6223-pdotools-version-2-1-improve-fenom/#comment-44212
— и читал этот комментарий.

В итоге, вот так работает:
{$_modx->runSnippet('!msProducts', [
                'parents'=>0
                ,'tpl'=>'store.Product.Similar2'
                ,'optionFilters' => ' { "Data.count:>":0 } ' 
            ])}
в параметрах фильтрации у фигурных скобок с двух сторон пробелы, чтобы Fenom работал
Сергей Шлоков
02 августа 2016, 13:11
1
+4
Есть такая таблица modx_ticket_views. В ней хранится дата последнего просмотра ресурса текущим пользователем. Все комментарии ресурса, у которых дата создания позже даты из этой таблицы, считаются непрочитанными. Они высчитываются на лету.
Дмитрий Середюк
11 апреля 2016, 23:30
2
0
Если актуально еще то вот ссылка на пример!

Вызов pdoMenu
[[!pdoMenu?
&parents=`2`
&level=`0`
&outerClass=`anyClass skinClear`
&firstClass=`0`
&lastClass=`0`
&hereClass=`0`
&levelClass=`levels`
&tplInner=`@INLINE <ul>[[+wrapper]]</ul>`
]]

js
(function ($) {
              $.fn.liHarmonica = function (params) {
                var p = $.extend({
                  currentClass: 'cur', //Класс для выделенного пункта меню
                  onlyOne: true, //true - открытым может быть только один пункт, 
                  //false - число открытых одновременно пунктов не ограничено
                  speed: 500 //Скорость анимации
                }, params);
                return this.each(function () {
                  var
                  el = $(this).addClass('harmonica'),
                    linkItem = $('ul', el).prev('a');
                  el.children(':last').addClass('last');
                  $('ul', el).each(function () {
                    $(this).children(':last').addClass('last');
                  });
                  $('ul', el).prev('a').addClass('harFull');
                  el.find('.' + p.currentClass).parents('ul').show().prev('a').addClass(p.currentClass).addClass('harOpen');
                  linkItem.on('click', function () {
                    if ($(this).next('ul').is(':hidden')) {
                      $(this).addClass('harOpen');
                    } else {
                      $(this).removeClass('harOpen');
                    }
                    if (p.onlyOne) {
                      $(this).closest('ul').closest('ul').find('ul').not($(this).next('ul')).slideUp(p.speed).prev('a').removeClass('harOpen');
                      $(this).next('ul').slideToggle(p.speed);
                    } else {
                      $(this).next('ul').stop(true).slideToggle(p.speed);
                    }
                    return false;
                  });
                });
              };
            })(jQuery);
            
            /*Инициализация плагина*/
            $(function () {
              $('.anyClass').liHarmonica({
                onlyOne: false,
                speed: 500
              });
              $('.anyClass2').liHarmonica({
                onlyOne: false,
                speed: 400
              });
            });

css
/*skin Clear [.skinClear]*/
 .skinClear, .skinClear ul {
  list-style:none;
  padding:0;
  margin:0;
  font:14px/1.2em Arial, Helvetica, sans-serif
}
.skinClear ul {
  display:none;
  margin:0 0 0 10px;
  
}
.skinClear li {
  list-style:none;
}
.skinClear a {
  color:#888;
  display:block;
  position:relative;
  text-decoration:none;
  padding:1px 0 1px 9px;
}
.skinClear a:before {
  content:'';
  width: 0;
  height: 0;
  border:0;
  display:inline-block;
  position:absolute;
  top:5px;
  left:0px;
  margin:0 4px 0 0;
}
.skinClear a.harFull.harOpen:before {
  border:0;
  border-left: 3px solid transparent;
  border-top: 4px solid #000;
  border-right: 3px solid transparent;
  top:7px;
}
.skinClear a.harFull:before {
  border:0;
  border-top: 3px solid transparent;
  border-left: 4px solid #000;
  border-bottom: 3px solid transparent;
  top:5px;
}
.skinClear a:hover {
  text-decoration:underline;
}
.skinClear a.cur {
  color:#000
}
.skinClear a.harOpen {
  color:#000
}

ссылка на источник!
Роман Садоян
24 февраля 2016, 21:20
1
0
По моему Николай тут просто что-то не дописал.

Можно ограничить доступ по IP — в принципе этого достаточно, учитывая что почти у каждого есть возможность использовать статический IP / VPN со статическим IP.
location ~ ^/(core|manager|connectors)/{
	allow 192.168.1.1;
	deny all;

}
Или ограничить по паролю, как говорил Василий.
Роман Садоян
23 февраля 2016, 15:57
1
+2
Есть такой замечательный процессор в MODX — resource/delete. Он принимает в параметрах id ресурса, которого необходимо удалить.

Можете создать свой сниппет в котором необходимо проверить авторизован ли пользователь и если авторизован, то проверять он создал ли это объявление, если он — то отправлять данные процессору на удаление.

P.S.: это самый простой вариант на мой взгляд.
Павел Романов
23 февраля 2016, 14:48
2
+1
[[pdoMenu?
&parents=`20`
&level=`3`
&levelClass=`lev`
&tplParentRow=`@INLINE <li [[+classes]]>[[+menutitle]][[+wrapper]]</li></div>`
&tpl=`@INLINE <li [[+classes]]><a href="[[+link]]">[[+menutitle:nbsp]]</a></li>`
]]
Ну и оформите потом как нужно .lev1, .lev2, .lev3
Роман Садоян
22 февраля 2016, 20:45
1
+1
Ну мы можем уже сейчас начать обсуждение тем которые интересны, а там уже если наберется человек 10-15 -> можно будет и Василию сообщить.

Но на мой взгляд Василий уже приложил все усилии рассказав главные-базовые вещи:
1. Создание компонентов для MODX
2. курс по PHP (xPDO, Fenom)

Для меня, как для разработчика далее интересны такие технологии как NODE.js, React, PostCSS и фреймворки Larevel/Symfony/Phalcon но это уже не MODX и это совсем другая песня.
Роман Садоян
20 февраля 2016, 23:01
1
+1
Я бы сделал так:
1. Добавил элемент на форму
<input type="file" name="image">
2. Ловить плагином на событие
if ($modx->event->name == 'OnDocFormSave')
(добавив какой-нибудь скрытый инпут, чтобы ловить именно эту форму, можно даже проверять на существование $_POST['image'])
и получать данные изображения:
$file = $_FILES['image'];
    $name =  $_FILES['image']['name'];
3. Грузить файл, получать имя и делать setTVValue.

Алгоритм действия ясен?
Роман Садоян
16 февраля 2016, 00:09
1
0
CSS вы задаете сами в произвольном файле, который подключаете в
Fi1osof
07 января 2016, 11:57
20
+12
Если ключ не хотите светить, то однозначно запрос надо слать с вашего сервера на донора. В MODX есть готовый CURL-клиент. Вот код для примера:
$client = $modx->getService('rest.modRestCurlClient');
$result = $client->request('https://ya.ru', '/', 'POST', $params = array('foo'  => 'foo'));
print $result;
Можете с этим кодом к консоли поиграться.