OpenCart — убираем лишние страны и устанавливаем по умолчанию определенную страну
Как нам известно, оформление заказа в OpenCart слишком длинное: масса полей, которые практически каждому хочется отключить, удалить или скрыть. Процесс регистрации и оформления заказа получается утомительным, что вполне вероятно, может негативно сказаться на магазине. И одним из немаловажных моментов является выбор страны и города: выпадающий список с перечнем стран чересчур длинный и зачастую никому не нужный, так как большая часть магазинов работает либо по городу, области, стране или максимум по паре-тройке соседних стран, так что в том же Алжире или Пакистане абсолютно нет надобности.
Итак, допустим, что нам необходимо, чтобы в выпадающем списке с выбором стран остались следующие страны: Украина и Украина, как нам это сделать? И еще один момент: мы хотим, чтобы по умолчанию отображалась определенная страна или регион/город, как это реализовать? Начнем со второго.
Для этого отправляемся в файлы темы (шаблона) своего магазина и открываем следующие файлы:
catalog/view/theme/default/template/checkout/guest.tpl — для оформления заказа без регистрации
catalog/view/theme/default/template/checkout/register.tpl — для оформления заказа с прохождением регистрации
и ищем одну и ту же строку в обоих файлах:
1 |
<?php if ($country['country_id'] == $country_id) { ?> |
Поскольку каждая страна имеет свой числовой идентификатор(id), то нам необходимо указать именно тот id, который присвоен нужной нам стране. ID вышеупомянутых стран и пары соседних:
Украина — 220, Украина — 176, Беларусь — 20, Молдова — 140. Более подробно об идентификаторах различных стран смотрим в файле system\cache\cache.country.status… (для начала потестируйте процесс регистрации и выберите те страны, которые Вам необходимо использовать для регистрации).
И меняем найденный нами код на следующий:
1 |
<?php if ($country['country_id'] == 220) { ?> |
и теперь по умолчанию будет первой появляться Украина, так как подставлен именно ее id.
Если же нам необходимо, чтобы и в поле Регион/Область отображался определенный город, то в этих же файлах находим код:
1 2 3 |
if (json['zone'][i]['zone_id'] == '<?php echo $zone_id; ?>') { html += ' selected="selected"'; } |
и меняем его на код с идентификатором города Киева:
1 2 3 |
if (json['zone'][i]['zone_id'] == 3491) { html += ' selected="selected"'; } |
Опять таки. если нам необходимо узнать id другого города, то снова заглядываем в кэш: system\cache\cache.zone…
И теперь новый покупатель во время оформления заказа сразу видит вот такую картину:
Что же, что касается вывода определенных стран или городов/регионов по умолчанию, то теперь мы знаем как это делать. Ну, а как же все же убрать список стран и оставить только те, которые нам нужны?
Существует два способа, которыми можно это осуществить:
1. Через админ-панель магазина.
Идем по вкладкам Система/Локализация/Регионы и удаляем ненужные регионы.
Затем идем Система/Локализация/Страны и удаляем ненужные страны, не забывая оставить те, которые нужны.
Удаление регионов и стран необходимо начинать именно с удаления регионов, так как они привязаны к странам и движок просто не даст удалить ту страну, которой принадлежат регионы или города.
2. Удаляем ненужные страны и регионы через phpmyadmin.
Если предыдущий способ позволял удалить ненужные страны из административной части самого магазина, то данный способ осуществим лишь из, так сказать, технической части магазина — phpmyadmin. И нет никакой разницы в том где находится ваш магазин, и на сервере в интернете (хостинг) и на локальном хостинге процесс один и тот же.
Итак, попав в phpmyadmin, слева выбираем ту базу данных, которая содержит таблицы магазина.
Для начала разберемся с странами. Для этого находим таблицу «Country» и видим список стран, который растягивается на 8 страниц. Для удобства можно увеличить количество выводимых стран на одной странице, изменив 30 на любое другое гораздо большее число.
Вот мы получили весь список стран на одной странице и можем удалить все страны просто в самом низу, под перечнем всех стран, нажать на «Отметить все» и затем удалить. НО при этом не забываем, после того как отметим все страны, вернуться к списку и снять отметки с нужных нам стран. Для того, чтобы знать, где искать Украину, Россию или любую другую страну, предварительно узнаем ее id. В таблице идентификаторы стран расположены в порядке возрастания.
Теперь перейдем к редактированию регионов. В списке таблиц выбираем таблицу «Zone» (внизу списка) и получаем перечень регионов. Опять таки можно увеличить количество выводимых регионов на одной странице, изменив 30 на любое другое число (к примеру, указав 500, получим 8 страниц, а указав 1000, — всего 4 страницы и т.д. Но чем больше цифра, тем дольше может обрабатываться запрос.)
В самом конце (под всеми 500 или 1000 выводимыми регионами), как и в странах, находим «Отметить все», нажимаем и тем самым отмечаем все регионы, и жмем «Удалить».
Вот таким способом мы удалили 500 первых ненужных регионов. Остальные удаляем аналогичным образом, главное не забываем о том, что необходимо оставить нужные для нас регионы. К примеру, нам необходимо оставить в наших регионах Киев ( 3491 ), то мы обязательно снять с него отметку. Найти нужный регион или город не составит труда, так как идентификаторы в таблице идут в порядке возрастания. Как мы ранее узнали, идентификаторы регионов и стран находим в кэше.
И в итоге получим желаемый результат: список стран и регионов, в оформлении заказа, будет ограничиваться тем списком, который мы установим сами.
Большое спасибо за ответы на интересные для меня вопросы…
И Вам, Вячеслав, спасибо за оставленный комментарий!
Рада, что информация в статье Вам пригодилась.
Читаю и другие Ваши материалы. На таком хорошем блоге и с таким хорошим материалом не зазорно и кнопку Donate от PayPal прицепить =)
Реально очень много полезной информации для новичков в OpenCart, да и вообще видно что стараетесь!!!
Спасибо еще раз!))
Блог веду для души, но о кнопке можно будет подумать) А пока что, те, кто хочет поблагодарить или кому я смогла помочь, жмут на социальные кнопки…
спасибо, очень помогли
Рада, что смогла быть полезной для Вас.
Спасибо!
Вот только поля ненужные из этого файла не удалишь, иначе вылезает страшная ошибка при попытке оформить заказ. Пришлось в display:none загонять
Да, править оформление заказа — задача не из простых: много работы. Для того, чтобы разобраться с ненужными полями приходится править не только checkout.tpl, но и checkout из контроллера.
с форума опенкарта
Сначала удали зоны (Регионы)
Но правильнее не удалять а отключить… с этим можно мудохаться в админке, а можно выполнить запрос
UPDATE
oc_country
SETstatus
= 0 WHEREcountry_id
!= 176и все страны кроме России будут отключены.
DELETE FROM
zone
WHEREcountry_id
!= 176 ANDcountry_id
!= 220Спасибо за запрос!
Выручил, а то в ручную не удалялись :)
А как города добавить в opencart ?
Через админку/Система/Локализация/Регионы.
А чем Вам не подходит основной набор городов в OpenCart?
Больше 1000 не удаляет из Базы за один прием
Верно, потому больше «1000» цифру я и не приводила.
Спасибо
Скажите пожалуйста, а как вернуть регионы в Opencart? Я просто поставил магазин с шаблоном и там страны и регионы были удалены. А после того как я магазин доделал, мне понадобились регионы и теперь не знаю как их туда закачать. Через phpmyadmin выдает ошибку.
Никакой шаблон не должен отменять стандартный набор OpenCart. Что касается добавления регионов, то их ведь можно вбить и вручную, если, конечно, нет надобности во всех регионах мира)
Проверил на версии 1.5.5.1 с модулем заказа Simple все работает. Спасибо Вам.
Подскажите в каких файла изменить страну и город по умолчани. для страницы РЕГИСТРАЦИЯ пользователя.
На мой взгляд лучше не удалять записи БД, а просто поменять status на 0 и тем самым отключить отображение.
UPDATE
zone
SETstatus
= 0 WHEREzone_id
!=2761; — отключить все регионы кроме Москвы.сделал всё как написано, неск. раз проверил, со страной получилось, но регион по умолчанию так и не выставляется, что ещё предпринять можно7
Ничего делать не надо — этого достаточно для того, чтобы регион отображался именно тот, который нужен. Проверьте корректность проделанных действий. Не повредит чистка кеша.
Спасибо. со страной и регионом понятно, а как подставить город в поле input?
Находите в файле (register.tpl и guest.tpl) значение value и придаете ему то значение, какое необходимо.
я с самого начала так и сделал но не сработало — подумал, значит не все так просто.. а сейчас уже понял что редактировал файл guest.tpl, а на сайте выводился — register.tpl из-за того что не переставил радио кнопку по умолчания на гостя, когда убирал не нужные шаги регистрации. Теперь осталось убрать страну и регион! Действительно полезные статьи. спасибо!
И Вам, Alex, спасибо за отзыв! Заходите еще)
Очень помогло! Кучу времени мне сэкономили! Спасибо вам!
спасибо большое за статьи.
у меня к Вам один вопрос помогите пожалуйста разобраться.
При оформлении заказа сумма покупки в корзине высвечивается,и цена указывается, и скидка указывается а итого- нули, в процессе оформления заказа (по вашим рекомендациям!! огромное спасибо!), после регистрации , выбора оплаты, скидки за лайк и т.п. на заключительном этапе сумма Итого стоят 0.00, а скидки отражаются.
Подскажите, пожалуйста, где можно посмотреть и устранить проблему (какой модуль или этап).
За ранее благодарен
К сожалению, с таким не приходилось сталкиваться ни разу, с чем связано подобное поведение движка при оформлении заказа даже не знаю.
Магазин на локальном хостинге или на реальном?
Юля здравствуйте., на реальном
сайт https://www.patchworkshop.me, если у Вас будет время не смогли бы посмотреть, и смогут появиться мысли как решить эту проблему. За ранее благодарен
Сергей, Вам надо зайти в админку/Дополнения/Учитывать в заказе и изменить сортировку «Суммы» и «Итого». Это необходимо не только потому, что так требует логика (итого должно идти после суммы, как бы завершая подсчет цены), а потому, что движок не может обработать итого, не получив сначала сумму. Измените сортировку так, чтобы сумма была первой и в итого появится стоимость заказа.
Еще поставьте модулю корзины z-index повыше, социальные кнопки ее перекрывают (надеюсь, простите, что влезла не в свое дело)) ).
спасибо Юля. а как поставить модуль корзины z-index повыше? Вы советуете как специалист и в этом нет ничего зазорного и советуйте дальше!!!!
Сергей, попробуйте div class content на 244 строке в stylesheet.css дать z-index: 999999
Оля спасибо. Но я не увидел разницы Вы не объясните что это такое? Или напишите статью для таких как я!
Сергей, Вам надо открыть тот файл, в котором размещен код социальных кнопок (размещен он у Вас в product.tpl, если, конечно, не используете какой-то модуль) и найти class fb-like, ему то и измените z-index с 9999 на меньший, например, на 2.
используется модуль share42
Спасибо! Все работает! Мелочь, а приятно.:)
Здравствуйте! Я сделал как вы и сказали, но страна по умолчанию не изменилась- как думаете, в чём может быть дело? Версия Opencart 15.6.4. Может там ещё что-то нужно менять?
Илья, прошу прощения, код в статье был битый. Обновила его, попробуйте заново его использовать в своих файлах.
Всё равно не выставляется выбранная страна по умолчанию(( — как будто я нечего и не менял, хотя в файлах прописано всё как вы указали.
Минуту назад протестировала метод именно на 1.5.6.4 — работает все корректно (добавляла код как Украины, так и России). Проверьте верность Вашего кода. Правьте оба файла (guest и register).
Здравствуйте!
Поставить Украина по умолчанию получилось, а вот регион ни в какую не хочет ставиться. Причём пробовал самые разные регионы и разные коды. В любом случае остаётся «выберите». Подскажите, пожалуйста, в чём может быть проблема? Где искать ошибку?
Только что протестировала данный метод установки региона и страны даже на 1.5.6.4 — регион выставляется правильно и сохраняется при оформлении заказа. Вы не допускаете ошибку в коде (кавычки, скобки и т.д.)? Правите оба файла?
Подскажите, все заменил как указано в инструкции, но страна и регион не выбираются по умолчанию.
Что еще можно сделать. Версия 1.5.5.1.2
Александр, данных действий достаточно для того, чтобы отображался нужный регион и страна.
Здравствуйте
По умолчанию страна «Российская Федерация» не ставится, даже в value её прописал, бесполезно. Версия 1.5.5.1.2, все делал по инструкции. чистил кэшь и через ftp вручную и через модуль (VQMOD) Clear all Opencart cache и в браузере. Стоят модули Simple 3.8 и КЛАДР 1.2.
Помогло только: Система -> Локализация -> Страны, далее ставите пробел перед названием Страны, работает, страна в самом верху списка, говорят и с регионами и городами тоже самое помогает
хочу установить город/регион по умолчанию.
код страны в файле есть.
а вот код зоны выглядит вот так:
*
что можно сделать?
Все сделал как написано. В двух файлах. Страна по-умолчанию устанавливается. А вот регион по-умолчанию устанавливается только при оформлении заказа «без регистрации». При «регистрации» пишет, что регион надо выбрать. Это очень странно. Кэши чистил 101 раз. Код перепроверен 102 раза. Где смотреть? Спасибо.
удалять из бд не обязательно же? можно просто статус 0 поставить…
Те, кто не любит долго тыкать в кнопки, в поле SQL запрос (в пхпадмине) можно написать запрос вида: DELETE FROM
oc_zone
WHERE 1country_id
!=176 Конкретно этот запрос удалит все регионы не относящиеся к России.Добрый день! Подскажите, как можно решить такую проблему: при оформлении заказа внезапно исчез список регионов (в выборке стоит «выберите регион», но самого списка регионов нет). Причем все работало и потом резко исчезло. Самое интересное что на другом ресурсе на опенкарте список подгружается. Чистила кэш сайта, но не помогает. Где бы поискать эту проблему?
Добрый день!
Познавательная статья, но появилась такая проблема: сделал как написано, удалил все поля, страна и регион по умолчанию выставляется, НО, в списке выбора как и прежде доступны все страны и регионы, перезагружал сервер, чистил кэш………………. и вот только что меня осенило! я выбрал одну страну из списка и после обновления страницы все пропали, кроме единой желаемой Российской Федерации. Вопрос исчерпан, спасибо за статью! :)
Спасибо за статью. Все понятно написано
Подскажите, как назначит опцию по умолчанию в селекте, в выпадающем списке, чтобы было не —Выберите—, а нужное значение? Много различных размеров и хочу установить по умолчанию самое распространенное чтобы не путать покупателей. Спасибо
Если удалять страны и регионы через phpadmin, то из административной части сайта (opencart — admin) также исчезнут? Или надо удалять в последовательности? Сначала из админки, потом из phpadmin?
Да, если удаляете из phpmyadmin, то в админке будет порядок.
Я вот почистил все страны и регионы и оставил только Беларусь и его регионы. Теперь когда захожу на регистрацию у меня выдает ошибку и нет возможности выбрать регион, в чем может быть дело?
Статья хорошая, но почему то мне не помогла. Страна автоматически не ставится. Код точь в точь перепроверил 100 раз.
Может в симпл модуле дело ? :(
При первой установке поудалял почти все страны и регионы через админку (оставил только Украина и Казахстан).
Теперь нужно восстановить эти удаленные страны и регионы — подскажите, как это можно попроще сделать? OcStore 1.5.5.1.2
Самый быстрый способ — это скачать дистрибутив той версии opencart, которую используете и воспользоваться opencart.sql для того, чтобы добавить страны и регионы в свой магазин. Делать это надо, конечно, через phpmyadmin. Создайте тестовую БД на хостинге (после всех манипуляций ее удалите) и загрузите в нее opencart.sql из папки install, из архива с движком. Затем экспортируйте таблицы oc_country и oc_zone, и залейте их в свою БД. Не забудьте сделать бэкап БД перед внесением изменений, на всякий случай.
1. При импорте сохраненного oc_country.sql пишет:
Ошибка
SQL запрос:
CREATE TABLE
oc_country
(country_id
int(11) NOT NULL,name
varchar(128) NOT NULL,iso_code_2
varchar(2) NOT NULL,iso_code_3
varchar(3) NOT NULL,address_format
text NOT NULL,postcode_required
tinyint(1) NOT NULL,status
tinyint(1) NOT NULL DEFAULT ‘1’) ENGINE=MyISAM DEFAULT CHARSET=utf8
Ответ MySQL: Документация
#1050 — Table ‘oc_country’ already exists
2. Файла oc_zone в дистрибутиве нету