Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Muvka

Користувачі
  
  • Публікації

    183
  • З нами

  • Відвідування

Усі публікації користувача Muvka

  1. OC 3 версии. Проблема в том, что на поддоменах нет алиасов для других магазинов. Они тупо не копируются для других магазинов. Это нормально вообще? Вот например отфильтровал. https://prnt.sc/txr1vf . Есть запись только для главного магазина. Для подмагазинов нет. (их 2)
  2. На этом форуме бесполезно задавать вопросы? Тут только модули могут рекомендовать, а на вопросы не отвечают?
  3. Здравствуйте, это нормально, что при создании мультимагазина не создаются url для стандартных страниц? Контакты, логин и тп? Если нормально, подскажите, может есть скрипт, позволяющий сгенерировать seo_url только для этих страниц?
  4. Подскажите, почему в мультимагазине скрипты и стили подгружаются нормально, а шрифты и svg спрайты ругаются на кроссдоменный запрос? Как решить проблему?
  5. Здравствуйте. Нужно сделать форму регистрации и логина на одной странице с единственным полем номера телефона. Суть в том, что придется создавать свой контроллер и модель типа custom_login, потому что 90% кода придется вырезать и модификатором это делать неудобно. Но как закрыть старые формы регистрации, логина и тп? В начале каждого контроллера прописать редирект на 404 или на главную? Кто сталкивался?
  6. Если правильно помню, проблема была в том, что при оформлении заказа, во время обработки, у меня не была отключена кнопка оформления заказа. Из-за этого ее можно было нажать не один раз.
  7. Если честно, не очень вас понял. Удаление делаю, чтобы не было дубля. После удаления сразу идет повторное заполнение. Пользователи этого даже не заметят. А по поводу keyword вообще не понял. Это то, что будет адресом устанавливаемой страницы. Что не так?
  8. Здравствуйте. С Новым годом. Пытаюсь понять, как правильно заполнить seo url при установке модуля. Примеров хороших не нашел. Делаю так. В контроллере модуля создаю метод install public function install() { $this->load->model('extension/module/promo'); $this->load->model('setting/store'); $data['stores'] = array(0); $stores = $this->model_setting_store->getStores(); foreach ($stores as $store) { array_push($data['stores'], $store['store_id']); } $this->load->model('localisation/language'); $data['languages'] = array(); $languages = $this->model_localisation_language->getLanguages(); foreach ($languages as $language) { array_push($data['languages'], $language['language_id']); } $this->model_extension_module_promo->install($data); } Я просто беру и собираю магазины и языки в один массив. При этом для дефолтного магазина руками 0 приходится добавлять. И в модели в метод install добавляю $this->db->query("DELETE FROM " . DB_PREFIX . "seo_url WHERE query = 'information/promo'"); foreach ($data['stores'] as $store_id) { foreach ($data['languages'] as $language_id) { $this->db->query("INSERT INTO " . DB_PREFIX . "seo_url SET store_id = '" . $store_id . "', language_id = '" . $language_id . "', query = 'information/promo', keyword = 'promo'"); } } Подскажите правильность решения и если есть правки, поделитесь.
  9. Собственно будет вот такая форма адреса пользователя. Нужно ли пытаться править стандартный модуль address, учитывая то, что мне нужно руками изменить колонки в БД, и практически полностью заменить контроллер. Тут еще в том дело, что у меня не будет отдельной страницы добавления и изменения адреса - все будет на странице аккаунта. Я просто не вижу смысла использовать для таких масштабных правок модификатор. Но все-равно что-то гложет. Зря волнуюсь? Есть идея создать свой модуль адреса, скажем "custom_address", рядом с обычным, но в админке все-равно так-же придется полностью модифицировать контроллер и модель адреса.
  10. Здравствуйте. Подскажите пожалуйста, настройки адресов доставки в вашем модуле находятся в отдельных таблицах? Мне просто нужно будет в нескольких местах выводить районы и их минимальную стоимость для доставки. И еще, для разработки на локалке ключ тоже будет (еще для тестового сервера надо)?
  11. Вот на скорую руку накидал. Получается что-то типа этого. Не проверял как работает, но мне такой код не очень нравится if (($this->request->server['REQUEST_METHOD'] == 'POST')) { $validate = $this->validate(); $ajax_request = isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; if ($validate) { $this->request->post['email'] = 'default' . round(microtime(true) * 1000) . '@localhost.ru'; $customer_id = $this->model_account_customer->addCustomer($this->request->post); $this->model_account_customer->deleteLoginAttempts($this->request->post['telephone']); $this->customer->login($this->request->post['telephone'], $this->request->post['password']); unset($this->session->data['guest']); if ($ajax_request) { $json = array(); $json['redirect'] = $this->url->link('account/success'); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } else { $this->response->redirect($this->url->link('account/success')); } } elseif ($ajax_request) { $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode(array( 'error' => $this->error; ))); } }
  12. Ajax и по-другому можно определить. Например так: if(isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')) Проблема в другом. Код слишком захламленным получается. Много вложенных if. Например вот регистрация: if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $customer_id = $this->model_account_customer->addCustomer($this->request->post); // Clear any previous login attempts for unregistered accounts. $this->model_account_customer->deleteLoginAttempts($this->request->post['email']); $this->customer->login($this->request->post['email'], $this->request->post['password']); unset($this->session->data['guest']); $this->response->redirect($this->url->link('account/success')); } нужно валидацию внутри условия уже проводить, потом условие на результат валидации и только потом на ajax. Мне это не очень нравится....
  13. Есть, кто реализовывал подобное или может материалы видел, поделитесь. Лучшее, что приходит на ум - в контроллере собирать 2 url для action и тот, который для ajax вставлять в атрибут data-action. Ну и соответственно создать метод, который обработает запрос.
  14. У меня вопрос - а куда можно модули предлагать? Или сразу в магазин? Просто я не уверен на все 100% в нем) Потребовалось сделать так, чтобы значения опций можно было скопировать в фильтры. Написал простенький модуль, который копирует, соответственно, все опции в фильтры и присваивает категориям и товарам эти самые фильтры. Т.к. руками все это дело замучаешься заполнять. Единственное, что не нравится - это то, что приходится полностью копировать опции, вплоть до id, чтобы потом можно было сопоставить... если кто укажет на проблемы или подскажет, как сделать лучше, будет хорошо. options_to_filters.ocmod.zip
  15. Пытаюсь вырезать email с магазина, перевести все на номер телефона, но при регистрации идет отправка письма клиенту, но я не могу найти, откуда этот код вызывается. Каким-то ивентом что-ли... Излазил и контроллер и модель регистрации, нигде не вижу кода, который вызывает отправку. Подскажите.
  16. Здравствуйте. Покритикуйте мою реализацию вотермарки. Требования были такие - ее можно включать и выключать для каждого товара индивидуально и от меня требование, чтобы она была одинакового размера на любом разрешении изображения. Вот модификатор <file path="catalog/model/tool/image.php"> <operation> <search><![CDATA[public function resize($filename, $width, $height)]]></search> <add position="replace"><![CDATA[public function resize($filename, $width, $height, $watermark = false)]]></add> </operation> <operation> <search><![CDATA[$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension;]]></search> <add position="replace"><![CDATA[ if ($watermark) { $image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '_wm.' . $extension; } else { $image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension; } ]]></add> </operation> <operation> <search><![CDATA[if ($width_orig != $width || $height_orig != $height) {]]></search> <add position="replace"><![CDATA[if ($width_orig != $width || $height_orig != $height || $watermark) {]]></add> </operation> <operation> <search><![CDATA[$image->resize($width, $height);]]></search> <add position="after"><![CDATA[ if ($watermark) { $watermark_resized = $this->resize($this->config->get('config_watermark'), $width, $height); $watermark_resized = preg_replace('/.*image\//', '', $watermark_resized); $image->watermark(new Image(DIR_IMAGE . $watermark_resized), 'middlecenter'); } ]]></add> </operation> </file> Я спрашивают только про модель изображения. Передаю вотермарку доп параметром. Если включена вотермарка, добавляю _wm к имени файла, т.к. и на сервере чтобы сгенерировался файл при отключении/включении и чтобы из кэша браузера бралось нужное изображение Тут серверу немного лишней работы придется сделать, если марка включена. По дефолту, если целевое разрешение файла сходится с исходным, файл просто копировался. Теперь будет лишний раз ресайзиться. Иначе просто марка не применяется к таким изображениям. Вот тут мне больше всего не нравится. Чтобы марка была под размер изображения, сначала прогоняю ее через resize, но в итоге я получаю имя файла на сервере. Если эту ссылку передать в new Image - вылезает ошибка, что не может подгрузить файл. В конструктор Image нужно передавать путь до файла от корня сервера. И поэтому я удаляю все, что идет до cache в пути изображения. Вот тут может есть более изящное решение?
  17. Хорошая идея. Просто вообще в голове такого варианта не появлялось из-за того, что набор лэйблов статичен...
  18. Нужно добавить к товарам разношерстные лэйблы, причем их много, но список фиксированный. Для каждого лэйбла нужна информация: цвет фона(их 3) и надпись(их много). Как лучше поступить - в БД создать одну колонку label, где будет храниться краткое описание этого лэйбла, а при выводе, в модели создать метод, который будет содержать в себе массив со всеми лэйблами типа $labels = array( 'new' => array ( 'color' => 'red', 'label' => 'Новинка' ) ); и который будет принимать название лэйбла(который в примере new) и отдавать нужный вариант? Или есть вариант более изящный? Есть вариант добавить 2 столбца, отдельно для цвета, отдельно для текста, но он мне не очень нравится тоже. Потому что клиенту нужно будет править 2 параметра у товара, да и вообще может запутаться.
  19. Смог сделать только так - изменил модель модулей, чтобы id тоже приходил в настройках <file path="catalog/model/setting/module.php"> <operation> <search><![CDATA[return json_decode($query->row['setting'], true);]]></search> <add position="replace"><![CDATA[ $result = json_decode($query->row['setting'], true); $result['module_id'] = $module_id; return $result; ]]></add> </operation> </file> Затем отдаю в шаблон этот id, где вывожу в скрытом поле формы public function index($setting) { $this->load->language('extension/module/newsletter'); $data['module_id'] = $setting['module_id']; $data['action'] = $this->url->link('extension/module/newsletter/subscribe'); return $this->load->view('extension/module/newsletter', $data); } Ну и соответственно получаю этот id в нужном мне методе через POST, запрашиваю данные модуля и получаю нужные мне настройки. $this->load->model('setting/module'); $settings = $this->model_setting_module->getModule($this->request->post['module_id']); Лучше ничего в голову не пришло. Кто знает, ведь ничего страшного, что свечу id модуля во фронте?
  20. Делаю модуль подписки на рассылку. Сама подписка будет происходить в методе subscribe, но данные с инфой(секретный ключ, id книги и т.д.) доступны только в методе index. Как их перекинуть или заново получить в методе subscribe?

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.