Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 145 комментариев

Алексей Карташов
Алексей Карташов
Оу, не знал… А почему во всех компонентах и сниппетах, какие не посмотри, везде используется, к примеру,
$modx->getOption('mycomponent.core_path');
? Да, конечно, делают проверки и подставляют значения по умолчанию, но неужели это просто задел на будущее?
Иван
Иван
Так и делаю, как в Ваших статьях различных.
В конструкторе этот метод. Или так неправильно?

function __construct(modX &$modx, array $config=array()) {
    $this->modx =& $modx;

    $namespace = $this->modx->getObject('modNamespace', 'lead');
    
    $basePath = $namespace->get('path');
    //$assetsUrl = $this->modx->getOption('assets_url').'components/weather/';
    
    $this->config = array_merge(array(
      'basePath' => $basePath,
      'corePath' => $basePath,
      'modelPath' => $basePath.'model/',
      //'processorsPath' => $basePath.'processors/',
      //'chunksPath' => $basePath.'elements/chunks/',
      //'jsUrl' => $assetsUrl.'js/',
      //'cssUrl' => $assetsUrl.'css/',
      //'assetsUrl' => $assetsUrl,
      //'connectorUrl' => $assetsUrl.'connector.php',
    ), $config);
     
    $this->modx->addPackage('lead', $this->config['modelPath'], 'lead_');
      
   
  }
Алексей Карташов
Алексей Карташов
Василий, спасибо огромное!
И ещё один вопрос можно? Сразу что-то забыл про него…

При установке своего компонента, создаю системную настройку. Настройка эта находится в правильном неймспейсе (в списке настроек меняю значение комбобокса с «core» на «mycomponent» и вижу её в списке). Но вот если я её получаю через:
$modx->getOption('mycomponent.mysetting');
, то получаю «NULL», а если через
$modx->getOption('mysetting');
, то правильное значение.
Но ведь это никуда не годится… Если у любого другого компонента будет настройка с таким же именем или, что ещё хуже, есть системная настройка с таким же именем?

Вот не хочет настройка получаться через указание неймспейса и всё тут. В чём проблема — не знаю. Может сталкивался?
Иван
Иван
Здравствуйте!

Я создал две таблицы в базе с префиксом lead.

По инструкции сгенерировал xml.

<model package="lead" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM">
  <object class="Service" table="service" extends="xPDOSimpleObject">
     ...
Пытаюсь выполнить:

$q = $this->modx->newQuery('Service');
    
    $q->where(array(
        'service_id' => 7
      ));


   if ($q->prepare() && $q->stmt->execute()) {
            
            $arr = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
              
          }
    
    print_r($arr);
Но в результате только пустота.
getCollection
также ничего не выдает.

Если подключить класс в сниппете с помощью
getService
, то все методы работают. Только никак не удается взаимодействовать с базой с помощью xPDO.

Буду рад совету! Спасибо!
Василий Наумкин
Василий Наумкин
1. Внутри одной группы можно сделать несколько уровней доступа, так как политика назначается с учетом роли. То есть, будет группа менеджеры, а внутри:
— Главный менеджер, с политикой Administrator
— Обычный менеджер — Content Editor
— Копирайтер — Text edit only

Это надо для очень больший сайтов с толпой юзеров, я пока не пользовался.

2. Ты можешь реализовать всю эту логику в своём процессоре. Но вообще да, так сделанно именно для CRC. Например, товары MS2 дублируются немного иначе, чем обычные ресурсы.

3. Да, просто накатываешь сверху setup и core, а потом обновляешь. Чтобы не было проблем — сначала сделай бэкап. Важный файл там только один — config.inc.php, он не затирается.

Лично у меня все обновления завершались без ошибок.
Алексей Вахрамеев
Алексей Вахрамеев
Сделал напрямую сей SQL запрос, в ответ услышал ругонь о том, дескать таблицы `modx_mse_modResIndex` не существует… Как же так, подумал я? )) И вспомнил свой давний пост — http://modx.pro/help/321/, в котором уже писал про нечто подобное. Правда там дело было не в [[!mSearch]], а просто товары не отображались, но причина та была весьма схожей.
Вина всему — корявый экспорт дампа с другого сервера без учета регистров в названиях таблиц. По дефолту все экспортнулось с малыми буквами, а в названиях таблиц MS2 присутствуют заглавные, а это как раз и стало источником проблем. Переименование таблицы излечило болячку.

Василий, еще раз спасибо за подсказку, она меня навела на правильный путь.
Василий Наумкин
Василий Наумкин
Попробуй скопировать и выполнить этот же запрос через phpMyAdmin.

Может, на хостинге какая-то версия MySql древняя, что не позволяет такие запросы проводить? Как таковой ошибки в твоей записи не вижу.

И эта, используй тег code, для оформления логов.
СикретНаме
СикретНаме
Тек-с, вот результаты тестов и поиска:
1. Увеличение до 31 секунды вернуло знакомые «помирания», вернулся на 10 — нормализовалось.
2. Уменьшение до от 7 секунд и ниже + явное указание в настройке конкретного подключения режима передачи «пассивный» даёт отсутствие не закачавшихся файлов и маааленькое улучшение скорости.
3. Не нашёл в FileZilla «конкурентный подключения», ни в ней ни в поиске
4. Канал у меня — 7 метров/сек железно гарантированная минималка
5. Снял в FileZilla галочку «разрешить возврат к другому режиму при сбое» (к п. 2, думаю, относится).