We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 785
    • 2,113 Posts
    Лирическое отступление.
    Мне очень интересно, когда на форуме люди обсуждают различные варианты применения переменных TV, они сами пробуют применять обсуждаемые решения? Неужели никто не заметил, что в версии 0.6.1 нельзя добавить TV после создания документа? То есть можно ввести значение вместе с вводом нового документа или исправить введенное ранее, но если при создании TV не задать, то потом ввести его будет невозможно. Ошибка появилась только в версии 0.9.6.1 и осталась в 0.9.6.1p2. Неужели никто не заметил? А если заметил, то, как обходит проблему? Если же исправил, то почему ни с кем не поделился? Правда, справедливости ради, проблема возникает не всегда, так как можно использовать режимы работы MySQL, в которых все будет работать, но по умолчанию работать не должно.

    Решение проблемы достаточно простое, я о нем написал в англоязычной части форума, но повторю и тут.
    Проблема в том, что в числовое поле базы данных записывается нечисловое значение. При этом проверка записи в базу не производится, иначе была бы обнаружена ошибка MySQL для таблицы site_tmplvar_contentvalues:
    Incorrect integer value: ’’ for column ’id’ (SQL: REPLACE INTO `<путь>site_tmplvar_contentvalues` (id, tmplvarid, contentid, value) VALUES (’’, 1, 11, ’xxxx’)).

    Для решения проблемы нужно найти файл manager/processors/save_content.processor.php
    и заменить в нем строки
    $tvChanges[] = '(\''.$tvIds[$tvId].'\', '.$tvId.', '.$id.', \''.mysql_escape_string($tvVal).'\')';

    на
    if ($tvIds[$tvId] == '') $tvIds[$tvId]="NULL";
    else $tvIds[$tvId]='\''.$tvIds[$tvId].'\'';
    $tvChanges[] = '('.$tvIds[$tvId].', '.$tvId.', '.$id.', \''.mysql_escape_string($tvVal).'\')';

    В итоге в базу будет отправляться запрос
    REPLACE INTO `<путь>site_tmplvar_contentvalues` (id, tmplvarid, contentid, value) VALUES (NULL, 1, 11, ’xxxx’)
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
      • 28814 ☆ A M B ☆
      • 1,086 Posts
      Странно, никогда не сталкивался с такой проблемой.
      Более того, проверил на существующем сайте (версия MODx 0.9.6.1 B) - все в порядке.
      modx.ru вертится на MODx 0.9.6.1, проверил - также все ОК.
        Разработка сайтов и программных модулей на MODX.
        Опыт работы на MODx с 2005 года. Высокое качество.
        Компания Baltic Design Colors: http://www.bdcolors.ru.
        • 785
        • 2,113 Posts
        В англоязычной части форума упоминается что-то о настройке sql_mode и режиме strict. Вообще-то можно просто проверить - попробовать в числовое поле базы данных ввести значение ’’, то есть ничего. Если выдаст ошибку (как у меня на локальном компьютере и на хостинге), то будут проблемы с работой в MODx, если нет – то проблем не будет. В принципе правильно использовать значение NULL, но при некоторых настройках MySQL допускается и ’’.
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации