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

niger

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

    1 097
  • З нами

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

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

  1. Почему не выводить реальные данные? (Потому что реальность ужасна?). А почему ужасна, не потому что хотите всегда обмануть? Почему везде клиента хотят нае обмануть? Если акция - то сначала поднимем на эту цену, а потом Мега акция. Сейчас смотрят 300 человек, а внизу счетчик говорит, что посещаемость за месяц 200, Купили сегодня 200 штук, а утром в наличии было только 10 шт.
  2. А чего так дорого оценили? взяли 7к на фрилансе, а тут только 5к предлагаете? Эти местные опенкартники такие ленивые, я бы больше 2к и 3 дней им не дал
  3. Это не Лондонская биржа металлов, Вы уже вначале ошиблись. Китко это ретейлер, а не биржа и у себя на сайте выводит цены по металлам и в том числе и с Лондонской биржи
  4. купить лицензию на доступ к данным, так как такие данные направо и налево не раздают. Или парсером собирать открытые данные, ложить в базу по крону. А потом выводить на сайт
  5. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках
  6. Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом.
  7. Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа?
  8. Берете просто из своего массива продуктов, которые на странице категории, выбираете колонку цены, делаете number_format, и юзает min(), max() функции, чтобы получать максимальное число и минимальное из массива.
  9. А можно вопрос, зачем вам отдельные поля для этого в таблице? Если это вычисляемое поле, причем эти данные есть у вас на странице категории.
  10. @jtgroup Не по теме - У вас магазин между Менорой и Мост-Сити? Там разве не под снос все? А по теме - баннерам, слайдшоу, картинкам желательно задавать max-height/height - чтобы при загрузке изображения не происходил подсчет и не смещался блок. Так же размеры хедерам и другим элементами нужно стараться фиксировать, которые скачут при изменении шрифта или какой-либо подгрузки. прелоад больших изображений на странице, которые находятся во вьюпорте(баннеры или главное изображение товара) Пофиксить загрузку изображений webp изображения не работают на сайте.
  11. там где вы обрабатываете данные и передаёте на вывод
  12. В чем угодно. Блокируется браузером, неправильно внедрили, неправильно скопировали, не туда вставили и еще много вариантов. Жаль, что хрустальную сферу потерял - так бы мог ответить более точно.
  13. Символы помимо букв латинского алфавита и цифр требуют особого обращения. Файл Sitemap обязательно должен быть в кодировке UTF-8 (обычно ее можно выбрать при сохранении). Как и в любых других XML-файлах, при вводе значений (включая URL) необходимо экранировать символы в соответствии с приведенной ниже таблицей. Файл Sitemap может содержать только символы ASCII. В нем не должно быть расширенных символов ASCII, определенных управляющих кодов и специальных символов, таких как * и {}. Если они содержатся в URL, то при попытке его добавить появится сообщение об ошибке. Название Символ Код экранирования Амперсанд & &amp; Одинарные кавычки ' &apos; Двойные кавычки " &quot; Больше > &gt; Меньше < &lt; Кроме того, все URL (включая адрес вашего файла Sitemap) должны быть правильно экранированы и закодированы, чтобы их мог обработать веб-сервер. Обычно это выполняется автоматически, если для создания URL вы применяете какой-либо скрипт, инструмент или файл журнала, то есть не вводите адреса вручную. Если при отправке файла Sitemap вы получаете оповещение о том, что Google не удалось найти ваши URL, убедитесь, что они соответствуют стандарту RFC-3986 для URI, стандарту RFC-3987 для IRI и стандарту XML. Ниже приведен пример URL, где есть символ, не относящийся к кодировке ASCII (ü), а также символ, который требует экранирования (&): http://www.example.com/ümlat.html&q=name Этот же URL в кодировке ISO-8859-1 (для размещения на сервере, использующем ее) и с экранированием: http://www.example.com/%FCmlat.html&q=name Этот же URL в кодировке UTF-8 (для размещения на сервере, использующем ее) и с экранированием: http://www.example.com/%C3%BCmlat.html&q=name Этот же URL, содержащий маскирование: http://www.example.com/%C3%BCmlat.html&amp;q=name Может вам поможет, там есть ссылки на документацию и какого типа должны быть ссылки. Так что попробуйте. Может поможет - но скорее всего нет
  14. Баллы у гугла падают, потому что поп-окно делает CLS, Гугл CLS не любит и за него снижает Core Web Vitals. После того как окно загрузилось можно уже двигать и выводить.Поэтому задержку для "консультантов" и прочих виджетов нужно делать от 1000мс
  15. Выводите баннер не мгновенно, а с задержкой.
  16. Так, если Симпл используете Хотите использовать с родным шаблоном тогда от этого же автора поставьте FilterIt там поставите для кого отображать и какой модуль оплаты или доставки
  17. Модуль Simple Там настраивается упрощенная форма заказа и там же можно скрывать варианты оплаты или показывать для определенной группы покупателей
  18. я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем
  19. категории все же лучше уникализировать, с товарами желательно тоже, но не так критично как с категориями

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

Important Information

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