-
Posts
1,616 -
Joined
-
Last visited
Content Type
Profiles
Forums
Marketplace
Articles
FAQ
Our New
Store
Blogs
Downloads Plus Support
module__dplus_manager
Blog Comments posted by kJlukOo
-
-
9 часов назад, Yoda сказал:
Для того чтобы получить детект устройства, достаточно до инициализции registry получить is_mobile условный, и потом его присвоить в виде атрибута в registry, и все. Не просто так на много килобайт кода есть mobile_detect.
хватит использовать мой код на своих проектах или плати мне бабло.
-
2
-
-
19 часов назад, Shureg сказал:
Ни о чём контент, вода.
сто плюсов. контент - вода. к сожалению как обычно ноль импакта :((
-
3
-
-
1 час назад, Shureg сказал:
Так и не понял, зачем это надо
чтобы в момент разработки не дергать обновления модифов вручную
-
1 час назад, Yoda сказал:
Кто то тут крепко свистит, да еще и предлагает какую то дичайшую несовместимую дичь, которая приведет к конфликтам со всем!
во тут реально конструктивно было. конфликты будут с микроволной печью в первую очередь. затестил цифры с sql_no_cache и разрыв в первом байте стал еще вкуснее на каких-то 5-10мс
Отображение строк 0 - 49 (50 всего, Запрос занял 0.0276 сек.) SELECT SQL_NO_CACHE p.image, p.price, p.quantity, pd.name , (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, p.product_id FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '118' GROUP BY p.product_id ORDER BY (p.quantity>0) DESC,p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,50
Отображение строк 0 - 49 (50 всего, Запрос занял 0.0200 сек.) SELECT SQL_NO_CACHE p.product_id, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, p.product_id FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '118' GROUP BY p.product_id ORDER BY (p.quantity>0) DESC,p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,50
как полагаешь разница в 0.0076 секунды сможет компенсировать 50 таких запросов(ниже)?
Отображение строк 0 - 0 (1 всего, Запрос занял 0.0016 сек.) SELECT SQL_NO_CACHE DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '2510842' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0'
зачем тебе explain? смешной. условия запроса никак не менялись. экплейн идентичен для двух этих запросов, я думал это само собой понятно... но не тебе
не убирать дискаунт, чтобы добиться хорошей совместимости будет максимально логично, но мне интересно сделать легче и быстрее
-
28 минут назад, spectre сказал:
а как к этому отнесутся фильтры?
мне кажется подобные модели трогать категорически запрещено не модами
я бы сделал чтоб getProduct и getProducts принимали параметры типа не считать скидку, не считать рейтинг и тп
дримфильтр на такой кастомизации работает исправно. окфильтр надо будет потестить
про то, что надо делать модом согласен
-
ничего нового, но все конкретно по делу. хорошая компиляция советов
Цитата12. Вывод и скрытие контента в зависимости от типа устройства. Используйте с умом. Пользуйтесь не js библиотеками а mobiledetect, от того что вы спрячете в display none какой либо элемент, он все равно будет опубликован в DOM страницы, если что-то хотите убрать для мобильных устройств, просто не выводите этот контент фактически при генерации html кода!
по поводу этого хочу добавить немного конкретики. еще лучше убрать это из контроллера, что положительно скажется на ttfb
есть либа system/helper/general. туда можно положить функцию детекшена мобилки. что-то вроде
function isMobile() { return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); }
типичная задача не выводить левую колонку на мобике. есть строки, в контроллере, которые рендерят левую колонку
$data['column_left'] = isMobile() ? "" : $this->load->controller('common/column_left');
еще есть одна тонкость. такой isMobile будет каждый раз проверять одно и тоже при многократном вызове. его тоже НУЖНО оптимизировать. кешировать результат в пределах одного запроса. например членом класса, как это реализован в либе корзины
кстати, лейзи на чистом джс это прошлый век. нынче атрибут лодинг поддерживается всеми браузерами для изображений
https://developer.mozilla.org/ru/docs/Web/HTML/Element/img#attr-loading
-
тут же есть вставка КОД. отформатируй статейку как следует, ибо не читаемо
-
9 часов назад, Yoda сказал:
Хейтер-аутист подьехал.
Жаль что кроме этого кривляния и блеяния, больше сказать нечего.так все таки типа редхет или типа почти+как-бы enterprise, ты определился?
-
йода просит аругментировать комменты, при этом имею свои аргументы: это все таки почти RedHat, а это типа enterprise
эта пачти типа этааа аааа ну типа да
-
1
-
-
да, кешеры такое себе. надо делать легкий дом, сжатые картники, злое время до первого байта и минимум лишних скриптов. ну и еще мускулу выделить памяти, да адекватными индексами покормить. йода, поведай лучше о тонкостях, а не о том что кешеры - такое себе
-
6 минут назад, Rassol2 сказал:
Это были не курсы Русского )))
вообще-то правильно лудьтьше
статья в очередной раз хороша
-
ничесе, неплохая работа)
-
а когда фура с пруфами приедет? а то опаздывает
-
все верно! прекрасный пост
-
1
-
-
Булгаков считает что панели зло, тк есть возможность к бруту
пробьет admin:admin и побежит дальше
-
1
-
-
четко. json_encode вообще хорошая функция и массив обработает как положено и строку проигнорит
нет необходимости в проверке типов и тд
-
хорошая идея чесговоря
Как бороться с нарушением ваших авторских прав.
in Полезные статьи, новости.
A blog by Ekaterina_Kislitsia in General
Posted
неплохо было бы подкрепить статью описанием реальных случаев из практики