Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

niger

Users
  
  • Posts

    1,072
  • Joined

  • Last visited

Everything posted by niger

  1. Почему не выводить реальные данные? (Потому что реальность ужасна?). А почему ужасна, не потому что хотите всегда обмануть? Почему везде клиента хотят нае обмануть? Если акция - то сначала поднимем на эту цену, а потом Мега акция. Сейчас смотрят 300 человек, а внизу счетчик говорит, что посещаемость за месяц 200, Купили сегодня 200 штук, а утром в наличии было только 10 шт.
  2. А чего так дорого оценили? взяли 7к на фрилансе, а тут только 5к предлагаете? Эти местные опенкартники такие ленивые, я бы больше 2к и 3 дней им не дал
  3. Там только цены и торговля драгоценными металлами.
  4. Это не Лондонская биржа металлов, Вы уже вначале ошиблись. Китко это ретейлер, а не биржа и у себя на сайте выводит цены по металлам и в том числе и с Лондонской биржи
  5. Я думаю, что-то вроде такого хотят как на сайте биржи
  6. купить лицензию на доступ к данным, так как такие данные направо и налево не раздают. Или парсером собирать открытые данные, ложить в базу по крону. А потом выводить на сайт
  7. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках
  8. Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом.
  9. Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа?
  10. Берете просто из своего массива продуктов, которые на странице категории, выбираете колонку цены, делаете number_format, и юзает min(), max() функции, чтобы получать максимальное число и минимальное из массива.
  11. А можно вопрос, зачем вам отдельные поля для этого в таблице? Если это вычисляемое поле, причем эти данные есть у вас на странице категории.
  12. @jtgroup Не по теме - У вас магазин между Менорой и Мост-Сити? Там разве не под снос все? А по теме - баннерам, слайдшоу, картинкам желательно задавать max-height/height - чтобы при загрузке изображения не происходил подсчет и не смещался блок. Так же размеры хедерам и другим элементами нужно стараться фиксировать, которые скачут при изменении шрифта или какой-либо подгрузки. прелоад больших изображений на странице, которые находятся во вьюпорте(баннеры или главное изображение товара) Пофиксить загрузку изображений webp изображения не работают на сайте.
  13. там где вы обрабатываете данные и передаёте на вывод
  14. В чем угодно. Блокируется браузером, неправильно внедрили, неправильно скопировали, не туда вставили и еще много вариантов. Жаль, что хрустальную сферу потерял - так бы мог ответить более точно.
  15. Символы помимо букв латинского алфавита и цифр требуют особого обращения. Файл 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 Может вам поможет, там есть ссылки на документацию и какого типа должны быть ссылки. Так что попробуйте. Может поможет - но скорее всего нет
  16. Баллы у гугла падают, потому что поп-окно делает CLS, Гугл CLS не любит и за него снижает Core Web Vitals. После того как окно загрузилось можно уже двигать и выводить.Поэтому задержку для "консультантов" и прочих виджетов нужно делать от 1000мс
  17. Выводите баннер не мгновенно, а с задержкой.
  18. Так, если Симпл используете Хотите использовать с родным шаблоном тогда от этого же автора поставьте FilterIt там поставите для кого отображать и какой модуль оплаты или доставки
  19. Модуль Simple Там настраивается упрощенная форма заказа и там же можно скрывать варианты оплаты или показывать для определенной группы покупателей
  20. я когда-то давно на форума находил для 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 писем
  21. категории все же лучше уникализировать, с товарами желательно тоже, но не так критично как с категориями
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.