Drupal → Parser 2

04.04.2012

Допилил до более-менее рабочего состояния вторую версию парсера. Основные отличия:

  • Парсить можно в любые сущности зарегистрированные на сайте — ноды, термины, пользователи, комментарии, товары и т.д.
  • Работа с сущностями ведётся с помощью Entity metadata wrappers.
  • Поддержка всех, доступных для записи, свойств сущности — автор, статус и т.п.
  • Все файлы, скачанные парсером, сохраняются в кэше (public://parser_cache) и при повторном парсинге берутся из него.

Модуль не совместим с первой версией, поэтому перед установкой анинсталим её, удаляем папку с модулем и устанавливаем вторую версию.

Прямая ссылка на скачку последнего снапшота Parser 2.

Если отписываете о найденных багах, то обязательно прикладывайте экспорт задания.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Спасибо за постоянные ответы, мне очень приятно. Я знаю что это означает. Но разве это имеет значение? у меня создается массив изображений. И разве это имеет значение сколько их 1 или несколько?

Выставил одно значение для поле с изображением, изображения стали парситься. А что делать с полям цена и артикул? я не понимаю почему они не забиваются в анкету товара? Есть идеи?

Но разве это имеет значение? у меня создается массив изображений. И разве это имеет значение сколько их 1 или несколько?

Конечно имеют, Друпал их по разному хранит :-)

А что делать с полям цена и артикул?

Попробуйте в пост обработке сущности их добавлять.

Читайте описание поля и тут комментарии, где это уже проговаривалось.

Хорошо разберусь, спасибо за наводку. Помогли частично решить проблему)

Не могу сообразить, проштудировал все ответы на страницы. Хандед подсказал использовать в пост обработке: $entity->model = $sku; Но я как это сделать немогу понять. Помоги плз... уже бомбит :)

Разобрался, на друпал 7 меньше года работаю, почитал про entity и сразу догнал, спасибо за помощь ребята.

Паулюс
03.10.2015, 23:39

Здравствуйте! Часть страниц при парсинге выдавали ошибку. Опытным путем вычислил, что это страницы, имеющие часть адреса в кириллице.
Пример страницы: http://ruslanglyantsev.ru/ezoterika/Молодой-да-старый
Парсер выдает ошибку, что страница не найдена:

Ошибка при закачке "http://ruslanglyantsev.ru/ezoterika/Молодой-да-старый": Not Found, Результат: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>ПРОИЗВЕДЕНИЯ | Страница не найдена</title>....

Возможно кто-то сталкивался с такой проблемой? Или есть простое решение без изменения адресов на исходном сайте. Спасибо!

Можно ли в качестве "Remote ID" указывать URL страницы?
Если да, то как?

Дело в том что на странице есть возможность указать заголовок в качестве "Remote ID", но есть вероятность что заголовок изменится.

Спасибо за парсер.

Спасибо, xandeadx, за классный модуль!
Он мне заменил почти весь Datacol.
Скорость работы просто супер!

Нужна помощь, а именно, в поле field_tags не додумался как правильно написать алгоритм, чтобы указать термин таксономии "Услуги"

Пишу следующее:

$terms=Услуги;
return $terms;

Начинаю парсить, но термин таксономии не привязвается к спарсенным нодам.

Как написать правильно, чтобы к ноды приняли термин "Услуги" ???

Делал новостной агрегатор и надо привязать к нодам уже созданные термины таксономии, такие как, Политика, Культура, Спорт, Экономика и т.д.................

preg_mach('/"latitude":(.+?),"longitude":(.+?),/', $page, $matches);
Семен
07.01.2016, 22:45

Я не программер, сложно разобраться, как спарсить сразу несколько картинок в поле изображение? Как я понимаю нужно использовать foreach, но как там дальше не въезжаю, буду признателен за помощь.

Сейчас код выглядит так:
return array(
'file' => $doc->find('.productPhotosList ul li a')->attr('href'),
);

