Сап, /б/. Передо мной встал вопрос пхп кодинга, в частности передо мной стоит задача на сайте под вордпрессом в куске плагина woocommerce сделать так, чтобы при выборе региона поле почтового индекса становилось активным/неактивным в зависимости от региона. Мне вроде удалось найти, как провернуть такое с кастомным полем, но вот что делать с дефолтным не ясно и главное - не могу понять, где мне искать само описание этого выпадающего списка в файлах сайта. Сайт написан максимально дефолтно, изменений шаблона минимум. Анончик, если ты работал с этим дерьмом, подскажи, пожалуйста, как мне добраться до этого поля или в каком файле библиотеки его искать/инджектить js код. С меня как обычно
бамп
>>164714523 (OP)Можно просто скрывать это поле через js в зависимости от выбранной страны. Если очень хочется, то делать проверку на стороне сервера.
>>164719412Друже, подскажи, как это сделать и где
>>164719866Все зависит оттого, как у тебя выглядит поле оформления. Похоже на одну из этих картинок?
>>164720125да, очень похоже на правую
>>164720181Я не работал с этим плагином для вордпресса, так что не знаю, можно ли в нем сделать индекс необязательным полем. Если можно, то упростит задачу. Если нет, то надо будет php-код править, так как при попытке заказа заполнение полей проверяется на сервере.
>>164720401можно, через functions.php, но заказчик хочет, чтобы когда поле было активно оно было обязательно
>>164720401А может, можно как то еще, но можно 100%, уже проверял отдельно. Уперся в то, что не догоняю, как условие на срабатывание этой штуки подвесить
>>164720615Могу тебе кинуть для начала примерный код для обработки запроса на фронтенде. Но нужно еще будет бэкенд накатать.
>>164720678кидай, только скажи куда его воткнуть
>>164720615$("select").change(function(){ if($(this).val() == 0) return false; alert($(this).val());});
>>164720898а куда это? и вместо select айдишник нужно прописывать, если да, то это будет billing_states?
>>164720898Вот этот анон правильно написал. Только тебе потребуется вписать идентификаторы элементов dom из плагина.
>>164721175я такую написал уже, только не могу понять, куда ее вставить. Оно вроде понятно, что в файл темы, но в какой именно?...
>>164721272в checkout.js не работает при айдишнике billing_state
>>164721392Попробуй туда следующий код вписать:jQuery(document).ready(function($){ var mas = ["Russia", "Ukraine"]; $( "#billing_country" ).change(function() { if (mas.indexOf($("#billing_country option:selected" ).text()) != -1) { $("#billing_postcode").fadeOut(); } else { $("#billing_postcode").fadeIn(); } }); });
>>164721649не реагирует, так же попробовал вне условия прокинуть пустой алерт, ни в какую. В чем может быть проблема? Попробовал так же с айдишником billing_state, который по идее и нужен
>>164721649может, есть смысл зацепиться через document.getElementById?
>>164714523 (OP)>делать магазин на движке блоговТак тебе и надо. Страдай, говноед. Скажу, что на этом твои беды не закончатся.
>>164722073upd: так же не помогло
>>164722024Разумеется, код должен быть без табуляции и опубликован в custom.js или js-файле со скриптами страницы оформления.
>>164722303а где может быть эта страница оформления? без табуляции само собой. Но если это не checkout.js, лежащий в папке assest, плагина, то где оно может быть?
>>164722563что характерно, пустой алерт в отрыве от самой функции так же не сработал
>>164722563Подключи прямо в html-коде шаблона страницы<script>jQuery(document).ready(function(){var mas = ["Russia", "Ukraine"];$( "#billing_country" ).change(function() {if (mas.indexOf($("#billing_country option:selected" ).text()) != -1){$("#billing_postcode").fadeOut();}else{$("#billing_postcode").fadeIn();}}); });</script>
>>164723026>>164722808И вообще какой ID у тебя поле select со странами имеет?
>>164723175если верить гуглохрому в ф12, то select2-billing_state-container (его я тоже попробовал), но там не страны а регионы, в принципе это ничего особо не меняет
>>164723026глуходаже странно, прямую ссылку на селект бокс он должен был проглотить
>>164723241Короче по переписке будет очень сложно решить довольно простую проблему. В zip-версии с сайта плагина такой строчки нет. Значит она уже кастомная, либо версия другая.
>>164723707понимаюмб есть какой то топик, где про это почитать можно?так то я вроде не первый день прогаю, но с цмсками первый раз столкнулся и они сводят меня с ума
>>164723851Даже не знаю. В /web/, наверное, тебя обоссут, так как задача решается практически тривиально как на клиенте, так и на сервере. В интернете есть решения, как отключить поле или сделать его необязательным. Просто нужен опыт в работе с jquery, ajax и понимание модели обработки запросов плагинами WordPress'ом. Это приходит с опытом ковыряния чужого кода.Можешь сюда адрес сайта скинуть, если он в паблике: jgetfagj@emlpro.comНо, если не хочется деанона, не нужно.
>>164724669сайт, к сожалению, не в паблике. Но за помощь все равно спасибо. Бесконечного добра тебе, анон
>>164724920Вот тебе хорошая документация по теме полей. Она должна тебе помочь. https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/
>>164714523 (OP)>>вротпрес>>пхп кодингТы так тралиш?мимо на голенге
>>164725135>https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/читал, дошел до того, чтобы оверрайднуть дефолтные поля, оверрайднул эти самые поля, но оно как то не сильно помоглоНе догоняю, почему нельзя обратиться к значению поля селект через пхпшный файл с инъекцией джавы, через тот же <script></script>.
>>164725755Я поставил этот магазин. Сейчас может быть гляну, что там накрутили.
bump
>>164732199Ну в принципе получилось сделать костыль, который позволяет реализовать необязательное поле индекса. Правда он может быть затерт обновлениями плагина. Т.е. его нужно вынести куда-то в отдельные файлы.
>>164732721скинь, пожалуйста, посмотрю и попробую. И скажи, куда его добавить
>>164732788Уточни, тебе надо, чтобы индекс пропадал и из биллинг адреса, и из шиппинг адреса для конкретной страны?
>>164732937для конкретного региона, он же state
>>164732980Минутку.
>>164733366Скажи, для каких стран тебе не нужны индексы?
>>164734155есть массив с областямитип 'MSK' => 'Москва','MSKO' => 'Московская область','MSKO20' => 'Московская область до 20 км от МКАД','ABAO' => 'Агинский Бурятский авт.окр.','AR' => 'Адыгея Республика','ALR' => 'Алтай Республика','AK' => 'Алтайский край',и так далее нужно только для MSK и MSKO20
>>164734366Понятно. Сейчас поправлю.
Если Элементы.Область = Перечисления.Области.МосОбл ТогдаЭлементы.Индекс.Доступность = ЛожьКонецЕслиНахуй вам это ретроградское говно, перекатывайтесь в 1с
ненужно
>>164735233нужно(
Блядь pr нахуя придумали варенник?
>>164735300А где ты взял список областей России? В плагине по умолчанию его нет.
>>164735541Уже нашел.
>>164735541был там до меня, видимо предыдущий хлопец закинул выглядит это вкратце так и лежит в functions.php по адресу /httpdocs/wp-content/plugins/woocommerce/includesadd_filter( 'woocommerce_states', 'custom_woocommerce_states' );function custom_woocommerce_states( $states ) { $states['RU'] = array('MSK' => 'Москва','MSKO' => 'Московская область','MSKO20' => 'Московская область до 20 км от МКАД','ABAO' => 'Агинский Бурятский авт.окр.','AR' => 'Адыгея Республика','ALR' => 'Алтай Республика','AK' => 'Алтайский край','AMO' => 'Амурская область','ARO' => 'Архангельская область','ACO' => 'Астраханская область' ); return $states;}
>>164735779Куда кидать файлы с кодом? Сюда лучше не стоит. Разметка поедет.Как там называется сайт, где можно текст размещать с подсветкой? Забыл, блин!
>>164736134я тоже не помню -_-можешь на почту hflbcn595@yandex.ru
>>164736326Вспомнил, что можно же зипджипег (пнг) прикрепить.
>>164737330А нет. Не работает.
>>164737400пастбин мб?
>>164737462/wp-content/plugins/woocommerce/assets/js/frontend/checkout.min.jshttps://pastebin.com/vy80aBRM/wp-content/themes/storefront/functions.phphttps://pastebin.com/DX0YpVuuДа. Я тоже вспомнил, что пастбин
>>164737799В первом файле начинаются изменения с 126 строчки.Смотри, какой у тебя подключается min или несжатый, когда изменения переносить будешь. Суть кода - когда срабатывает обработчик изменения выпадающего списка, он смотрит, чтобы была Россия и Москва + область. Если не эти регионы, он индекс не скрывает. Иначе - поле выводит. Если нажать на кнопку Чекаут, что запрос подается в бэкенд вордпресса и плагина. Там его обрабатывает файл functions.php. Он может лежать в папке шаблона, но это не обязательно. Главное правильно перенести изменения. Вот в конце этого файла строчки, в которых вызываются Хуки плагина интернет-магазина. Сначала обрабатываются страна, потом регион. Если это не Москва или область, обязательность индекса отключается. В итоге, если ошибок нет, покупка будет обработана, а если индекс не проставлен в МСК, то будет выдано сообщение о незаполненном поле.Надо следить, чтобы файлы не затерлись при обновлении плагина. Или переносить код в файлы пользователей, которые точно не будут затронуты.
>>164738255спасибо, сейчас попробую
>>164738255а как понять, какой грузит?
>>164738640В смысле?
>>164738640Короче functions.php - он в папке шаблона, который у тебя стоит на магазин.checkout.min.js или checkout.js - лежат в папке фронтенд. Смотри, какой из них прогружается.Главное целиком файлы не заменяй, а вручную переноси изменения, благо, их немного.