Даниил

Даниил

С нами с 30 мая 2013; Место в рейтинге пользователей: #458
Даниил
03 января 2022, 13:42
-1
А вот как бы получить xParser бесплатно?? Нужен ппц просто, а с деньгами ну совсем плохо, даже на еду нехватает, последний бичпакет вот утром догрыз. Может кто нибудь поделится, пожалуйста
Даниил
26 февраля 2018, 13:42
1
0
Долго сражался с API. Все ему не слава богу. То половина ресурсов создается, а половина нет, то ТВ не заполняются, то вообще не работает ибо бубен шамаский не тот… В общем победил вот таким кодом. Делюсь, вдруг кому тож пригодится.

foreach($addArr as $key => $val){

    $rss = $modx->newObject('modResource');
    $rss->set('template', 17);                     // Назначаем ему нужный шаблон
    $rss->set('isfolder', 1);                         // Указываем, что это не контейнер   
    $rss->set('published', 1);                      // Неопубликован
    $rss->set('createdon', time());              // Время создания
    $rss->set('pagetitle', $val[0]);               // Заголовок
    $rss->set('alias', strtolower($val[0]));    // Псевдоним
    $rss->set('parent', $startID);                 // Родительский ресурс
    $rss->save(); 
    
    $nid = $rss->get('id');      //получаем ID созданного ресурса
    
    $tvcid = $modx->getObject('modTemplateVar',array('name'=>'cid'));       // Указываем имя нужного TV
    $tvcid->setValue($nid, $key);       // Записываем в TV значение
    $tvcid->save();

    unset($rss); unset($tvcid);       // Удаляем переменные
    $modx->cacheManager->clearCache();      // Кэш тоже чистим

}
Даниил
03 мая 2017, 21:34
0
Благодарю за подсказку! Помогло! Вроде такая мелочь, а голову ломал долго))
Даниил
01 мая 2017, 12:54
1
0
Благодарю за подсказочки. В принципе в этом направление сейчас и двигаюсь. Как только запущу — выложу здесь код функции которая умеет по онклику вызывать файломенеджер и возвращать данные в поле инпута.
Даниил
01 мая 2017, 12:52
0
ContentBlocks крутая хрень. И однажды я ее разлочу, когда мозгов хватит, и бесплатно выложу в общий доступ… Глобальная разница в том, что ContentBlocks интегрирован сильно в MODX, поля, классы, плагины… С одной стороны это хорошо, с другой попробуй там ладу дать, если что-то надумаешь под себя переделать. То, что я делаю — проще. Все работает на jQuery, все блоки прописываются в виде HTML в чанках + CSS естесьна. Чанк создал, добавил стиль — получил новый блок, любой, какой только хочется. Весь сгенерированный в итоге работы плагина html-код без заморочек засовывается целиком в TVху, которую можно выводить вместо поля [[*content]]. Соответственно TVшка может быть подключена к шаблону, а может быть и нет, т.е. там где надо вам rte — пожалуйста, там где надо мой редактор — пожалуйста, в этом случае поле content можно отключить, а можно и то и другое оставить… В общем как удобно так и рулим.
Даниил
27 апреля 2017, 15:20
0
Я этот ExtJS дом труба шатал… Замучался сил нет… Сделал пока на общепонятном jQuery.
Конечно, если найду в дальнейшем способ, хотелось бы все таки по нормальному.
Так что все равно актуально и вопрос открыт!

<input type="hidden" id="tv{$tv->id}" name="tv{$tv->id}" class="contboxs" value="{$tv->value|escape}"></input>
<div id="contboxs{$tv->id}" name="contboxs{$tv->id}" class="contboxs"></div>


<script type="text/javascript">

// <![CDATA[
{literal}
MODx.load({
{/literal}
    xtype: 'container'
    ,name: 'contboxs{$tv->id}'
    ,hiddenName: 'contboxs{$tv->id}'
    ,transform: 'contboxs{$tv->id}'
    ,id: 'contboxs{$tv->id}'
{literal}
    ,listeners: { 'select': { fn:MODx.fireResourceFormChange, scope:this}}
});
{/literal}
// ]]>




$('.contboxs').bind("DOMSubtreeModified",function(){
    var cbtext = $(this).html();
    $('#tv' + {$tv->id}).val(cbtext);
});

$( document ).ready(function() {
   var tvtext = $('#tv' + {$tv->id}).val();
   $('#contboxs' + {$tv->id}).html(tvtext);
});

</script>
Даниил
27 апреля 2017, 10:09
0
Ну примерно этим путем счас и иду…

<input type="hidden" id="tv{$tv->id}" name="tv{$tv->id}" class="contboxs" value="{$tv->value|escape}"></input>
<div id="contboxs{$tv->id}" name="contboxs{$tv->id}" class="contboxs"></div>


<script type="text/javascript">

// <![CDATA[
{literal}

MODx.load({
{/literal}
    xtype: 'textfield'
    ,name: 'tv{$tv->id}'
    ,hiddenName: 'tv{$tv->id}'
    ,transform: 'tv{$tv->id}'
    ,id: 'tv{$tv->id}'
    ,value: Ext.get(contboxs{$tv->id}).dom.innerHTML
{literal}
    ,listeners: { 'select': { fn:MODx.fireResourceFormChange, scope:this}}
});
{/literal}
// ]]>
</script>