Естественно когда в настройках поля ставлю несколько изображений происходит ошибка.
Когда одно изображение, тогда все работает.

Семен
07.01.2016, 23:04

Разобрался, спасибо Psyh! Прочитал внимательнее и заработало. И тебе спасибо xandeadx за модуль, мега-крутая штука!!!
Сделал так:

$images = array();
foreach ($doc->find('.productPhotosList ul li a') as $b) {
$images[] = (pq($b)->attr("href"));
}
return $images;

Да и такой вопрос еще, настраивал на другом сайте и у меня картинки каким то образом которые находяться в статье тоже скачивались, но настроил на другом и почему то не подхватывает. Я так и не понял в чем прикол, можете объяснить?

Семен
08.01.2016, 01:52

Уже 3 часа долблюсь не могу понять как мне product соединить с product display.
На той странице, на которой я парсю товары есть артикул, его я достаю при парсинге product, вот так: return $doc->find('#qproduct_id span')->text();

Потом при парсинге Product display я в поле товара вставляю этот же код, при парсинге он не вставляет в это поле артикул и все. Как я понимаю там нужно использовать list, но как это сделать я понятия не имею в PHP не волоку. Таже пробовал с помощь parser_map нифига не понял как.

Если можно дайте пожалуйста развернутый ответ с примерами кода, спасибо.

в поле надо возвращать id товара, а не sku

Виталий
04.02.2016, 12:16

Как очистить поле, если в ранее созданной сущности поле было заполнено, а при новом запуске парсера оно пустое уже?
Поле такого формата:

PHP код, который должен вернуть массив значений поля (array(значение1, значение2, ...)). Каждое значение должно быть в формате:

array(
'file' => $file, // Файл. (file, required)
)

return array(array('file' => 0)); не помогает. Надо узнать сколько значений было в существующей ноде, и передать такой массив с пустыми значениями?

Или как научить парсер обнулять поле перед записью?

Добрый день! Я пытаюсь спрасить сайт с видео youtube, но мне надо засунуть их в поле типа "файл", с виджетом Media и модулем Media: oEmbed.
В справке парсера к полю выдается подсказка что надо вернуть такое:

array(
  'file' => $file, // The file. (file, required)
)

Я с страницы выдираю URL видео, передлываю в короткую ссылку:

$url = $doc->find('.entry iframe')->attr('src');
$urlParts = parse_url($url);
$videoId = explode('/', $urlParts['path']);


return ['file' => "https://youtu.be/$videoId[2]"];

Но таким макаром не работает, в логах:

Файл "https://youtu.be/EsXIWbf1Z1c" закачан не будет, так как его тип "" не в списке допустимых.

Видимо для медия модуля есть хитрость, не сталкивались? Спасибо.

Вот нашел решение, подправил _parser_prepare_field_file полный ответ тут - http://dru.io/question/5902

/**
 * Prepare field type "file"
 */
