Добавление поля в таблицу modx_user_attributes

Здравствуйте. Добавил поле в таблицу modx_user_attributes, в core/schema/modx.mysql.schema.xml прописал все что надо, далее на сколько я понимаю необходимо запустить build.modx.php. При выполнении происходит ошибка. Видимо он не может найти файл в этой строчке:
require_once (dirname(dirname(dirname(dirname(__FILE__)))) . '/_build/build.properties.php');
т.к. в принципе у меня нет такой папки _build. Так вот вопрос, что это за файл и что делать дальше?
P.S поле extended для хранения данных не подходит, т. к. нужно осуществлять выборку с помощью LIKE из этой таблицы, а в поле extended русские символы перекодируются в шляпу вида \u0411\u0426 \u0418\
Андрей Ларистов
26 ноября 2013, 13:48
modx.pro
3 541
0

Комментарии: 11

Clean
26 ноября 2013, 23:27
0
Какую-то ерунду сделал, очень плохо менять ядро.
Какая конечная цель? Что куда надо добавить?
    Алексей Башкатов
    27 ноября 2013, 12:27
    0
    Не совсем понимаю, почему таблицу с атрибутами пользователей вы считаете ядром. Это всего лишь предопределенная таблица с данными. К ней прилагаются предопределенные схема, модель и описания интерфейсов. Я не силен во внутренностях модикса, могу ошибаться, но, вроде как, ядро на общих условиях обрабатывает как предопределенные данные, так и данные плагинов. В описание интерфейса добавлять это поле не требуется. А чем плохим может обернуться дополнение модели (корректное дополнение) — я не понимаю.
    Конечная цель: нужно поле в атрибутах пользователя, которое будет участвовать в большинстве запросов к таблице пользователей. Разумеется, запросы хочется формировать через xPDO.
    Yana V
    27 ноября 2013, 11:01
    0
    там же есть дополнительные properties которые хранятся в JSON массиве, можно задействовать их
      Алексей Башкатов
      27 ноября 2013, 12:17
      0
      Дополнительное поле extended тем и не годится, что это JSON-массив. Добавляемой поле должно активно участвовать в запросах к БД.
      Андрей Ларистов
      27 ноября 2013, 17:09
      0
      В общем, поле, которое мне нужно было добавить «company». Для этого нужно было в core/model/modx/mysql/moduserprofile.map.inc.php добавить в массив
      $xpdo_meta_map['modUserProfile']['field']
      следующее:
      'company' => '',
      и в массив
      $xpdo_meta_map['modUserProfile']['fieldMeta']
      следующее:
      'company' =>
          array (
            'dbtype' => 'text',
            'precision' => '100',
            'phptype' => 'string',
            'null' => true,
            'default' => 'NULL'
            ),
      Для добавления этого поля в интерфейс админки нужно подкорректировать файл /manager/assets/modext/widgets/security/modx.panel.user.js, добавив:
      {
      	id: 'modx-user-company'
      	,name: 'company'
      	,fieldLabel: 'Компания'
      	,xtype: 'textfield'
      	,width: 200
              ,maxLength: 100
      }
      , всем спасибо за участие.
        Евгений Дурягин
        27 ноября 2013, 18:26
        0
        И при следующем обновлении MODX это все затрется…
          Алексей Башкатов
          27 ноября 2013, 19:08
          0
          Наверняка не знаю, но мне кажется, обновляется только то, что изменилось и затрется только в том случае, если будет изменена модель и интерфейс (что мне представляется маловероятным). Не знаю, по какой логике действуют разработчики ModX, но я бы при обновлении плясал бы от схемы и, если есть изменения — дополнял бы схему и по ней пересобирал модель. С обновлением интерфейса, правда, от схемы точно не оттолкнешься. В любом случае, деваться некуда, т.к. требуется фильтрация по данному полю. При первом же обновлении можно будет проверить.
            Евгений Дурягин
            27 ноября 2013, 20:50
            0
            В MODX обновления файлов происходит распаковкой из архива ручками.
            Поэтому если сам не проконтролируешь какие файлы перезаписывать из архива — все затрется.

            А выход есть, можно, например, расширить класс пользователя и сделать связь со своей таблицей дополнительных аттрибутов.
              Clean
              28 ноября 2013, 09:43
              0
              Если нужно всего нескока полей — то используй не используемые поля от modUser — например remote_Data или remote_Key — это самый простой вариант.

              У меня схожая ситуация, только мне как раз нужен Extended т.к полей слишком много.
        Alex Vakhitov
        27 ноября 2013, 19:52
        0
        На мой взгляд правильней было делать связью «One to One»
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            11