Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

nogocuHoBuk

Пользователи
  • Публикаций

    354
  • Зарегистрирован

  • Посещение

Все публикации пользователя nogocuHoBuk

  1. Добрий. Знайшов помилку в коді. ocFilter 4.8.2 Після імпорту товарів запускаю скрипт, згенерований безпосередньо модулем: // OCFilter copy start $this->load->controller('extension/module/ocfilter/copy', [ 'copy_attribute' => 1, // Копировать атрибуты 'copy_group_as_attribute' => 0, // Группы атрибутов как фильтры 'copy_attribute_id_exclude' => 0, // Данные для копирования 'copy_attribute_group_id_exclude' => 1, // Данные для копирования 'copy_attribute_category_id_exclude' => 1, // Данные для копирования 'copy_filter' => 0, // Копировать стандартные фильтры 'copy_option' => 0, // Копировать опции товаров 'copy_option_in_stock' => 1, // Только в наличии 'copy_type' => 'checkbox', // Тип скопированных фильтров 'copy_dropdown' => 0, // Поместить в выпадающий список 'copy_status' => 1, // Статус скопированных фильтров 'copy_truncate' => 0, // Очистить существующие фильтры OCFilter 'copy_category' => 1, // Привязать фильтры к категориям 'copy_cron_wget' => 0, // Команда для вызова по cron (планировщик) 'copy_value_separator' => ['|'], // 'copy_attribute_id' => ['127', '15', '70', '52', '73', '125', '12', '49', '121', '39', '13', '54', '23', '18', '154', '45', '68', '107', '47', '37', '42', '1', '19', '38', '71', '40', '17', '155', '44', '53', '78', '109', '112'], // 'copy_attribute_group_id' => [], // 'copy_attribute_category_id' => [], // ]); // OCFilter copy end Но в ocfilter.log наступний текст: 2024-03-29 6:00:30 - [Attribute condition] WHERE attribute_id IN(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32) якщо ж копіювати фільтри безпосередньо в модулі, то все корректно: 2024-03-29 5:32:56 - [Attribute condition] WHERE attribute_id IN(127,15,70,52,73,125,12,49,121,39,13,54,23,18,154,45,68,107,47,37,42,1,19,38,71,40,17,155,44,53,78,109,112) Помилка була в admin/model/extension/module/ocfilter/filter.php Замість: $attributes_id = array_filter(array_unique(array_keys($data['copy_attribute_id'])), 'intval'); прописав: $attributes_id = array_filter(array_unique($data['copy_attribute_id']), 'intval');
  2. nogocuHoBuk

    Перемикач на HTML

    Заскринил вопрос, скормил чатугпт, пришли с ним к красивому решению с горем пополам, но он отказался "делиться" перепиской, так как в ней есть изображения Пришлось повторно с толкача заводить. Но результат приемлемый. Ну а довести до нужно вам внешнего вида, не составит труда, думаю
  3. если то с вероятностью приближенной к 100% поле обрабатывается контроллером. в нём и можно глянуть откуда берётся значение. Вероятнее всего в БД сохранен адрес в конфигах для вывода в футере, например, или на каких-то доп. страницах.
    Навіть не знаю що ще можна додати. Встановив, налаштував - все працює. Підтримка на кращому рівні. Всі питання вирішуються миттєво. Дякую.
  4. Логично, но есть одно НО Тогда и на фронте будет отображаться та почта, с которой идёт отправка. А ему нужно чтобы отправлялось с одной но ему писали на другую (ту, что показана на сайте)
  5. Вам же только from нужно исправить, так что поправочка - 28 правок в 19 файлах:
  6. Добрый. Я так понимаю модуль всё? Или можно брать? Какая версия PHP и IonCube требуемая? PHP 7.3 IonCube 12.0.5 Заведется?
  7. По причине того, что поле username это, в зависимости от службы, не всегда почта - опенкарту при отправке письма нужно от чего-то отталкиваться, чтобы наверняка указать отправителя. И единственное поле, где email указан с вероятностью 146% - Система->Настройки->Магазин->E-mail Но Вы, естественно, можете захардкодить этот момент. Везде, где используется отправка письма (а это около 100 правок в примерно 40 файлах) вместо: $from = $this->config->get('config_email'); $mail->setFrom($from); Сделать что-то вроде такого: $mail->setFrom($this->config->get('config_mail_smtp_username')); Сработает, естественно, в случае, если у Вас username это почта.
  8. Масло масляное. Бесполезная строка не выполняющая ничего. В скрипте у Вас функция hpm_select вызывается дважды. 1. При клике по элементу с классом .hpm-cat-item 2. При изменении значения селекта внутри элемента с классом .hpm-cat-box В качестве параметра передается $(this), т.е. непосредственно элемент. И с вероятностью 146% ни селект ни .hpm-cat-item не содержит data_meta_h1. Если я правильно понимаю Вы пытаетесь в модуле HPM в категории при смене товара-опции чтобы менялся и мета тег h1, но это не корректно. Тег h1 должен быть единственным на странице. Т.е. в категории в качестве H1 будет показываться (и должен показываться) meta_h1 (и при его отсутствии name) именно категории, а не товара. Вы бы лучше первоначальную задачу описали, что именно Вы делаете?
  9. Я ж не писав "нашо вам таке на сайті?", а доволі точно задав питання : "нашо вам модуль?" Ваша побажанка це виправлення 3-х рядків коду вашої теми. Розумієте?
  10. Не зовсім зрозуміло навіщо модуль? Це ж стандартний функціонал опенкарту - рекомендовані товари в категорії: Різниця лише в тому, що показ цих товарів буде не картками, а списком - 2 рядки коду в twig. Тобто виводити назву та ціну замість повного змісту (фото, опис, наявніть й іньше) PS. Можливо ще знадобиться 3 рядки jquery докрутити, щоб була функція "приховати/показати", але то вже прикраси.
  11. nogocuHoBuk

    Страница 404

    А я разве это оспариваю? Просто Вы оказались быстрее))) Я не видел Вашего сообщения, пока не опубликовал своё)
  12. nogocuHoBuk

    Страница 404

    Капец вы тут понаписывали ) Ещё раз - не нужно никаких дополнительных кнопок и прочего. Основа уже есть - товар не в наличии. Осталось только в категории скрыть товары, которых нет в наличии: Одна строка в коде. Ответу 12 лет но актуальность его от этого не приуменьшилась Ну и модуль есть: И модуль и тема про опенкарт 1.5, но суть, я думаю, вы уловите если скачаете модуль и посмотрите что он делает (если есть навыки конечно)
  13. nogocuHoBuk

    Страница 404

    Не совсем понял (точнее совсем не понял) что Вы хотели увидеть при отключении товара? Ну вот есть товар, у него есть ссылка. Вы хотите но при этом Это как? Ну т.е. поисковик перешел по ссылке и что? Что на странице то показывать? Для СЕО лучше не отключать товар, а сделать невозможным его покупку. Т.е. установить количество равное 0 и запретить в настройках продажу при отсутствии. В этом случае товар открывается по ссылке. Но купить его нельзя (он псевдоотключен). Во всех других случаях - вполне ожидаемая 404. А 404 означает обязательное удаление из индекса. Пусть лучше пользователь перейдёт в карточку товара, которого нет в наличии и останется на сайте и, возможно, подберет у вас замену, чем вообще не попадёт к вам на сайт )))
  14. Если я правильно понял логику, то если я уберу строку мультиязычности, то Ваш скриппт не поймёт что pd.name_rozetka и pd.short_description нужно брать для language_id = 2, так как для ru у меня эти же поля, но с language_id = 1. А вот вариант с правками в структуре действительно правильней. Спасибо! Просто у меня там в настройках вот такое уже: Но сам факт того, что на основании кастомных полей, можно создать полноценную выгрузку - прям огонь. Ещё разбираюсь в настройках, так как некоторые из существующих полей тоже сделаны слегка рукожопно (те же pd.name_rozetka и pd.short_description) и вот думаю как это всё дело сделать красиво, чтобы было удобно добавлять новые выгрузки и так же легко их отключать.
  15. Угу. С этим разобрался. В цикле задал замену и unset В таком случае логичней бы было в 4.2 указывать в fields не просто значения а массив - поле-значение, т.е. как-то так: $data['lang_data'] = array('lang_id' => 2, 'fields' => ['name' =>'name_rozetka', 'description' => 'short_description']); Но это уже вкусовщина, да.
  16. Возник вопрос: В помощи написано У меня вместо name и description используются кастомные name_rozetka и short_description Т.е. для реализации мультиязычности нужно в пункте 4.2 прописать: $data['lang_data'] = array('lang_id' => 2, 'fields' => 'name_rozetka, short_description'); Что я, собственно и делаю. Пример - товар с id 22227 В БД заполнено для двух языков: Но в фиде рисует пустые теги name_ua и description_ua Подскажите, ЧЯДНТ. Сразу спасибо за ответы. По всему остальному, вроде, вопросов нет. )
  17. Вітаю. Чи є можливість відібрати товари за значенням поля в БД? Дивіться. Є реалізація додавання товарів до того чи іньшого фіда одним кліком (відео під спойлером): В БД велика кількість товарів і додавати їх безпосереднью в фід в модулі буде (мені здається) не дуже зручно. тобто вказати ((p.status_roz)) == '1' Чи, можливо, можна, наприклад, вказати функцію, як в модулі Simple. Тобто я напишу функцію get_ids_for_feed("rozetka") яка буде повертати потрібні product_id, і просто вкажу її. Чи то я забагато хочу?
  18. ХМ. У Вас же просто опис XML для offers. Классичний. Як ви дізнаєтеся досвід програміста за шматком шаблонного XML? Але то таке... На ваш розсуд Цитую: Нашо вам той FTP, якщо у "Таблеточки" э API? З повноцінним блек-джеком і шлюпками JSON замість застаріваючого з кожним днем XML? А якщо реалізувати звїязок через API, то початкове ТЗ в корні не вірне. Точніше вірне для того, хто зрозумів можливості "таблеточок" по своєму. Задля розуміння. Я не візьмусь, якшошо. Навіть не претендую на співпрацю, але просто вирішив залишити коментар відносно ТЗ і XML
  19. Вы всё время копаете не в ту сторону. Опенкарт, как и ocStore ВООБЩЕ не определяет устройство, с которого Вы заходите на сайт. Эта часть заголовков ему не интересна, разве что Вы собственноручно установили како-то модуль/дополнение/скрипт, который может это делать. Но с вероятностью 99.99% подобные "определения" служат для других целей (адаптация, разные шапки, меню и прочее), но точно не для "убийства" сессии... Как вариант - где-то в настройках Андроида включена опция - очищать историю браузера при закрытии. Т.е. при закрытии браузера очищается кеш. Логично, что в таком случае авторизация будет слетать. ЗЫ. Начал писать это сообщение в 2:02 - в это время авторизовался с мобильного на Вашем сайте. Свернул браузер на 28 минут. И вот сейчас в 22:30 открыл браузер - я всё ещё авторизваон. Дополнительно отпишусь утром (если не забуду) ЗЗЫ. Отправил вам в личку видео из которого видно, что проблема не в ocstore.
  20. Да. кавычки не те. либо $this->db->query("DELETE `p1` FROM " . DB_PREFIX . "product_image p1, " . DB_PREFIX . "product_image p2 WHERE (p1.product_image_id < p2.product_image_id) AND (p1.image = p2.image)"); либо $this->db->query("DELETE p1 FROM " . DB_PREFIX . "product_image p1, " . DB_PREFIX . "product_image p2 WHERE (p1.product_image_id < p2.product_image_id) AND (p1.image = p2.image)");
  21. Проще все подобные запросы (тяжелые) повесить на крон (например раз в час, в зависимости от продаж. ВОзможно Вам и раз в сутки хватит) и писать результаты в отдельную таблицу, например oc_product_rating Ну и модулем уже дёргать не из всей базы, нагружая её перебирая все товары и заказы, а брать рассчитанные значения непосредственно из таблицы.
  22. Как я писал выше - я так и не понял что этот запрос делает. Но согласно синтаксису - всё правильно )
  23. Ну так в editProduct добавляйте. Причем учитывая сам запрос можно перед этим вставить: $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'"); Я всё ещё не понимаю зачем, но всё в Ваших руках И да. Не забудьте обновить модификаторы после изменения модели. Это обязательно.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.