function _parser_prepare_field_file(&$result, $field_info, $field_instance, $entity, $job, $base_url) {
  if (isset($result['type'])){

    $file = $result['file'];

    $fileScheme = file_stream_wrapper_uri_normalize('oembed://' . drupal_encode_path($file));
    $fileObject = file_uri_to_object($fileScheme);

    $info = media_oembed_get_data($file);

    if (!empty($info['title'])) {
      $filename = truncate_utf8($info['title'], 255);
    }
    
    $fileObject->filename = $filename;
    $file = file_save($fileObject);
    $result['file'] = $file->fid;

  } else {
   пошел старый код....
}

Ну а в задаче парсинга поля сделал так

$url = $doc->find('.entry iframe')->attr('src');
$urlParts = parse_url($url);
$videoId = explode('/', $urlParts['path']);

$file .= "https://youtu.be/";
$file .= $videoId[2];

return ['file' => $file, 'type' => 'oembed'];
Гость
03.03.2016, 08:53

Добрый день! Подскажите пожалуйста! Как сделать чтоб не создавались товары с одинаковыми названиями (проверить на уникальность) и если уже есть товар с таким названием просто обновить его (если нужно).

Привет! как можно вывести блок со ссылкой, откуда спарсена страница при DS?

сделайте запрос в таблицу parser_map, выведите адрес

Привет! Подскажи как пропарсить страницу, если контент на ней загружается после загрузки страницы?

Спасибо, но не работает
return $doc_parser_get_page_by_url(url)->find('.title')->text();
Подскажите где ошибка? или как правильно прописать?

Гость
28.08.2016, 18:44

Реально модуль классный и если немного разобраться в API Drupal то практически получится тот же известный Aparser ток без многопотока.
Пишу может кому то пригодиться такая инфа сам просто мучался долго итак есть поле стартовая страница в нее можно указать не более 65 535 символов но когда урлов много и маску невозможно указать че делать?
Заходим в phpmyadmin находим таблицу: parser_jobs -> структура -> start_url меняем значение text на longtext ! Все добавляем но не более 4 294 967 295 символов.

Подскажите, как быть, если нужно спарсить источник, который могут просматривать только залогиненные пользователи?

залогинитесь в поле "Код предварительной инициализации"

Спасибо! Не заметил сразу. Отличный модуль, с виду сложный, но с подсказками и примерами разобраться очень просто.

Простите, это опять я. Как спарсить картинки, если у них не указано в ссылке расширение (картинки в cdn)? При парсинге выходит сообщение: Файл "такой-то" закачан не будет, так как его тип "" не в списке допустимых. ?

Гость
10.10.2016, 07:46

Здравствуйте. Можно ли сэмулировать паузу после захода на страницу, т.е. закачать страницу еще раз после того, как парсер побыл на ней секунд пять? А то она подгружается Ajax'ом это время...

neovictor
12.11.2016, 02:09

В drupal commerce может возникнуть такая ошибка:

Integrity constraint violation: 1062 Duplicate entry '1916' for key 'sku'

Нужно заменить код:

/**
 * Add row in {parser_map} table.
 */
function _parser_map_save($record) {
	db_merge('parser_map')
		->key(array('entity_id' => $record['entity_id']))
		->fields(array(
			'jid' => $record['jid'],
			'url' => $record['url'],
			'element' => $record['element'],
			'remote_id' => $record['remote_id'],
		))
		->execute();
}

На:

/**
 * Add row in {parser_map} table.
 */
function _parser_map_save($record) {
	db_merge('parser_map')
		->key(array('entity_id' => $record['entity_id'], 'jid' => $record['jid']))
		->fields(array(
			//'jid' => $record['jid'],
			'url' => $record['url'],
			'element' => $record['element'],
			'remote_id' => $record['remote_id'],
		))
		->execute();
}

Это связано с тем что в двух парсерах (один для продукта, другой для ноды) могут пересекаться entity_id и заменяться на новые. Нужно добавить второй уникальный параметр к key в db_merge.

P. S. Модуль супер.

Гость
23.11.2016, 00:05

Александ, я создал свою cущность, но свойства сущности не видны для настроек, можете подсказать что сделать чтобы модуль увидел? Спасибо

Проблема с кирилическими ссылками в разметке сайта, парсинг валится с ошибкой, как решить?

Парсер хороший, но возникает много вопросов. Например - как закрыть от парсинга маской страницы типа www.название-сайта/название-категории/название-статьи/comments ? Дело в том, что комментарии к статье - на отдельной странице, и верстка страницы статьи и верстка страницы с комментариями к статье похожи (аналогичные тэги). Как решить проблему?

2 xandeadx Спасибо! Не думал что так просто! А как сделать такую вещь - превратить все ссылки в спарсенном тексте в обычный текст?

Привет!
подскажите, если страница в режиме списка, только заголовок, а картинка и инфа подгружается Ajax-ом по ссылке Подробнее. Как имитировать такое нажатие в парсере?

подскажите, если страница в режиме списка, только заголовок, а картинка и инфа подгружается Ajax-ом по ссылке Подробнее. Как имитировать такое нажатие в парсере?

Непонятно получилось ))
На странице отображается заголовок сущности и кнопка Подробнее, нажав на которую появляется допинфа, которую тоже надо парсить.

