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

nogocuHoBuk

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

    354
  • З нами

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

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

  1. Ну, или, измените положение блока алерт, например вот так: Или так: В стили в /admin/view/stylesheet/stylesheet.css например (ну или какой свой стиль, если что-то подключаете) добавьте что-то вроде: .alerts { z-index: 1001; position: fixed; top: 0; left: 0; width: 400px; } А дальше єкспериментируйте с местоположением
  2. Это Admin Quick Edit PRO. Нужно смотреть в его скриптах, там 146% указано время отображения для "fade in"
  3. Любой скрипт выполняется на устройстве посетителя. Следовательно работать он сможет исключительно в рамках тех товаров, которые в данный момент отображены. В Вашем случае нужно делать отдельный контроллер для аякс запроса, который будет обращаться к БД, дёргать нужные товары (по поиску) и возвращать результат в виде либо готового html, либо в json и дальнейшим отображением скриптом.
  4. Столько вопросов сразу Какая версия опенкарта? Какую цель преследуете? Почему сразу не установить цену для товаров на 9% ниже? Нужно именно феййовое отображение скидок? Попробуйте поискать вот так: "как назначить фейковые скидки в опенкарт" Нужно отображение процента скидки? Как поступать, если понадобятся дополнительные акции? Вы представляете какой ад будет твориться в разделе "Акции" ( index.php?route=product/special )? В него ж и фильтр нормально не встроить. Там будет просто полотенце ВСЕХ товаров вашего магазина. Но если эти вопросы Вас не пугают - есть готовые решения, которые будут точно дешевле, чем делать модификатор с нуля (да и с большим функционалом) Ищите по словам "Bulk Special" или "Массовая скидка". Либо массовое редактирование. На этом форуме есть вот такое решение: Из удобного, чем пользовался я: Bulk Discount/Special 3.x
  5. Тай таке Дивно, що у Вас на руках вже був запит, котрий виконується 0.007с, а Ви використовували той, що працює 210 секунд. Хоча це, можливо, якщо не було WHERE pr.quantity > 0 Ну, врешті решт, вітаю. 0.007(0.008) то вже не прискорити
  6. Доречі. У Вас тут має бідкатися БД на те, що немає аліасів. Потрібно якось так: UPDATE oc_product pr INNER JOIN (SELECT prov.product_id FROM `oc_product_option_value` prov GROUP BY prov.product_id HAVING MAX(prov.quantity)=0) AS per ON pr.product_id = per.product_id SET pr.quantity = 0 WHERE pr.quantity > 0 (додав ще й перевірку на кількість більше 0) Але мені здається цей запит будет довшим за той, що я пропонував раніше. Бо там для IN вибираються виключно ті product_id у яких кількість в oc_product більше 0. В останньому ж запиті кількість записів для обробки значно більша. PS. Ну і в такому вигляді потестуйте чи є різниця між SUM та MAX. То вже мені на майбутнє
  7. КРщае перевірити SELECT prov.product_id FROM `oc_product_option_value` prov GROUP BY prov.product_id HAVING MAX(prov.quantity)=0 а потім SELECT prov.product_id FROM `oc_product_option_value` prov GROUP BY prov.product_id HAVING SUM(prov.quantity)=0 Бо на моїх 100 записах час в межах похибки У Вас точніше буде.
  8. Мені здається (я навіть впевнений) що SUM() буде працювати швидше, ніж MAX() SUM(prov.quantity)=0
  9. Знайшов рішення UPDATE `oc_product` pr SET pr.quantity=0 WHERE pr.product_id IN ( SELECT prod_id FROM ( SELECT prov.product_id AS prod_id FROM `oc_product_option_value` prov LEFT JOIN oc_product op ON op.product_id = prov.product_id WHERE op.quantity > 0 GROUP BY prov.product_id HAVING MAX(prov.quantity)=0 ) AS pid ) Задля наочності написав у кілька рядків. Суть полягає в тому, що SELECT вибирає лише ті product_id для IN, де кількіть в oc_product більше 0 Ну і таке рішення само по собі буде швидше. Ваше перше рішення: 1.37 секунд Мій перший варіант, з додаванням перевірки кількості: 0.79 секунд Остаточне рішення: 0.05 секунд Нарешті можу і в люлю)
  10. додайте oc_product_quantity до индексу ALTER TABLE `oc_product` ADD INDEX(`quantity`) І насолоджуйтесь Бо перший запит апдейта до кількості. Дайте змогу вибрати значення миттєво (в переносному сенсі, звісно). Навіть при 15к записів навіть 160 секунд це ДУЖЕ багато.
  11. Так. То вже я тупанув. При повторному запиті має зрости до 0. (звісно залежить від часу виконання SELECT'а) Тому краще повісити на крон раз в день/12 годин/годину в залежності від кількості продаж. Може раз на день, а може й раз на годину При періодичному виконанні кількість апдейтів буде стабільно мала.
  12. Такий запит буде швидше, (при наймні в данному випадку): SELECT DISTINCT prov.product_id FROM `oc_product_option_value` prov WHERE `quantity` = 0 аніж Ваш SELECT prov.product_id FROM `oc_product_option_value` prov GROUP BY prov.product_id HAVING MAX(prov.quantity)=0 А час виконання апдейту залежіть, мені здається, від того, яку кількість product_id повертає попередній запит. Тому в UPDATE краще зменьшити кількість апдейтів, додавши в запит перевірку на кількість. UPDATE `oc_product` pr SET pr.quantity=0 WHERE pr.quantity > 0 AND pr.product_id IN (SELECT DISTINCT prov.product_id FROM `oc_product_option_value` prov WHERE `quantity` = 0); Таким чином не будуть апдейтітись поля, в яких ВЖЕ кількість дорівнює 0.
  13. В том то и дело, что качество зависит от опыта, а не от времени. Или Вы хотите сказать что собранная Вами за 15 минут прошивка говно, в стравнении с той, которую собирает "другой мастер" за неделю? Вы же сами себе противоречите)
  14. Вы не совсем правильно рассуждаете. Стоимость часа - ориентир в 99% случаев. Если задача конкретная, по которой можно оценить трудозатраты - Вам так и напишут: "Сделаю за 3 часа". И Вы можете прикинуть ваши расходы. У одного 5 в час, но сделает за 15 часов. (3 календарных дня) У второго 30 в час, но сделает за 4 часа. тут Вам выбирать. за 75 но ждать 3 дня (потом, опять же, тестирование) Либо "к вечеру", но за 120. Иногда задачи 5-ти минутные, но перед тем, как что-то выполнить, нужно перечитать задачу, побеседовать с заказчиком, обсудить варианты реализации, получить доступы, подключиться к серверу (а там, часто, закрыты доступы по IP, а заказчки не знает как добавить исключения. Пароль "старый" скинул, ща у бухгалтера запрошу. Ой, а у меня нет доступа к FTP, я думал через админку можно... и т.д.), СДЕЛАТЬ ВСЁ ЗА 5 МИНУТ, протестировать, отдать на тестирование заказчику, получить фидбек, попросить заплатить, проконтролировать оплату. Закрыть задачу. И чаще всего это тоже время, потому часто пишут: Час работ - $30 Минимальное время задачи - 2 часа. И суть не в том, что человек не берется за 5-ти минутные. Просто хочет получить оплату за ВСЁ потраченное на заказчика время. А почасовка - вынужненная мера. Вы даете ТЗ 5-ти исполнителям на оценку. И по времени реализации можете примерно прикинуть опыт исполнителя. Если 4-ро из 5 напишут что на задачу нужно 3 часа, а пятый напишет, что 20 часов - Вы разве не сообразите кто опытней? А уже ПОТОМ спрашиваете ставку за час у каждого из 4-х. И если ставка одинаковая - выбираете того, кто смазливей Всё ж просто.
  15. Ну дык у "другого мастера" и расценки другие, нет? Ведь если "тот мастер" возьмет за прошивку 1000 рублей это совсем не значит, что Вы это сделаете за 5 рублей. верно?
  16. Нет. Не перезалить. По ссылке выше даже в описании написано, что это надстройка, т.е. она работает ТОЛЬКО вместе с оригиналом Там, собственно, всё расписано. Или Вы просите, чтобы я Вам с англиского на понятный перевёл? Ведь по сути именно это и придется делать. Ну и если возникают такие вопросы, думаю, лучше найти специалиста, который интегрирует.
  17. В пользовательские CSS добавьте: #ocd_multilang { float: none !important; } #ocd_multilang .btn-group.open { width: 100%; } первый предотвратит схлопывание: Второй развернет блок языка на всю ширину, по примеру переключателя валют:
  18. Причем Вы сделали что-то только для фильтра в функции getProducts(), но не предусмотрели того же фильтра для getTotalProducts(), который и используется для пагинации. Т.е. запрос к getTotalProducts() не учитывает тех фильтров, которые применяются для getProducts() и возрвщается большее количество товаров для расчета постраничного показа.
  19. Доброго времени суток. С этим моментом, конечно, всё понятно - по умолчанию SEO URL для каждого языка свой. Но ЧАСТО бывают исключения, когда нужно принудительно задать одинаковый SEO URL Когда это касается товара, то с большой вероятностью сео_урл будет разный, так как названия в разных языках будут транслитерироваться по разному, НО есть, например, производители Пример: Производтель Apple Я задал и для украинского и для русского одинаковый SEO URL - "apple" А есть же ещё формирование ссылок вместе с категориями. При одинаковой транслитерации прописываешь, например для русского - "-ru", а для украинского "-ua" (или можно оставлять пустым), но вот такой путь, мне кажется, уже перебор для en: /house/foundation/cement/material для ru: /house-ru/foundation-ru/cement-ru/material-ru для ua: /house-ua/foundation-ua/cement-ua/material-ua Ведь куда удобней было б: для en: /house/foundation/cement/material для ru: /ru/house/foundation/cement/material для ua: /ua/house/foundation/cement/material Так вот к чему я это. Есть ли возможность для ocStore 3.0, всё же, заставить этот триклятый код языка показываться?
  20. Simple использует inputmask И автор это указывает, обращая внимание пользователей, что вопросы с работой плагина в поддержку не входят Но есть надстройка для этой библиотеки - inputmask-multi Т.е. можно подключить и тогда для цифр будет использоваться не 9, а # и можно смело задавать маску: +998-##-###-####
  21. Чтобы было понятно. Та картинка, которую Вы прикрепили, на самом деле png, но поставщик отдает её c расширением .jpg. Программам на компьютере по сути фиолетово на расширение. Ибо расширение служит лишь для того, чтобы понять какой программой эту картинку открывать. Т.е. видим, что расширение jpg/png/gif/bmp/etc - значит это изображение. Открываем, например, редактором. А уже редактор читает содержимое файла и определяет mime type и от него зависит работа с картинкой. Аналогично с браузером. Ему не важно что за расширение у картинки. А вот встроенному "сжимателю" опенкарта - НЕ всё равно. Так как он ориентируется именно на расширение. И код выше, как раз, исправляет это проблему в библиотеке. Т.е. заставляет применять функции сжатия (imagegif(), imagepng(), imagejpeg()) основываясь не на расширение файла, а на mime type изображения.
  22. Если с хостингом нет проблем и оригинальные изображения нормальные, то миниатюры создаются практически мгновенно. Не нужно самому в папку кэш ничего помещать. Сжимайте оригиналы и, думаю, всё решится само собой.
  23. Вообще странно. Сколько у Вас картинок в каждом товаре (в среднем)? Зависит от хостера, конечно, но 100+ секунд - это что-то новое. И да, если Вы единожды зашли в товар, то будут созданы "миниатюры" в папке cache, которые в последствии и будут использоваться для всех посетителей сайта. Т.е. задержка только для первого посетителя. Но 100+ секунд. Может есть смысл сжимать изображения предварительно? Не пробовали? В тот же png (если нужен альфа канал) или лучше в jpg со сжатием 80-85, но размером не больше фуллашди (т.е. шириной не больше 1920). В таком случае изображения будут гораздо "легче".
  24. Капец. ЧТО ЗНАЧИТ ТУЛИТЬ? Есть домен. test.webdd.in.ua. ДОМЕН. Полноценный. Не подменяйте понятия. И именно его я указал в качестве домена при создании хостинга. Никогда за 12 лет не возникало у меня проблем, что б мне кто-то сказал - нельзя добавить поддомен. Что за дичь? Опять же примеры выше, с описанием где и когда это может понадобиться. Возможно. Но ошибка 421 говорит об обратном Чаще всего это технические сложности. Выскочила б ошибка "во избежании спама ограничиваем оправку писем до 10 в час" вопросов бы не возникло. Почта б вообще не отправлялась. Но периодически она ж работала. Т.е. дело не в настройках. Опять же выше пример с сертификатом без направления основного домена. В том то и дело, что всё понятно. Есть вещи, которые должны работать с полуоборота. А есть те, которые могут заработать только с толкача. Например в мирохосте включение APCu или Ioncube Loader возможно только через обращение в поддержку, а на фрихосте APCu вообще не поставят с ответом в стиле "он уже 10 лет не обновлялся и мы его не ставим). Но есть задачи, которые должны заводиться с полутыка, в одно касание: Выбор версии PHP, включение директив, изменение параметров в PHP, получение сертификата, настройка почты. Повторюсь. Я хотел ТОЛЬКО проверить почту. Но столкнулся с рядом проблем на этапе использования ВСТРОЕННОГО функционала - отправки писем в ВАШЕМ интерфейсе. До настройки SMPT на опенкарте дело так и не дошло, так как возникла проблема с SSL сертификатом. И мой первый ответ был ИСКЛЮЧИТЕЛЬНО по этим моментам. Ваше агро мне непонятно. Я? Я просто не люблю беспочвенные высказывания. Я отписался в теме 8 дней назад и забыл о её существовании. Вы ворвались в чат начав писать мне про "невозможно", "поддомен без основного" и прочую ересь. Как в таком случае не ответить то? Я дофига в чём могу быть не прав, но в данном конкретном случае посчитал нужным отвечать. Акей. Сэмулируем ситуацию. Я направил на вас "поддомен", пытаюсь получить сертификат, сертификат ПОЛУЧЕН (это Вы тоже можете видеть в логах), но сервер возвращает дичь (в первом моём сообщение). Обращаюсь в поддержку, а Вы мне пишете: Ровно в этот момент ситуация закончилась бы так же, как она закончилась. Я бы написал на форуме, что поддержка лепит отсебятину. Но это я. А как другим пользователям? Смириться с той ерундой, которую Вы написали? ЗЫ. @dinox, дропни, плиз, нашу переписку с поддержкой хостера. Начиная с моей "претензии". Бо это правда не закончится. Спасибо!
×
×
  • Створити...

Important Information

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