Есть прекрассный модуль
https://www.drupal.org/project/feeds
который решает 90% все вопросов с импортом быстро и просто, немного наловчившись все стает супер хорошо.
Но не писал бы сюда если бы было все так хорошо.
Задача, есть ссылка с которой можно получить csv файл, кодировка windows-1251, что бы получить ссылку обязательно должен быть header User-Agent.
И так есть 3 проблемы одну решил.
1. Получить файл csv по ссылке, когда должен быть указан User-Agent(решил костылем
feeds/src/Feeds/Fetcher/HttpFetcher.php
Вставил в функцию get
index 6c57a1a4..0bd10537 100644
--- a/src/Feeds/Fetcher/HttpFetcher.php
+++ b/src/Feeds/Fetcher/HttpFetcher.php
@@ -141,6 +141,10 @@ class HttpFetcher extends PluginBase implements ClearableInterface, FetcherInter
$options = [RequestOptions::SINK => $sink];
+ if (is_array($this->client->getConfig('headers'))) {
+ $options[RequestOptions::HEADERS]['User-Agent'] = $options[RequestOptions::HEADERS]['User-Agent'] = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36";
+ }
+
// Add cached headers if requested.
if ($cache_key && ($cache = $this->cache->get($cache_key))) {
if (isset($cache->data['etag'])) {
И вот не решеные проблемы
2. Файл отдается в кодировке windows-1251 как автоматично декодировать, или указать кодировку?
3. Загружаемые изображения по урл, так же доступны с заголовком User-Agent, а запрашиваются без этого заголовка, куда добавить заголовок?
Комментарии
Всё это надо решать написанием своего fetcher, а не хакать модули...
Как основу, можно взять, например, https://www.drupal.org/project/feeds_httpfetcher_append_headers который решает уже первую проблему.
Также почитать https://www.drupal.org/docs/8/modules/feeds/creating-a-custom-feeds-work...
Вторую решить в своей имплементации фетчера каким-нибудь mb_convert_encoding или любым другим методом на свой вкус.
Третья, возможно, решится после прочтения документации.