С помощью модуля никак не имитировать. Пользуйтесь drupal_http_request().

И снова про замену ссылок в спарсенном тексте на обычный текст. Пытаюсь использовать регулярные выражения. Пишу:

$alltext = $doc->find('div.b-article__body')->html();
foreach($doc->find('div.b-article__body a')->html() as $a) {
$b = pq($a)->text();
$alltext = preg_replace($a, $b, $alltext);
}

$textbody = array(
'value' => $alltext,
'format' => 'full_html',
);

return $textbody;

При парсинге вываливаются ошибки типа Warning: Invalid argument supplied for foreach() в функции eval() , ссылки текстом не заменяются. Конечно можно примитивно скрыть ссылки поставив у поля формат filtered_html но это не выход.

Не работает(( После включения модуля сразу белый экран на всём сайте и в админке в том числе((

2 Влад
Не хватает оперативной памяти сервера, правь хтаксесс.

Возможен ли запуск автоматически через Кронтаб нескольких парсеров одного за другим? При попытке такого запуска у меня отрабатывает только первый парсер, остальные запускаются, но каждый создает 0 сущностей.

Гость
27.01.2017, 01:30

Спасибо за модуль! Подскажите, как правильно обновиться с 7e059b3 на 9849857? Перезалил файлы, но пропал PHP код для полей.

Гость
27.01.2017, 13:01

Да, update.php не запускал, а запустив получил вот такое и парсер не пашет: PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'base.proxies' in 'field list': SELECT base.jid AS jid, base.title AS title, base.start_url AS start_url, base.test_url AS test_url, base.only_this_domen AS only_this_domen, base.depth AS depth, base.parse_limit AS parse_limit, base.white_list AS white_list, base.black_list AS black_list, base.check_code AS check_code, base.save_url AS save_url, base.no_update AS no_update, base.site_charset AS site_charset, base.charset_fix AS charset_fix, base.entity_type AS entity_type, base.bundle AS bundle, base.remote_id_code AS remote_id_code, base.fields_code AS fields_code, base.list_mode_code AS list_mode_code, base.init_code AS init_code, base.prepare_code AS prepare_code, base.headers AS headers, base.proxies AS proxies, base.force_download AS force_download, base.force_download_list AS force_download_list, base.sleep AS sleep, base.run_period AS run_period, base.last_run AS last_run, base.status AS status, base.module AS module FROM {parser_jobs} base WHERE (base.status IN (:db_condition_placeholder_0, :db_condition_placeholder_1, :db_condition_placeholder_2)) ; Array ( [:db_condition_placeholder_0] => 3 [:db_condition_placeholder_1] => 2 [:db_condition_placeholder_2] => 6 ) в функции EntityAPIController->query() (строка 187 в файле .../public_html/sites/all/modules/entity/includes/entity.controller.inc) Можете подсказать?

Гость
27.01.2017, 14:47

Выключил модуль, но анисталить не стал, удалил папку и залил новую- обновление базы прошло без ошибок. Структура на месте, парсер работает. xandeadx, еще раз спасибо за отличный модуль!

Гость
14.02.2017, 14:29

xandeadx, у меня еще несколько вопросов к вам:
Есть ли какое-то решение для этого: http://xandeadx.ru/blog/drupal/554#comment-13871 ?
Второй вопрос: как перенести результаты парсинга из одного задания в другое с сохранением Remote ID, Original URL и т.д.? Оба задания парсились в одну и ту же сущность, пересечений нет. Поменять jid в parser_map будет достаточно, чтобы задание "восприняло" спарсенные сущности за свои? Обязательно ли менять parser_urls?
И еще, сюда напишу наблюдение, по поводу http://xandeadx.ru/blog/drupal/561 есть подозрение, что не парсятся картинки если донор на https. Заранее спасибо!

1. Перед сохранение сущности удалите значения из поля
2. Попробуйте

Гость
16.02.2017, 19:25

Я извиняюсь за беспокойство, но обнаружилась проблема: не импортируются задания в последней версии. Вернее импортируются, но поля с php кодом остаются пустые. Проверено на разных сборках, разных хостингах. Предыдущую версию тоже проверил - с ней все ок. Как бы починить?

ForgeHead
20.02.2017, 17:19

Отличный модуль. Не могу только понять как взаимодействовать с полями типа материала "Товар" модуля UberCart 3. Такими как Артикул и Цена. Я так понимаю это нужно в постобработке делать?

Игорь
15.03.2017, 00:37

Спасибо за прекрасный модуль!

Появился вопрос:
парсинг прерывается и в логах наблюдаю вот такую ошибку:
"Ошибка при записи в $entity_wrapper->field_category: Invalid data value given. Be sure it matches the required data type and format. Value at node()->field_category:"

Array
(
    [464] => Велосипеды
    [465] => Карбоновые велосипеды
)

я использую вот такой код
return parser_create_terms_hierarchy($terms,10);
Он работает отлично, создает термины в иерархии.
Но почему ошибка?
предполагаю что функция «parser_create_terms_hierarchy» занимается созданием терминов и пытается создать термины, но они уже существуют, нет?

Вот полный код по полю «категория»:

$terms = array();
foreach ($doc->find('#CatNavi .Current a') as $a) {
  $terms[] = pq($a)->text();
}
if (empty($terms)) {
return false;
} else {
return parser_create_terms_hierarchy($terms,10);
};

1. Если поле пустое, то надо возвращать NULL, о чём написано в описании, а не false.
2. Если поле может содержать только одно значение, то надо возвращать id или имя термина, а не массив, о чём тоже написано в описании к полю.

Игорь
15.03.2017, 01:32

Спасибо, теперь понял в чем ошибка!

Гость
12.04.2017, 08:51

Подскажите пожалуйста. Парсеры работают отлично. Вопрос в следующем. Не могу их импортировать. Делаю экспорт и на том же сайте вставляю код, меняя jid, они подгружаются, но только без скриптов php. Пробовал плагином от np++ менять коды на символы - вообще отказывается загружать.

Игорь
05.06.2017, 12:07

Можно ли очистить директорию 'parser_cache' до того как парсер полностью спарсил?
Чем это чревато?

Антон
16.06.2017, 14:28

Парсер может работать с полями типа field_collection? Всячески пытаюсь передать значение для заполнения поля, все безрезультатно.

Гость
21.06.2017, 11:36

Добрый день! Модуль великолепный, огромное спасибо.
Но возникла следующая проблема, не запускаются несколько заданий, только первое, выше видел коллега писал про такую проблему, но ответа не увидел, поэтому повторяюсь.
Может возможно как-то склеить все задания программно в одно, мне по факту всё равно, главное чтобы отрабатывало автоматом, заранее спасибо за ответ

Гость
26.06.2017, 15:10

Самопроизвольно удаляется файл *.inc
При переносе содержимого в файл *.module в последствии удаляется он, без ошибок в логах и пр., крайне мистически

Гость
02.07.2017, 21:17

Здравствуйте. Подскажите, есть страница с ссылками на статьи из разных категорий, url которых уходит из подуровня начальной страницы. Например, начальная страница: a.ru/b/c, а искомые страницы имеют пути a.ru/d/f/a или a.ru/b/c/s, то есть не подходят под иерархию. Будет ли в этом случае работать парсер? Можно ли настроить его ходить по ссылкам, заключенных в определенные атрибуты?
Спасибо.

Модулю без разницы по каким ссылкам ходить. Ограничить ссылки атрибутами нельзя, только белый и чёрный список.

Игорь
10.07.2017, 19:41

А можно ли сделать иерархию в поле типа term (ноды)?
вот так:
- term1.1
- - term1.2
- - - term1.3
- term2
- - term2.2
- - - term2.3
...
- term3.1
- - term3.2
- - - term3.3
http://xandeadx.ru/blog/drupal/762 Здесь есть пример иерархии, но только на хлебных крошках, то есть лишь одна длинная иерархия в ноде получается.

Гость
01.09.2017, 18:03

Забанили парсинг с сайта https://knigomania.org/load/dlja_detej/lili_i_zapretnaja_magija/5-1-0-3…

При парсинге ничего не парсится, при тестировании отдается только "Этот сайт занимается кражей контента!"

Возможно ли это обойти?

Конечно можно, причём очень просто - не красть контент! )))

Всё, сдаюсь) Прошу помощи, возможно платной.
Имеем страницу: http://forexparty.org/broker/rating/fxstart.html
Задача: парсить комментарии.

