MODX XML Import
Приветствую, есть xml файл. Требуется брать из него значения и по ним создавать новую страницу в modx. Не могу понять, как это реализовать
продажа
<property-type>жилая</property-type>
квартира
<creation-date>2019-01-29T11:41:05+03:00</creation-date>
<last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
Россия
Ленинградская область
Всеволожский район
<locality-name>пос. Бугры </locality-name>
Всеволожский район, посёлок Бугры, Тихая улица, 1
Парнас
<time-on-transport>10</time-on-transport>
60.0697
30.4123
storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo11789_43887e641.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20050_afdc7b7d1.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20050_8d89b34b1.jpg
34.18
кв. м
Жилой комплекс будет обеспечен собственной социальной инфраструктурой, включающей три детских сада на 775 мест и общеобразовательную школу, рассчитанную на 1 383 учащихся. На первых этажах зданий предусмотрены коммерческие помещения, в которых разместятся объекты инфраструктуры шаговой доступности — магазины, аптеки, салоны красоты и другие, необходимые для комфортной жизни службы и сервисы. Для удобства автомобилистов предусмотрен паркинг вместимостью свыше 4 000 машиномест, а также гостевые парковочные зоны.
1
<rooms-offered>1</rooms-offered>
7
<floors-total>17</floors-total>
<building-name>Новые Горизонты</building-name>
<yandex-building-id>51646</yandex-building-id>
<building-type>Кирпично-монолит.</building-type>
<building-section>очередь 1, корпус 1</building-section>
<built-year>2017</built-year>
<ready-quarter>2</ready-quarter>
<building-state>hand-over</building-state>
+
<is-elite>-</is-elite>
+
2555000
RUR
<deal-status>переуступка</deal-status>
<sales-agent>
+
агентство
HORS
<email/>
</sales-agent>
предчистовая
Комментарии: 13
По-разному, например:
1. Загрузить XML-файл куда-нибудь в бэкенд.
2. Написать сниппет, в нем создать из XML-файла объект с помощью функции simplexml_load_file();
3. Создать переменные, обращаясь к нужным полям объекта;
4. Создать объект с помощью $modx->newObject('modDocument');
5. Прописать нужные параметры из переменных;
1. Загрузить XML-файл куда-нибудь в бэкенд.
2. Написать сниппет, в нем создать из XML-файла объект с помощью функции simplexml_load_file();
3. Создать переменные, обращаясь к нужным полям объекта;
4. Создать объект с помощью $modx->newObject('modDocument');
5. Прописать нужные параметры из переменных;
Как вариант конечно, но товарищ имеет ввиду скорее всего родной импорт от modx, никогда им не пользовался.
Посмотрим, что скажет товариЩЪ)
Любым способом самым надежным и действенным)
Просто в пхп не особо(
Просто в пхп не особо(
Щас, дай ка посмотрю
Сегодня созвездия расположились особым образом и я добрый!)
Вот код. Во-первых, у тебя XML не полностью приведен видимо. Должен быть корень (имя произвольное).
Допустим, XML-файл сидит в папке misc, и называется 77777.xml
Создаем сниппет, назовем его temp.
Сниппет можно вставить куда-нибудь и открыть страницу, он активируется.
Вуаля!
Вот код. Во-первых, у тебя XML не полностью приведен видимо. Должен быть корень (имя произвольное).
Допустим, XML-файл сидит в папке misc, и называется 77777.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
продажа
<property-type>жилая</property-type>
квартира
<creation-date>2019-01-29T11:41:05+03:00</creation-date>
<last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
Россия
Ленинградская область
Всеволожский район
<locality-name>пос. Бугры </locality-name>
Всеволожский район, посёлок Бугры, Тихая улица, 1
Парнас
<time-on-transport>10</time-on-transport>
60.0697
30.4123
storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo11789_43887e641.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20050_afdc7b7d1.jpg
storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20050_8d89b34b1.jpg
34.18
кв. м
Жилой комплекс будет обеспечен собственной социальной инфраструктурой, включающей три детских сада на 775 мест и общеобразовательную школу, рассчитанную на 1 383 учащихся. На первых этажах зданий предусмотрены коммерческие помещения, в которых разместятся объекты инфраструктуры шаговой доступности — магазины, аптеки, салоны красоты и другие, необходимые для комфортной жизни службы и сервисы. Для удобства автомобилистов предусмотрен паркинг вместимостью свыше 4 000 машиномест, а также гостевые парковочные зоны.
1
<rooms-offered>1</rooms-offered>
7
<floors-total>17</floors-total>
<building-name>Новые Горизонты</building-name>
<yandex-building-id>51646</yandex-building-id>
<building-type>Кирпично-монолит.</building-type>
<building-section>очередь 1, корпус 1</building-section>
<built-year>2017</built-year>
<ready-quarter>2</ready-quarter>
<building-state>hand-over</building-state>
+
<is-elite>-</is-elite>
+
2555000
RUR
<deal-status>переуступка</deal-status>
<sales-agent>
+
агентство
HORS
<email/>
</sales-agent>
предчистовая
</root>
То, что в XML есть дефисы, тоже не очень хорошо. Но можно при выполнении запросов обернуть нужные поля в фигурные скобки с кавычками.Создаем сниппет, назовем его temp.
<?php
$xml= simplexml_load_file('misc/77777.xml'); //создаем объект из xml
$parent = 2; //ид родителя
$template = 3; //ид шаблона
$pagetitle = $xml->{'property-type'}[0]; //берем отсюда название
$alias = 'page'; //имя адреса
$publishedon = $xml->{'creation-date'}[0]; //дата создания
$published = true; //опубликовано
$introtext = $xml->{'building-name'}[0]; //аннотация
$content = $xml->{'building-type'}[0]; //контент
$doc = $modx->newObject('modDocument'); //создаем и заполняем
$doc->set('parent',$parent);
$doc->set('template',$template);
$doc->set('pagetitle',$pagetitle);
$doc->set('alias',$alias);
$doc->set('publishedon',$publishedon);
$doc->set('published',$published);
$doc->set('introtext',$introtext);
$doc->setContent($content);
$doc->save(); //сохраняем
Использовать свои поля по аналогии. Можно обернуть в цикл и создавать несколько.Сниппет можно вставить куда-нибудь и открыть страницу, он активируется.
Вуаля!
ничесе)
Спасибо большое, вроде понял что куда и как)
Сейчас буду тогда пробовать и дополнять)
Спасибо большое, вроде понял что куда и как)
Сейчас буду тогда пробовать и дополнять)
Извиняюсь, что наглею)
Но при попытке спарсить этим кодом мой xml он ни в какую не хочет выводить значения
Но при попытке спарсить этим кодом мой xml он ни в какую не хочет выводить значения
<?xml version="1.0" encoding="utf-8"?>
<realty-feed xmlns="http://webmaster.yandex.ru/schemas/feed/realty/2010-06">
<generation-date>2019-02-12T20:49:06+03:00</generation-date>
<offer internal-id="N20050">
<type>продажа</type>
<property-type>жилая</property-type>
<category>квартира</category>
<creation-date>2019-01-29T11:41:05+03:00</creation-date>
<last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
<location>
<country>Россия</country>
<region>Ленинградская область</region>
<district>Всеволожский район</district>
<locality-name>пос. Бугры </locality-name>
<address>Всеволожский район, посёлок Бугры, Тихая улица, 1</address>
<metro>
<name>Парнас</name>
<time-on-transport>10</time-on-transport> </metro>
<latitude>60.0697</latitude>
<longitude>30.4123</longitude>
</location>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo11789_43887e641.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20050_afdc7b7d1.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20050_8d89b34b1.jpg</image>
<area>
<value>34.18</value>
<unit>кв. м</unit>
</area>
<description>
Жилой комплекс будет обеспечен собственной социальной инфраструктурой, включающей три детских сада на 775 мест и общеобразовательную школу, рассчитанную на 1 383 учащихся. На первых этажах зданий предусмотрены коммерческие помещения, в которых разместятся объекты инфраструктуры шаговой доступности - магазины, аптеки, салоны красоты и другие, необходимые для комфортной жизни службы и сервисы.
Для удобства автомобилистов предусмотрен паркинг вместимостью свыше 4 000 машиномест, а также гостевые парковочные зоны.
</description>
<rooms>1</rooms> <rooms-offered>1</rooms-offered> <floor>7</floor> <floors-total>17</floors-total> <building-name>Новые Горизонты</building-name>
<yandex-building-id>51646</yandex-building-id> <building-type>Кирпично-монолит.</building-type> <building-section>очередь 1, корпус 1</building-section>
<built-year>2017</built-year>
<ready-quarter>2</ready-quarter>
<building-state>hand-over</building-state> <lift>+</lift>
<is-elite>-</is-elite>
<parking>+</parking>
<price>
<value>2555000</value>
<currency>RUR</currency>
</price>
<deal-status>переуступка</deal-status>
<sales-agent>
<name> </name> <phone>+</phone>
<category>агентство</category>
<organization>HORS</organization>
<email></email>
</sales-agent>
<renovation>предчистовая</renovation>
</offer>
<offer internal-id="N20051">
<type>продажа</type>
<property-type>жилая</property-type>
<category>квартира</category>
<creation-date>2019-01-29T11:41:06+03:00</creation-date>
<last-update-date>2019-01-29T12:34:55+03:00</last-update-date>
<location>
<country>Россия</country>
<locality-name>Санкт-Петербург</locality-name>
<sub-locality-name>Кировский</sub-locality-name>
<address>Двинская ул., 8, к. 3, литера А</address>
<metro>
<name>Балтийская</name>
<time-on-foot>15</time-on-foot> </metro>
<latitude>59.9069</latitude>
<longitude>30.2513</longitude>
</location>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_390385ad1.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_b8d66ef41.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_eddcf1b91.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_69ad9d481.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_dom/photo12145_628a458b1.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/photo20051_3fc206f21.jpg</image>
<image >https://storage4.kv1.ru/clients/hors/images/base/base_new_kv/plan20051_849483991.jpg</image>
<area>
<value>89.37</value>
<unit>кв. м</unit>
</area>
<description>
Квартира в строящемся жилом комплексе "Екатерингоф" в Кировском районе. От станции метро "Нарвская" - 15 минут пешком. В 170 метрах детский сад, три школы. Поблизости есть клиника и медицинский центр, продуктовые магазины.
Квартиры сдаются с качественной предчистовой отделкой, большие кухни, кладовые. Разные варинты планировок. Звоните и мы подьерем для Вас лучший вариант.
</description>
<new-flat>1</new-flat> <rooms>3</rooms> <rooms-offered>3</rooms-offered> <floor>6</floor> <floors-total>13</floors-total> <building-name>Панорамы залива</building-name>
<yandex-building-id>56558</yandex-building-id> <building-type>Кирпично-монолит.</building-type> <building-section>Корпус 1</building-section>
<built-year>2019</built-year>
<ready-quarter>2</ready-quarter>
<building-state>unfinished</building-state> <lift>+</lift>
<is-elite>-</is-elite>
<parking>-</parking>
<price>
<value>7150000</value>
<currency>RUR</currency>
</price>
<deal-status>переуступка</deal-status>
<sales-agent>
<name> </name> <phone>+</phone>
<category>агентство</category>
<organization>HORS</organization>
<email></email>
</sales-agent>
<renovation>предчистовая</renovation>
</offer>
</realty-feed>
Добрый день, можете подсказать как сохранять в TV поля?
Пробую $doc->setTVValue('image',$image);
Если в дефолтные поля, то все работает но в TV не сохраняет, в чем может быть причина?
Пробую $doc->setTVValue('image',$image);
Если в дефолтные поля, то все работает но в TV не сохраняет, в чем может быть причина?
Посмотри, может в reality-feed параметр мешает.
Я бы убрал все параметры в тегах с помощью автозамены.
PHP может ругаться из-за каких-то символов.
Можно еще поодиночке проверять с помощью echo.
Я бы убрал все параметры в тегах с помощью автозамены.
PHP может ругаться из-за каких-то символов.
Можно еще поодиночке проверять с помощью echo.
В том то и дело, что нельзя ничего менять в xml
но на выбор есть 2 вида, Тот что я показывал и еще один
но на выбор есть 2 вида, Тот что я показывал и еще один
Только что проверял твой XML какой есть, без каких-либо изменений.
Все нормально парсится.
Проверь сначала с помощью echo, типа того:
Также правильно обращаться к полям XML. Где-то мб опечатка.
Проверь версии PHP и MODX.
Причина может быть где угодно!
Все нормально парсится.
Проверь сначала с помощью echo, типа того:
<?php
$xml= simplexml_load_file('misc/77777.xml');
echo $xml->offer[0]->type[0];
Проверь путь к файлу XML, имя и тд.Также правильно обращаться к полям XML. Где-то мб опечатка.
Проверь версии PHP и MODX.
Причина может быть где угодно!
Нашел в чем проблема, он не понимает русский
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.