Ошибка в работе слайдера, реализованного с помощью FlexSlider и Views Slideshow

Главные вкладки

Аватар пользователя primary primary 10 июня 2020 в 2:03

На сайте (Друпал 8.6.13 ) используется слайдер, реализованный с помощью модуля FlexSlider, выводимый в виде представления в блоке. На одном сервере все корректно работает, но при переносе копии сайта на другой сервер, главная страница, на которой размещается блок со слайдером не работает, на белом экране сообщение об ошибке:

На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже.</br></br><em class="placeholder">Drupal\Component\Plugin\Exception\PluginException</em>: Plugin (flexslider) instance class &quot;Drupal\flexslider_views\Plugin\views\style\FlexSlider---&quot; does not exist. in <em class="placeholder">Drupal\Component\Plugin\Factory\DefaultFactory::getPluginClass()</em> (line <em class="placeholder">97</em> of <em class="placeholder">core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php</em>).

Все остальные страницы сайта работают нормально, как и админка. При отключении блока со слайдером, страница загружается без ошибки, соответственно без слайдера.

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

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

На drupal.org обсуждаются аналогичные ошибки, только с другими модулями.

Возможно решение аналогичной проблемы описано здесь:

https://www.drupal.org/project/drupal/issues/1846070

На обеих хостингах, на одном из которых сайт работает без ошибки и на новом хостинге, где имеется ошибка, используется одинаковая версия PHP 7.13.

Очистка КЭШ через админпанель и путем очистки таблиц с кэш в базе данных, обновление ядра, переустановка модуля и создание заново представления, проблему не устраняют.

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

Комментарии

Аватар пользователя primary primary 10 июня 2020 в 10:57

В журнале друпала при включении блока со слайдером появляется запись об ошибке:

Drupal\Component\Plugin\Exception\PluginException: Plugin (flexslider) instance class "Drupal\flexslider_views\Plugin\views\style\FlexSlider---" does not exist. in Drupal\Component\Plugin\Factory\DefaultFactory::getPluginClass() (line 97 of /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php).

Также такое предупреждение (тип PHP):

Warning: Illegal string offset 'value' в Drupal\views\Plugin\views\area\Text->preQuery() (строка 50 из /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/Plugin/views/area/Text.php) #0 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/includes/bootstrap.inc(584): _drupal_error_handler_real(2, 'Illegal string ...', '/data01/virt875...', 50, Array) #1 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/Plugin/views/area/Text.php(50): _drupal_error_handler(2, 'Illegal string ...', '/data01/virt875...', 50, Array) #2 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/ViewExecutable.php(1011): Drupal\views\Plugin\views\area\Text->preQuery() #3 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/ViewExecutable.php(1233): Drupal\views\ViewExecutable->_preQuery() #4 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/Plugin/views/display/PathPluginBase.php(390): Drupal\views\ViewExecutable->build() #5 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/Plugin/views/display/Page.php(180): Drupal\views\Plugin\views\display\PathPluginBase->execute() #6 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/ViewExecutable.php(1630): Drupal\views\Plugin\views\display\Page->execute() #7 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/views/src/Element/View.php(77): Drupal\views\ViewExecutable->executeDisplay('page', Array) #8 [internal function]: Drupal\views\Element\View::preRenderViewElement(Array) #9 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/Render/Renderer.php(378): call_user_func(Array, Array) #10 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #11 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(226): Drupal\Core\Render\Renderer->render(Array, false) #12 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/Render/Renderer.php(582): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() #13 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(227): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #14 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(117): Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch)) #15 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/EventSubscriber/MainContentViewSubscriber.php(90): Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch)) #16 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #17 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #18 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/vendor/symfony/http-kernel/HttpKernel.php(156): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent)) #19 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #20 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #21 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #22 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/page_cache/src/StackMiddleware/PageCache.php(99): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #23 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/modules/page_cache/src/StackMiddleware/PageCache.php(78): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true) #24 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #25 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #26 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #27 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Core/DrupalKernel.php(693): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #28 /data01/virt87511/domeenid/www.xxxxx.com/htdocs/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #29 {main}.

Аватар пользователя VasyOK VasyOK 10 июня 2020 в 11:22

"На одном сервере все корректно работает, но при переносе копии сайта на другой сервер" А если перенести на другой технический домен того же хостинг аккаунта, на котором сайт работает, тогда норм?
Нужно же убедится, что виноват именно новый сервер. И да: не все хостинги подходят "из каробки".

Аватар пользователя primary primary 10 июня 2020 в 14:12

На тех серверах, на которых слайдер на работал, ошибка возникала на разных доменах. Ситуация примерно такая: на 5 серверах хостинговой компании с которой чаще работаю все нормально, на двух серверах - ошибка (пробовал публиковать разные сайты с разными доменами).

Аватар пользователя primary primary 11 июня 2020 в 16:39

Выполнил обновление ядра до версии 8.9 в завершении чего отобразилось такое сообщение:

Получены сообщения от следующих обновлений:

модуль views
Обновление limit_operator_defaults

Неудача: Drupal\Component\Plugin\Exception\PluginException: Plugin (flexslider) instance class "Drupal\flexslider_views\Plugin\views\style\FlexSlider---" does not exist. in Drupal\Component\Plugin\Factory\DefaultFactory::getPluginClass() (line 97 of /data01/virt87511/domeenid/www.xxxxx.com/htdocs/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php).

После этого почистил КЭШ и попытался удалить модуль FlexSlider Views Style из админпанели, но данный модуль не удаляется. На белом экране сообщение об ошибке:

На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже.

Drupal\Component\Plugin\Exception\PluginException: Plugin (flexslider) instance class "Drupal\flexslider_views\Plugin\views\style\FlexSlider---" does not exist. in Drupal\Component\Plugin\Factory\DefaultFactory::getPluginClass() (line 97 of core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php).

В общем, куда ни сунься, везде эта ошибка

Аватар пользователя charOFF charOFF 11 июня 2020 в 23:04

Вот этот фрагмент странный  FlexSlider---
Откуда там дефисы в конце... У вас в директории модуля есть такой файл flexslider/flexslider_views/src/Plugin/views/style/FlexSlider.php ?

Аватар пользователя primary primary 5 июля 2020 в 2:08

Может кому понадобится. Проблему решил следующим образом. Так как на новом сервере любые действия с модулем FlexSlider заканчивались ошибкой, в том числе при попытке отключения или удаления модуля, сделал следующее:
1. На копии сайта, опубликованной на сервере, на котором все работает, удалил данный модуль и представление - блок со слайдером.
2. Перенес сайт (без слайдера) на новый сервер, заодно обновил ядро на вышедшую к этому времени новую версию.
3. Заново включил модуль слайдера, заново закачал библиотеки к нему, создал представление выводящее его в блоке.
В результате слайдер корректно заработал.

То есть все решилось созданием данного функционала (слайдера) на сайте на новом сервере с нуля. Возможно такое решение поможет и для устранения аналогичных ошибок в работе с другими модулями.