Что делаю:
Глубина: 0
Код проверки:
return ($doc->find('.comment-box')->length() > 0);
Тип сущности: Комментарий
Подтип: Страница (поле комментария)

Remote ID:

$attr_id = $doc->find('.comment-anchor')->attr('id');
list(, $cid) = explode('-', $attr_id);
return $cid;

Тема: return $doc->find('h1.title')->text();
Материал:
return 1;
Автор: return 1;
Текст коммента:

return array(
  'value' => $doc->find('.comment-box')->html(),
  'format' => 'full_html',
);

В доп.настройках:
Отмечено "Режим списка"
В элементах списка:

$elements = array();
foreach ($doc->find('#comments-list .comment-box') as $element) {
  $elements[] = pq($element)->html();
}
return $elements;

Итог: парсер меня посылает, ничего не делает. Что не так?

Если парсите список, то для свойств сущности нужно пользоваться $doc_element, а не $doc

xandeadx, не хочет о со мной дружить.
Заменил на $doc_element - не срабатывает.
Я могу оплатить, если сделаете

Во первых, огромное спасибо за модуль!

Хочу заметить что существует такая проблема, когда парсер не может просто проиндексировать весь сайт из-за банальной пагинации на доноре, в том случае если вы выставите глубину паука - 5-6, а страниц пагинации больше 10.

