История поддержки одного сайта на Prestashop

Мне как то позвонили с одной компании, попросили исправить ошибки: на Prestashop 1.6.14 не работала корзина, точнее не всегда работала, добавляешь товар, переходишь в оформление — его нет. Первое, что мне пришло в голову — нужно обновить до последней версии, а дальше разбираться, может проблема сама уйдет.

Обновление Prestashop

Cделал резервную копию.

Установил все необходимые настройки PHP на хостинге:
1. Версия PHP > 7
2. allow_url_fopen = on
3. max_input_vars = 10000
4. memory_limit 256M
5. post_max_size 256M
6. upload_max_filesize 256M
7. extension = php_intl.dll
8. ImageMagick
9. max_execution_time = 300
10. max_input_time = 300
11. realpath_cache_size = 10M
12. short_open_tag = off
13. allow_url_include = off

Версия стояла 5.3, max_input_vars = 100!?…, почти все настройки неверные были, исправил. Не понятно, как она вообще работала) Сразу же посоветовал избавиться от чертей, которые брали 10т, в месяц за поддержку сайта. Как сам дальше выяснил, что это была авторитетная контора, не буду называть их, но на глаза мне раньше попадала в топах.

Были обнаружены измененные или недостающие файлы, то есть ее изначально жестко ковыряли и криво вносили изменения прям в файлы движка.
Такой себе подход, при любом обновлении это сотрется. Вот список файлов:
classes/Address.php
controllers/front/ParentOrderController.php
controllers/front/OrderOpcController.php
controllers/front/ManufacturerController.php
controllers/admin/AdminOrdersController.php
pdf/footer.tpl
pdf/invoice.product-tab.tpl
pdf/header.tpl
pdf/invoice.addresses-tab.tpl
pdf/invoice.total-tab.tpl
pdf/invoice.tax-tab.tpl
pdf/invoice.tpl
pdf/invoice.payment-tab.tpl
pdf/delivery-slip.addresses-tab.tpl
pdf/delivery-slip.payment-tab.tpl

На вашем сервере не хватает некоторых файлов PrestaShop.
(/cache/smarty/compile/index.php)

Ошибки исправил, Prestashop обновил до последней в серии 1.6.1.24, сделал резервную копию файлов и базы. Проблема с корзиной ушла.
После обновления модулей, отвалился дизайн немного, вернул из резервной копии модуля конфигуратор шаблона tpl-файлы.

Оценил работу в 3 часа.

Установка нужных модулей и исправление ошибок в Престе

Установил модуль Google Tag Manager, для того, чтоб скрипты и счетчики не пилить прям в шаблон, да и так по-феншую.

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

Логи почистил:
Брошенные корзины: 189
Статистика подключений: 5,986,217 — офигеть сколько много, а я то думал, почу база такая огромная.
Статистика поиска: 3,399
Логи электронной почты: 47,163
Логи: 73,559
Клиенты без адресов: 872
Клиенты без заказов: 3,429
Просроченные специальные цены: 234
Просроченные ваучеры: 702
Просроченные специальные цены: 234
Просроченные ваучеры: 702

Ошибка при обновлении статуса заказа.

Fatal error: 9 /var/www/www-root/data/www/mysite.ru/override/classes/Mail.php:181 Stack trace: #0 /var/www/www-root/data/www/mysite.ru/classes/order/OrderHistory.php(469): MailCore::Send(1, ‘preparation’, ‘\xD0\x92 \xD0\xBF\xD1\x80\xD0\xBE\xD1\x86\xD0\xB5\xD1\x81…’, Array, ‘mail@ya…’, ‘\xD0\x9D\xD0\xB0\xD0\xB8\xD0\xBB\xD1\x8F \xD0\xA1\xD0\xB0…’, ‘info@mysite.ru’, ‘SiteName’, NULL, NULL, ‘/var/www/www-ro…’, false, 1) #1 /var/www/www-root/data/www/mysite.ru/classes/order/OrderHistory.php(403): OrderHistoryCore->sendEmail(Object(Order), Array) #2 /var/www/www-root/data/www/mysite.ru/override/controllers/admin/AdminOrdersController.php(521): OrderHistoryCore->addWithemail(true, Array) #3 /var/www/www-root/data/www/mysite.ru/classes/controller/Controller.php(178): AdminOrdersController->postProcess() #4 /var/www/www-root/data/www/mysite.ru/classes/Dispatcher.php(367): ControllerCore->run() #5 /var/www/www-root/data/www/mysite.ru/bnadmin/index.php(58): in /var/www/www-root/data/www/mysite.ru/override/classes/Mail.php on line 181