Только хз как его присваивать… Если вот так чекаю,

jQuery('.contboxs').on('click', function(){
    value = Ext.get(contboxs{$tv->id}).dom.innerHTML;
    console.log(value);
});

то в консоли то что надо вижу, а через код выше не лезет упорно в value инпута
Даниил
27 апреля 2017, 09:30
0
Ахах))) По стечению обстоятельств как раз дополнение и разрабатываюXD
Даниил
27 апреля 2017, 09:05
0
Судя по количеству ответов не только мне ЭкстЖиЭс сложноват :D
Даниил
21 декабря 2016, 15:03
0
На всякий, для полного понимания ситуации

Даниил
20 декабря 2016, 14:17
0
Компонент кстати, если интересно, прикручиваю вот на этот лэндинг http://abortam.net/. Там еще многое не работает, так сказать в процессе сборки и тестов…

Изначально был Tickets, но отказался из-за того, что в базовом варианте нет поддержки вывода нескольких веток комментариев на одной странице, а easyComm имеется. Править исходники Tickets, чтобы сделать поддержку нескольких вызовов сейчас банально нет времени.

Что касательно easyComm сделано:
1. Сделал поддержку включения/отключения комментов для статьи в один клик в доп.полях через радиобатон в админке.
2. Само-собой с CSS поработал
3. Убрал лишние стандартные поля, вход/регистрация производится через собственный компонент logReg (доведу однажды до ума — выложу релиз)
4. Реализована возможность мультикомментариев (комментарии на комментарий).

Сейчас после входа и отправки сообщений приходится обнавлять страницу, но в планах все через AJAX допилить. Также будут аватары, загружаемые пользователями (не через Gravatar, а напрямую на хостинг). Сейчас заканчиваю еще один собственный компонент modxAva. Точнее компонент уже готов, просто на этом сайте еще не прикрутил, но потестить его можно на другом сайте — http://esolife.ru/. Там он успешно работает в паре с Tickets (на основе которого кстати там построен полноценный форум, функционал которого постепенно расширяю).
Даниил
20 декабря 2016, 12:45
0
Сейчас вот еще вопрос возник. Как после отправки сообщения сразу отобразить его, как в Tickets?

Попытался в tpl.ecForm.Success впихнуть вызов ecMessages с &limit=`1`, но там видимо где-то есть оператор экранирующий теги MODX, в итоге вместо вывода результата работы сниппета вижу просто строку его вызова. Как исправить, в каком php-файле какой кусок кода? Ну или можт еще какой путь есть?
Даниил
20 декабря 2016, 12:39
0
Ну в head эт я в первую очередь сделал, но думаю это как временное решение, потом всеж придумаю как плагином. Поросто сайтов много и когда переносишь какое-то настроенное решение с одного сайта на другой, то всеж гораздо удобнее, чтоб достаточно было ограничиться перекидыванием чанков и заливкой файлов, чтоб в коды поминимуму вникать… Ну и как-то цивилизованнее и современнее чтоль так)))
Даниил
19 декабря 2016, 11:07
0
Пробовал в плагине «core/components/easycomm/plugins/actions/index.php» просто подключиться к MODX и зарегать свой скрипт

<?php
define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';
$modx->getService('error','error.modError');
$modx->regClientStartupScript('assets/components/easycomm/plugins/actions/actions.js');

Так не работает. Вообще страница падает из-за php конфликта.
Даниил
19 декабря 2016, 11:01
0
С плагинами вроде понял и разобрался. Поля могу добавить. А вот как мне через систему плагинов подключить свой JS-скрипт? Надо добавить кое-какие действия, а в родной JS не хочется засовывать, ибо потом обновления все дела. Конечно можно просто в системных настройках прописать свой JS-файл, но тоже чревато.

Помню была какая-то старая версия Tickets у меня, я там как раз сделал так. Через достаточно большой период времени обновил компонент, в итоге с моим JS-скриптом отказался вообще работать, т.к. за длительный период родной JS у Tickets значительно изменил логику работы. Замучался потом из старого и нового скриптов делать гибрид, чтоб и новое все заработало и мои дополнения чтоб функционировали.

Не хочу чтоб через пару лет мне пришлось столкнуться с той же проблемой у easyComm. Поэтому хочу именно еще одним дополнительным JS-файлом это сделать, как плагин.
Даниил
10 ноября 2016, 19:39
0
Работает. Но после обновления стр. показывает, вместо того что я сохранил, пустое поле. При этом физически данные в БД сохраняются. Выше писал об этом.
Даниил
09 ноября 2016, 04:20
0
Кстати вопрос так до сих пор и не решился
Даниил
03 ноября 2016, 17:27
0
Оно! Благодарствую!

Перед return'ом дописал строчку:

$data['weight'] = $data['option_from'].'<br />'.$data['option_to'];

И получил интересующие данные в нужное мне поле weight.
Даниил
03 ноября 2016, 13:58
0
Нет, не правильно понял)
В msorderproduct.map.inc.php формируется само поле, т.е. описывается какой тип данных в нем будет присутствовать и т.д. А я спрашиваю о файле с кодом, который заполняет это поле данными, чтобы понять как и откуда он их вытягивает и как ему можно подсунуть что-либо другое.