Решил я эту проблему написав кастомную приблуду, которая распарсивает Sitemap.xml донора и на прямую добавляет ссылки в таблицу parser_urls. Было бы хорошо, если бы xandeadx добавил подобный функционал непосредственно в модуль.

Также очень не помешала бы мультипоточность.

За частую, для масштабных проектов приходиться писать отдельные хелперы для пре/пост обработки
данных (на пример для подготовки field collections, создания иерархии терминов в категориях и т.д.). Возможно стоило бы добавить какие-то встроенные механизмы для подключения внешних классов-хелперов для гибкости.

Версия для Drupal 8 тоже очень бы порадовала. =)

Я часто использую данный модуль и готов его делать лучше. Если найдутся единомышленники, и автор не против - можем сделать новые репозиторий и продолжать развитие своими силами.

Еще раз благодарю за отличный модуль!

xandeadx, почему-то mimetype спарсеных картинок определяется другим модулем (views rss) как application/octet-stream, вместо реального, например, image/jpeg. Может есть идеи? Спасибо.

mimetype спарсеных картинок определяется другим модулем (views rss) как application/octet-stream, вместо реального

Тоже столкнулся с таким, решил заменой в функции _parser_copy_file
'filemime' => file_get_mimetype($from_uri),
на
'filemime' => file_get_mimetype(drupal_basename($to_uri)),