Установленные модули Mail Chimp, их зачем-то 3 сразу, стандарт, про и мини. Не понятно зачем они тут, как они использовались никто не знает, но они переписывали родные классы престы, несовместимы с новым PHP, за что и были убиты. Ошибка исправлена.

В каталоге override были обнаружены и другие классы, переименовал папку, попросил протестировать — ничего не отвалилось, ок. Закинул с чистой Престы.

Поставил модуль Faktiva SEO ToolKit, настроил канонические URL, одна из SEO-фишек, которую почему-то не засунули в Prestashop из коробки.

Поставил модуль Faktiva Clean URLs, который делает красивые и понятные ЧПУ адреса, укорачивает их, убирает нижние подчеркивания (мои SEO-проги показывают, что это есть ошибки).
Адреса были вида: mysite.ru/info/52-video.html, стали mysite.ru/video.html — красота, да и только (не только, Яндекс тоже любит такие URL).
Перегенерировал ЧПУ у нескольких товаров, которые отдавали дубли. (штук 10).

Это все хорошо, но после таких улучшений ЧПУ должны посыпаться 404 ошибки (страница не найдена). Для борьбы с ними был установлен модуль SEO redirections. Есть у меня один лайфхак, как заполнить полуавтоматом например товарами: в папки с шаблоном, в файле product.tpl есть строчка {$product->name|escape:’html’:’UTF-8′}, которая выводит название товара в карточке, можно изменить ее на {$product->id|escape:’html’:’UTF-8′}, засунуть в h1 например и отловить через прогу-паук. Или можно в файле Meta.php в title вывести id товара и словить url бесплатным паучком, типа xenu. Далее по ид сопоставляем и загружаем в наш модуль список url товаров со старыми и новыми адресами. Что я и сделал.

Инфо-странички так не получиться сделать, но их не много, тем более в конторе работает параллельно над сайтом еще и оптимизатор, оставим это дело ему, тем более, что это его инструмент в будущем.
Полезно иногда смотреть в стандартный отчет Prestashop, на предмет 404-х ошибок и устранять их при помощи этого замечательного модуля.

В процессе работы что-то пошло не так, изначально я отловил через паука не все страницы всего 73 (товаров около 500), пришлось ставить новую престу локально, переносить туда товары и производить вышеуказанные фокусы с пауками локально.

Оценил работу в 2 часа.

Новые проблемы в Prestashop

Такая ситуация с сайтом меня немого напрягла, попросил проверить оптимизатора, он каким то сервисом в сети выдал, что с индексацией сайта все в порядке. Ну как по мне, даже Яндекс вэбмастеру в этом случае доверять нельзя: странички могли быть проиндексированны десять лет назад, а сайт переделывали разные «умельцы» уже сто раз. Не факт, что в таком случае новые товары будут индексироваться, если есть проблема, она есть.

На счет рукожопости — сайту делали уникальный шаблон, так вот он написан очень коряво, скрипты вставлены как не попадя, ссылки в футере прям в tpl засунули, они интересно знали, что у престы для этого родной модуль есть? Видимо нет. В карточках товара нет H1 заголовка! Жесть, не правильно работают хлебные крошки, показывая одну и ту же категорию всегда.

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

Обнаружил, что 404-е сайт не показывает вообще, htacсess и robot.txt проверял, модуль 404 на месте, что то сломано в движке, причем видимо в базе данных. Клиент ставил задачу по переносе дизайна на родной шаблон, просил оценить, а тут такое…

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

Так, как работаю ночью, не дожидаясь ответа заказчика начал переносить контент. На сайте есть какой-то модуль, для вставки видео в статью, он не завелся сразу. Но для меня вообще секрет — для чего вообще такое нужно, ведь мы свами знаем, что в редакторе престы можно отключить автоматическую очистку кода, и вставить видео в код. Я не сторонник — много модулей. Много -не всегда хорошо, преста быстро и хорошо работает, когда отключаешь ненужное и ставишь только необходимое.

В процессе переноса контента нашел веселые статейки, в вакансиях например написано — бла, бла — и это в индексе! Хорошие сеошники видимо сайт вели. В процессе переноса видимо еще много сюрпризов ждет.

Ваша оценка

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *