Тема Дефолт 3.х, method_exists и ошибка 403 на сервере
Есть в теме Дефолт в самом начале index.html конструкция
{if $wa->shop} {if method_exists($wa->shop, 'checkout')} {$_cart_url = $wa->shop->checkout()->cartUrl()} {else} {$_cart_url = $wa->getUrl('shop/frontend/cart')} {/if} {/if}
которая призвана отдавать нужный url корзины для разных типов оформления заказа, согласно настройкам витрины.
Иду в приложение Сайт - Дизайн - Шаблоны и редактирую index.html или просто нажимаю кнопку Сохранить даже не меняя содержимого файла. В этот момент ловлю Ошибку 403 от сервера с сообщением, что /адрес_админки/site/ недоступна. Ыыы. Однако.
Ок. Делаю иначе. Беру этот кусок кода в {* *}. То же самое. Ошибка 403.
Беру этот кусок кода и ставлю его в любой другой шаблон, допустим в error.html. Проблем нет. Шаблон сохраняется.
В итоге пока определяю "колхозным" способом нужный мне $_cart_url, а стандартную конструкцию темы Дефолт пришлось выкинуть.
Вопрос в следующем. Что такого может быть в строке
{if method_exists($wa->shop, 'checkout')}
чтобы так плющило сервер? И какие именно опции в настройках сервера могут приводить к такому поведению из-за строки в редакторе кода, когда я правлю index.html? Разве не должен редактор кода кушать всё без таких выкрутасов?
1 ответ
Прежде всего, если у вас используется mod_security или другой файрвол, попробуйте временно отключить на хостинге или добавить необходимые исключения, обычно из-за этого могут возникать проблемы.
Хостер втихаря добавил mod_security и он действительно косячит. Приходится или сооружать исключения или отключать целиком. Уже ранее разобрался с этим.