Отлично! goodboy, большое спасибо, работает)

Добрый день! Модуль великолепный, огромное спасибо.
Но возникла следующая проблема, не запускаются несколько заданий, только первое, выше видел коллега писал про такую проблему, но ответа не увидел, поэтому повторяюсь.
Может возможно как-то склеить все задания программно в одно, мне по факту всё равно, главное чтобы отрабатывало автоматом, заранее спасибо за ответ

для себя решил этот вопрос сдвигом периодичности запуска в заданиях с запасом, чтобы не было ситуации, когда запускается следующее задание до завершения отработки предыдущего.

Гость
08.05.2018, 17:12

Здравсвтвуйте, подскажите пожалуйста как парсить картинки, пытаюсь сделать что подобное выдает ошибку

return array(
  'file' => $doc->find('.adaptive-image')->attr('src'),
);
webmasternew
08.05.2018, 18:39

Здравсвтвуйте, подскажите пожалуйста как парсить картинки, пытаюсь сделать что подобное выдает ошибку

return array(
  'file' => $doc->find('.adaptive-image')->attr('src'),
);

У вас у изображения класс .adaptive-image ?

Попробуйте

return array(
  'file' => $doc->find('.field-name-field-project-images a:first img')->attr('src'),
);

это для тестовой странице - http://drupal.org/project/zen

Гость
08.05.2018, 18:46

Спасибо за ответ, мне помогло

http://xandeadx.ru/blog/drupal/554#comment-12237

Хотел еще спросить, у меня есть тип материала новости, он завязан с помощью поля entity_reference с материалом страницы сайт который парсится не имеет данного поля для установки связи, но имеется поле с категориями новостей выводимое с помощью термина таксономии, можно ли как то связать названия термина с того сайта и мое поле entity-ref по названию термина

Только у меня с последними обновлениями Drupal'a начала очень долго загружаться форма редактирования парсера, что даже браузеры жалуются на замедление? Или так у многих, но все молчат?)

Нашёл что тормозило - модуль Devel. Закоментил всё что связано с "Техническая информация о поле" и всё заработало. Почему была проблема - не знаю, слава богу эта инфа не очень нужна мне.

Drupal core 7.59, Devel 7.x-1.6

Гость
12.05.2018, 13:27

Если на сайте который парсится есть подгрузка нод через views_infinite_scroll как быть в таком случае?

Помогите, в адресах сайта который пытаюсь парсить содержится #: .../svetilniki/#p1 .../svetilniki/#p2 и .т.д. В результате парсится только первая страница. Что можно сделать? Спасибо заранее.

Гость
13.10.2018, 14:39

Здравствуйте, подскажите пожалуйста есть сайт с новостями который нужно спарсить в ноды на новый сайт, на новом сайте у ноды есть поле ссылка на термин таксономии (темы новостей) с множественным выбором и иерархией, как спрасить ноды со старого сайта так чтобы не дублировать термины, а выбрать из уже существующих.

возвратить имя термина или его tid

Гость
16.10.2018, 16:30

Я так и делал но почему в полях они не указывались, может потому что я при создании ноды использую виджет Term reference tree, а нужно родные типо поля с автодоплнениями?

Гость
17.10.2018, 18:19

Подскажите пожалуйста почему создаются дубликаты нод?

Код поля remote id.

$attr_id = $doc->find('body')->attr('class');

$match_fragment_string = 'postid';

$nids = split(' ', $attr_id);

for($i = 0; $i < count($nids); $i++) {
if (strpos($nids[$i], 'postid-') === 0) {
list(, $nid) = explode('-', $nids[$i]);
}
}

return $nid;

webmasternew
19.11.2018, 12:14

Предлагаю сделать сбор для автора для переноса этого чудо модуля на Drupal 8

Добавить комментарий