Добавление полей в $_modx->resource.

Подскажите может кто сталкивался. Пишу плагин почти в слепую ориентируясь на minishop2. Создал необходимы таблицы:
<object class="hdOrder" extends="modResource">
        <composite alias="Data" class="hdOrderData" local="id" foreign="id" cardinality="one" owner="local"/>
    </object>

    <object class="hdOrderData" table="hd_orders" extends="xPDOSimpleObject">
        <field key="contact" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="true"/>

        <index alias="contact" name="contact" primary="false" unique="false" type="BTREE">
            <column key="contact" length="" collation="A" null="false"/>
        </index>

        <aggregate alias="Order" class="hdOrder" local="id" foreign="id" cardinality="one" owner="foreign"/>
    </object>
Хочу вывести значения переменных из таблицы hdOrderData на странице типа $_modx->resource.article, но не выводится. Само присоединение сделано через плагин
case 'OnLoadWebDocument':
        // Set product fields as [[*resource]] tags
        if ($modx->resource->get('template') === 7) {
            if ($dataMeta = $modx->getFieldMeta('hdOrderData')) {
                unset($dataMeta['id']);
                $modx->resource->_fieldMeta = array_merge(
                    $modx->resource->_fieldMeta,
                    $dataMeta
                );
            }
        }
        break;
Нужен вывод $_modx->resource.contact
Евгений Лазарев
08 июня 2021, 18:12
modx.pro
571
-1

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

Роман
09 июня 2021, 09:12
0
Может просто добавить:
$modx->resource->set("dataMeta", $dataMeta);
Николай Савин
11 июня 2021, 19:20
+1
Вы только XML таблицу сделали или классы под каждую таблицу тоже добавили?
Через $modx->getObject(hdOrder) записи доступны?
    Евгений Лазарев
    11 июня 2021, 19:25
    0
    Делал на основе modextra. Там автоматическое создание классов. Да через getObject все показывает. Думал может в processor связка какая но нет.
      Николай Савин
      11 июня 2021, 19:36
      +1
      Нет процессоры тут не при чем.
      Вся магия в плагине на который вы ссылаетесь и модифицированном методе get класса msproduct.class.php
        Евгений Лазарев
        13 июня 2021, 16:18
        0
        Спасибо тебе добрый человек. Я на него думал, но так и не смог понять где он подключается (сам msproduct.class.php).
          Николай Савин
          13 июня 2021, 16:20
          +1
          Он подключается автоматически через mysql карту объекта
      Евгений Лазарев
      13 июня 2021, 16:48
      0
      Глупость сказал, не посмотрел на сокращение. Записи не доступны. Я подумал про hdOrderData. Файл hdorder.class.php при die() в __construct ноль внимания. хотя в mysql карту объекта все есть. Единственное различие с minishop2 разве что в том что нет поля class_key.
      Евгений Лазарев
      14 июня 2021, 15:57
      0
      Короче вдруг кому пригодится. Вся магия происходит в msproduct.class.php, пока еще я там не разбирался. Но вызываться этот класс просто так не будет. Чтобы он вызывался, необходимо как в minishop2 добавить существующее поле class key с именем твоего класса
      <object class="hdOrder" extends="modResource">
              <field key="class_key" dbtype="varchar" precision="100" phptype="string" null="false" default="hdOrder"/>
      
              <composite alias="Data" class="hdOrderData" local="id" foreign="id" cardinality="one" owner="local"/>
          </object>
      И только после этого msproduct.class.php или в данном случае hdorder.class.php будет вызываться.
        Роман
        15 июня 2021, 10:23
        0
        Вот тут почитайте про плагины товаров, думаю, все встанет на свои места.
          Евгений Лазарев
          15 июня 2021, 11:18
          0
          Спасибо Роман конечно, но вы уже второй раз не по делу пишите. Тут речь идет о СОЗДАНИИ своего компонента на основе существующего.
            Роман
            15 июня 2021, 11:27
            0
            Не буду вам больше писать. Я понял, что это бесполезно, когда даже прочитать документацию до конца не могут.
              Евгений Лазарев
              15 июня 2021, 11:35
              0
              Роман, извините, не хотел Вас обидеть. Эту документацию я уже много раз читал и понимаю что там находится. Там говорится лишь о удобности использования объекта msProduct, который объединяет в себе другие таблицы. Так же там сказано о возможности подключения своих плагинов и рассказан принцип. Я же хочу написать свой компонент (minishop2 в данном случае не установлен). Но спасибо за Ваше участие. Еще раз прошу прощения, если показался грубым.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        13