Кто виноват? Что делать?
Коллеги, помогите, пжста.
Есть плагин Оптовые цены. Есть тема дизайна Купить просто. При активации плагина и добавления в корзину товара по цене сформированной плагином, при переходе в Хаб формируется error.log следующего содержания
Event handling error in shopOptPlugin: Plugin opt @ hub not found #0 /var/www/www-dev/wa-apps/shop/plugins/opt/lib/shopOptPlugin.class.php(348): waSystem->getPlugin('opt') #1 /var/www/www-dev/wa-apps/shop/plugins/opt/lib/shopOptPlugin.class.php(337): shopOptPlugin::getPlugin() #2 /var/www/www-dev/wa-apps/shop/plugins/opt/lib/shopOptPlugin.class.php(100): shopOptPlugin::checkSettlements() #3 /var/www/www-dev/wa-system/waSystem.class.php(1541): shopOptPlugin->frontendProducts(Array) #4 /var/www/www-dev/wa-apps/shop/lib/model/shopCartItems.model.php(253): waSystem->event('frontend_produc...', Array) #5 /var/www/www-dev/wa-apps/shop/lib/classes/shopCart.class.php(134): shopCartItemsModel->getByCode('731ce5337d4b823...', true, true) #6 /var/www/www-dev/wa-cache/apps/hub/templates/compiled/hub_ru_RU/bb/b2/3c/bbb23c05b790f19ab4c21feae6f51cc7ce9011d0.file.soaring.cart.html.php(37): shopCart->items() #7 /var/www/www-dev/wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(180): content_585d007e6f0c20_73998343(Object(Smarty_Internal_Template)) #8 /var/www/www-dev/wa-system/vendors/smarty3/sysplugins/smarty_internal_template.php(286): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #9 /var/www/www-dev/wa-cache/apps/hub/templates/compiled/hub_ru_RU/6f/b3/5f/6fb35faa8fc3ea2eb9abdc5c780b782532e1b756.file.index.html.php(220): Smarty_Internal_Template->getSubTemplate('soaring.cart.ht...', NULL, 'hub_ru_RU', NULL, NULL, Array, 0) #10 /var/www/www-dev/wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(180): content_585d007dab1479_14162619(Object(Smarty_Internal_Template)) #11 /var/www/www-dev/wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(374): Smarty_Internal_TemplateBase->fetch('file:index.html', NULL, NULL, NULL, true) #12 /var/www/www-dev/wa-system/view/waSmarty3View.class.php(127): Smarty_Internal_TemplateBase->display('file:index.html', NULL) #13 /var/www/www-dev/wa-system/layout/waLayout.class.php(150): waSmarty3View->display('file:index.html') #14 /var/www/www-dev/wa-system/controller/waViewController.class.php(104): waLayout->display() #15 /var/www/www-dev/wa-system/controller/waViewController.class.php(47): waViewController->display() #16 /var/www/www-dev/wa-system/controller/waFrontController.class.php(227): waViewController->run(NULL) #17 /var/www/www-dev/wa-system/controller/waFrontController.class.php(162): waFrontController->runController(Object(waDefaultViewController), NULL) #18 /var/www/www-dev/wa-system/controller/waFrontController.class.php(58): waFrontController->execute(NULL, 'frontend', NULL) #19 /var/www/www-dev/wa-system/waSystem.class.php(683): waFrontController->dispatch() #20 /var/www/www-dev/wa-system/waSystem.class.php(478): waSystem->dispatchFrontend('hub/') #21 /var/www/www-dev/index.php(7): waSystem->dispatch() #22 {main}
При этом в теме дизайна Default такой проблемы не наблюдается. Но наблюдается так же и в других темах дизайна (смотрел правда лишь в dsv2). Логически, при таком раскладе вроде бы проблема в Теме дизайна. Но взял посмотреть другой аналогичный плагин (внутрь не заглядывал, но, вероятно, хуки-то те же самые) - лог не формируется. Получается, проблема в плагине? В общем я запутался, а разработчики, как истинные джентльмены, кивают друг на друга.
Подскажите, на кого из них пролить мой праведный гнев? :)
Спасибо.
23 ответа
Судя по логу система пытается вызвать плагин opt в приложении хаб. В хуках такого поведения нет. Возможно для плагина opt вы добавляли хелпер в шаблон?
Нет, не добавлял. Специально поднял чистую установку и поставил 3 темы с нуля (default, buysimply, dsv2). Ну разве что товары туда через csv залил.
Т.е. я правильно понял, проблема в теме?
Ненавязчиво напомню о себе.... )
Думаю, что вам поможет расширенная диагностка либо запрос от разработчиков темы и плагина не "джентльменского кивания", а конкретного технически обоснованного ответа.
Я думаю, что плагин тут совершенно не при чем. Не нужно вызывать его из хаба. Если же там в теме хаба прикрутили корзину, то нужно оборачивать ее конструкцией {if $wa->shop}{/if}
Еще есть предположение что там есть какая-то конструкция в смарти, которую, при включеном оптовом плагине, движок интерпретирует как оптовый плагин через магические методы.
Ага, спасибо. А что для этого требуется кроме доступа в админку? А то FTP, например, отсутствует как класс...
Подозреваю, что необязательно. У службы поддержки есть возможность устанавливать любые продукты из магазина Webasyst для тестовых целей.
Павел, ответил на Ваше письмо еще 22 декабря
не на кого не кивал, вот текст письма:
Игорь, прошу прощения если не правильно понял, но мне показалось что речь о том, что проблема в плагине. Да я собственно и без претензий, просто до истины докопаться хочется :)
Так а что сделать-то? :) Вариант убрать корзину из Хаба - на самый крайний случай. Я б и сам поразбирался, но темы дизайна для меня - темный лес, без навигатора заблужусь.
В базовой версии в корзине нет вызовов каких либо плагинов кроме "Quickorder", если установка чистая и Вы ничего не прописывали - плагин меняет стандартный $cart_total (это предположение - я к сожалению не знаком с плагином "оптовые цены").
Опять же, подобные ошибки должны были появиться и на других приложениях (кончено кроме магазина)
Помочь с плагином не могу (повторюсь - не знаю этого плагина), а убрать корзину из приложений где происходит ошибка - пожалуйста:
в файле index.html, замените строку
{if $wa->shop}<!-- shopping cart info -->
на
{if $wa->shop && $wa_app == 'shop'}
* корзина будет открываться только в приложении магазин
* после изменений, на всякий случай очистите кеш инсталлера
О, здорово! Можно уже копать :) Андрей, что скажешь? :)
Плагин использует хук frontend_products
Я не знаю разрабатывался ли этот хук с учетом того, что его будут вызывать в хабе.
Короче мы тут все друг на друга стрелки переводим...
Ладно, фиг с ним, допустим специализирующихся платных хирургов к телу :)
Я думаю этот баг кроется где-то в движке.
После нг-каникул пожалуй вернусь к этому вопросу. За каникулы как раз операционный стол накрою :)
Вопрос представителям Вебасист. Если платная поддержка найдет причину у себя в движке, будут ли возвращены деньги?
или если дело в плагине - рекламация плагина
Читай что пишет Алексей. Это и из лога видно. Плагин вызывают из хаба. Плагин не писался вообще чтобы его вызывали из хаба или других приложений. Когда пишешь плагин, чтобы он работал из под всех приложений, нужно во всех вызовах вместо wa() писать wa('shop') и вообще все внимательно смотреть во всех местах и тестировать. Таких требований вебасист к плагинам не предъявляет.
Кстати, Павел, пока писал это, понял как можно исправить. Но это надо дофига тестить.
Ага... Т.е. проблема в плагине? )))
Проблему за плагином я не признаю. Но можно навтыкать костылей чтобы плагин работал в хабе. Он же не писался под хаб, поэтому и претензий быть не должно.
Ну это крайняя мера, и в данном конкретном случае, надеюсь, применяться ни к кому не будет. По большому счету у меня на плагин-то и лицензии нет :) Андрей просто по доброте душевной дал мне его посмотреть и погонять, а я тут такую кашу заварил :) Но если каша в итоге сварится - лицензию обязательно куплю :)
Да и заваривать-то ее я стал исходя из мысли, что такая ситуация, когда 3 чистых продукта из магазина при взаимодействии дают сбой, заинтересует главного по тарелочкам (тестированию) в WA. Но, похоже, не заинтересовала. Ну нет так нет, что поделать :)
Даже 2 плагина могут между собой конфликтовать. И модераторы точно не будут проверять взаимодействие между наборами плагинов.
Нет, Алексей, я ж без претензий в этой части :) Ну нет и нет. Я вот даж не знаю как объяснить.... Как бы сказать-то... Вот когда у тестировщика кураж есть - ему результат интересен, и всякие такие нестандартные ситуации. Он все выходные напролет проведет за изучением, но поймет в чем фишка. Я не говорю что так должно быть. Но я говорю что так бывает когда есть кураж и интерес. Ну а нет так нет. Винить в этом кого-либо нельзя.
Ох, руки чешутся немного по одному продукту пройтись, но неимоверным усилием воли воздержусь :) Новый Год все же на носу :) Лучше хорошего настроения пожелаю и вам и всем тестировщикам :)