Вход • Регистрация

Всего найдено: 5696

  • 4 марта
  • Цитата
    все равно отрабатывает очень долго (скрины выше в сообщении)

    id там у строк почему шестизначные, если их всего несколько сотен? Просто нажали "Удалить" в таблице?

    Цитата
    Сайт оооочень интересный в плане огромной базы товаров и характеристик!

    База товаров там совершенно невзрачная, тысяч 60 товаров. А вот таблицы характеристик используются совершенно неразумно и неправильно. Наша вина только в том, что мы позволяем создавать характеристику с выпадающим списком и затем позволяем туда заносить по 100К значений (см скрин). Ну если у тебя характеристика "Цвет" и там не 15 типовых значений, а все сочетания радуги от #000000 до #FFFFFF с миллионами значений, то не надо задавать тип "Выпадающий список", ну сделай ты текстовую характеристику... Потом мы видим в базе вот такое, как на скрине этого сайта и потом хоть усрись, но уже двойном-тройной джойн по нескольким милионным таблицам не будут работать за 0.001 секунды. И я не говорю про интерфейс фильтра в браузере, куда в выпадалки заезжали тысячи значений, офигеть как удобно фильтровать...
  • 4 марта
  • Цитата
    И я, акцентирую, за то чтобы не кинуть камень в чейто огород а максимально улучшить

    джойн по текстовому полю я бы убрал в любом случае в таком виде (если в чем-то тут не прав - обсуждаем:) )
    https://i.imgur.com/7aAfPeD.png

    И если тоже не кидать камни в огород недобросовестных заказчиков и клиентов, а исключительно ради улучшений и справедливости ради, я на этот джойн тоже смотрел исподлобья, не совсем понимая его целесообразность, особенно в этом виде. В коробке, кстати, он чуть по-другому висел, но с каких пор и кто его туда так поставил, я не помню 🤷‍♂️ Надо будет его переделать.
    Но это не решит проблему бездумного заполнения системы черти чем в неограниченном количестве.
  • 4 марта
  • Я извиняюсь, конечно, за некоторую несдержанность, но опирался исключительно на факты, которыми располагаю 😏 У нас с вами было несколько тикетов, несколько раз тикеты создавались как раз под оплату, и несколько раз и я намекал, и менеджер прямо говорил, что надо закрыть вопрос с оплатой проделанной работы, но все разы это как-то мягонько заминалось с Вашей стороны, создавались новые тикеты, мои рекомендации и решения опускались, и у меня создалось полное ощущение, что что-то идёт не так )
    Цитата
    строим интернет-магазин на диафане, но никто не может решить нашу проблему

    В любом случае, я считаю, что одна из главных проблем в разработке — это когда "к снаряду подходят" разные люди, и каждый не зная что зачем и почему изначально было сделано, пытается что-то наворотить сверху. Классическое письмо Дяди Федора родителям. То хвост отвалится, то усы жмут. 🤷‍♂️
    Я настолько знаю, Вам изначально вообще делали какой-то кастомный импорт товаров от десятков разнородных поставщиков из xml, xls и csv напрямую в БД. Затем сверху этого было наделана куча фильтров, поисков и разборов. А потом ещё какие-то индексации кто-то сверху на базу приписал... Тут уж лучше всё-таки определиться с кем-то, кто будет стабильно сайт вести, дать ему полный карт-бланш и доделать уже всё по уму.
    Если с Евгением eamat сработались, то это хорошо, он партнёр и разработчик опытный, всё получится )
  • 4 марта
  • Цитата
    Просто у меня примерно такая же ситуация. Клиент научился по одному алгоритму наполнять характеристики, и он их наполняет.

    По такой схеме работы заполнения проблем мы не встречали. Собственно, поэтому ничего и не документировали, т.к. не требуется.
    Тут опирались только на здравый смысл: если мы говорим про характеристику с выпадалкой типа "Цвет" или "Размер одежды", где список из адекватного количества значений. Адекватное количество = то, что руками можно забить, глазами окинуть, затем в выпадалке удобно выбрать. Откройте любой магазин, Озон, М-Видео, фильтр любых товаров, там список в какой-нибудь характеристике для подбора товаров сколько галок? Ну 20, ну 30, ну 100 максимум. Больше если, это уже неудобно для скролла даже и выбора в браузере или с телефона. Так вот технически у нас в CMS нет проблем и для нескольких сотен в принципе
    Проблемы есть, когда эти значения заносят не вручную, а напрямую в БД, недокументированно, и в выпадалке оказывается 100.000 значений. Это физически невозможно сделать, там просто виснет браузер, когда в админке грузится этот select/option1-option2-option3-option4-***-option9999999
    Соответственно, ситуация тоже получается недокументированная 🤷‍♂️
  • 5 марта , редакция: 1741123691
  • Цитата
    в итоге 1-1,5 секунд а не 14
    уже лучше

    Опять же! Я и Ростиславу говорил несколько раз и Евгения внимание хочу ещё раз обратить, что если мы имеем сотни-сотни тысяч и миллионы записей в нескольких разных таблицах, то как не крути, множественные запросы в БД чисто физически не смогут исполниться за доли секунды.

    Вышеуказанные в теме запросы обрабатывают миллионы строк в цикле и 1.5 секунды - это адекватное время. Это нормально.
    И как раз на такие случаи помимо кеширования (в котором всё быстрее 1.5 секунд) у нас в CMS есть прекрасный инструмент lazy. Добавляем параметр lazy=defer в тег show_search и всё, сайт открывается за 0.2 секунды и пока пару секунд подгружаются шрифты, баннеры и прочие картинки, 1.5 секунды совершенно незаметно фоном грузится и фильтр. Визуально сайт открывается как пуля.
    Я не знаю, почему нужно из принципа сражаться , чтобы фильтр грузился в потоке основного источника html и тормозил всю страницу...
  • 5 марта
  • Цитата
    импорте была еще тонна дублей (когда значение писалось как "220" "220в" "220вольт"/ "круг" "круглый" "окружность" и тд и тп)
    Уф... Понятно
    Цитата
    для существующих дел и в будующем для новой версии пока предлагаю внести айдишник знчения выпадающего списка и джойнить по нему

    👍 Но, опять же, проблему с кучей смысловых дублей это не решит, за исключением того, что на int можно индекс поставить. А вот если придумать инструмент, когда одному id значения характеристики можно соотносить кучу аналогичных "Круг", "Круглый", "Окружность" и при поиске они бы все выходили по одному id, это было прям хорошо. Но как это администрировать не понятно, и как изначально заносить и соотносить...
    Цитата
    ограничить для поиска выборку только характеристиками отмеченными для поиска - уже думаю пока будет достаточно
    Это да, но за исключением случаев, когда кто-то хочет у каждого значения каждой характеристики фильтра иметь циферку "Сколько будет найдено товаров по этой галке". А у нас тот же Степан эту величину клянчил долго для своего фильтра, сам её везде совал, и вот она аукивается вот так на больших разнородных таблицах. Т.к. для вывода фильтра один шиш надо перебирать всю базу предварительно
  • 23 сентября 2024 г. , редакция: 1727080324
  • Это форма оформления не основного заказа, а форма оформления заказа в один клик, скорее всего. Там капчу обычно не ставят. Попробуйте отключить в настройках магазина эту галку и посмотреть продолжится ли спам
    Цитата
    Зачем это делают?
    Так это боты. Им пофиг, они сайт не видят, они видят html-источник. Нашли сайт, и давай по ссылкам ходить, открыли страницу товара , смотрят, о, форма какая-то - значит надо заполнить своим спамом, авось куда-нибудь долетит и опубликуется. Заполнили, отправили. Один раз форма сработала и всё, ставится на автомат и погнали лупить туда весь спам, какой есть.
  • 10 июня 2024 г.
  • У нас доступ ко всем файлам есть, конечно, но на бесплатном и тестовом шаблон править мы не всегда охотно бросаемся )
    Цитата
    беда что текст начинается с разделителя ":" . Нельзя ли как-то убрать разделитель?
    Там заголовок характеристики должен быть скорее всего, который не поставили, а двоеточие не убрали. Да, в шаблоне можно поправить
  • 09 июня 2024 г.
  • Цитата
    Не особо разбираюсь в БД, если что не сильно закидывайте кирпичами )))

    Цитата
    А если несколько полей за один запрос получить надо, то правильно понимаю должно быть чтото типа этого?

    Дмитрий, не путайте как раз ещё методы обращения к БД и получаемые результаты ;)

    Киньте глаз на документацию https://www.diafan.ru/dokument/full-manual/developers/includes/database/
    Где начинается:

    DB::query_result () - просто запрос и просто ответ в одну переменную, как его БД отдаст, обычно, когда нужно просто получить быстрый, точный конкретный результат при LIMIT 1, например, получить id или name
    DB::query_fetch_array () - это будет уже массив, где поля БД - индексы массива, когда надо получить строку из БД
    DB::query_fetch_all () - это будет двумерный массив, где будет куча строк из БД на первом уровне порядковые номера строк от 0,1,2,3 и пр, а в каждом элементе уже вторая вложенность с индексами из названия полей БД
    DB::query_range_fetch_all - то же самое, что выше, но не все, а можно указывать range, типа limit 100, 100

    Цитата
    $autor= DB::query_result("SELECT name1, keywords1 FROM {clauses} WHERE id='%h'", $autorID);

    То есть, не DB::query_result ;))))
  • 09 июня 2024 г. , редакция: 1717943697
  • Дальше! Вот так не надо:
    Код
    $autor = DB::query_fetch_all("SELECT autor, name1 FROM {site} AS s INNER JOIN {clauses} WHERE id='.$autorID.'");

    Всегда указывайте маску (%s, %d, %h, %fи пр.) и выносите переменную за скобки. Так Вы от sqlinjection застрахуетесь, система за Вас всю фильтрацию сделает )
    Как у Александры
    Код
    $autor= DB::query_result("SELECT name1 FROM {clauses} WHERE id='%h'", $autorID);

    НО! Александра, зачем маска %h? ))
    %h - это для текстовых переменных без HTML, то есть, чтобы в передаваемой в запрос строковой переменной почистились всякие теги, если они есть. Эту маску нужно использовать, когда передается строка и там не было ничего кроме символов и цифр.
    Код
    DB::query_result("SELECT id FROM {clauses} WHERE name='%h'", $autorNAME);
    - например в таком запросе да, надо %H
    А если у нас заведомо числовая переменная и числовое поле БД, то надо маску %d - digit, цифры

    Код
    $autor= DB::query_result("SELECT name1 FROM {clauses} WHERE id='%d'", $autorID);
    - вот так, тут кроме цифр ничего не пролезет

    И ещё момент!
    Поле name1 - здесь 1- это номер языковой версии для переводимого поля.
    Если на сайте два языка, в таблице будет name1 и name2 в БД.
    Если 3, будет name1, name2, name3 и т.д.
    Мы же не будем отбирать каждый раз name1 или name3 для каждой версии?
    Поэтому в запросах переводимые поля можно запрашивать просто в квадратных скобках: [name] и система автоматически подставит 1 (или иной индекс текущего языка в системе)

    То есть, итого:
    Код
    $autor= DB::query_result("SELECT [name] FROM {clauses} WHERE id='%d'", $autorID);
  • 16 марта 2024 г.
  • Цитата
    На сайте была сделана доработка вывода старой цены в товарах (программистом) и после этого начались проблемы

    Скорее просто совпадение, программистской связи никакой между этими событиями
  • 11 марта 2024 г.
  • Цитата
    Может быть есть возможность вставить код iframe в это место??

    Код Вы и вставляете, в нём можно width и height поменять на вертикальные и вставить.
    Но может на сайте в карточке товара уже css его как-то меняет. В таких случаях нужно прилагать ссылку на сайт на товар, где вставлено видео и тогда можно будет сказать конкретно, как его развернуть
  • 24 января 2024 г.
  • Цитата
    вывод "старой цены" чтобы можно было менять без открытия карточки товара
    Это же несложно, там же массив под fast_edit. Подсказать? Или пусть исполнитель сделает?
  • 17 января 2024 г. , редакция: 1705491599
  • По поведению выглядит, как будто Аякс не получает ответа о завершении загрузки. Или получает его в неверном формате. А это бывает, когда включен режим разработки и есть какие-то предупреждения на сайте, которые лезут в json и ломают ответ.
    Включён режим разработки?
  • 18 января 2024 г.
  • Ну консольку откройте, вкладку Network, и когда загружаете файл, будет видно отправляемый запрос, куда он идёт и какой там ответ. В ответе будет либо success, либо какое-то сообщение, по которому должно быть понятно, в чём проблема
  • 15 января 2024 г.
  • А вот же наш партнер когда ещё писал https://searchengines.guru/ru/forum/925143
    Цитата
    Дубликаты URL в каталога, меню, благодаря отсутствию элементарных проверок в CMS на существование роута;
    Кривых каталоги продукции с дулями товаров, о которых узнаешь уже из поискового индекса;
    Кривая пагинация, которая вообще не в курсе сколько реально страниц на сайте;
    Кривые ридеректы;
    404 ошибки, которые продолжают отображать контент страницы;
    Ужасные куски непонятного кода;
    Не внятная работа хлебных крошек, банальными косяками типа ссылка сама на себя;
    Кривая работа ЧПУ;
    И еще бесконечно большая куча ошибок

    Цитата
    Лидером в производстве кривого платного софта я считаю Bitrix. Привет парни :) Вы обеспечиваете работой многих оптимизаторов!

    🤷🏻‍♂️
  • 30 декабря 2023 г.
  • Вы либо в багтреке пишите, либо на форуме. Зачем копипастить?
    Я ответил в багтреке https://user.diafan.ru/wishlist/show4180/
    Цитата
    суть в том чтоб наложить купон поверх других скидок

    Так нельзя делать. В алгоритме коробки точно. Себе можете костыль сделать, если контролируете купоны вручную на своём магазине, но это логическая ошибка.
  • 12 декабря 2023 г.
  • cart.action.php
    order()
    Перед оформлением заказа у нас стоит:
    Код
    foreach($cart["rows"] as $row)
    {
    if($row["price_count"] < $row["count"])
    {
    $this->result["errors"][0] = $this->diafan->_('К сожалению, закончился товар %s. Пожалуйста, отредактируйте заказ.', false, $row["good"]["name"._LANG]);
    return;
    }
    }

    Так что, не важно, когда положили в корзину, только что или неделю назад, заказ он не оформит.
    Версия какая-нибудь старая может? Или action лежит в custom?
  • 12 декабря 2023 г.
  • Цитата
    Но пользуешься кнопочкой "Нет в наличии" и закрываешь товар к покупке.Но пользуешься кнопочкой "Нет в наличии" и закрываешь товар к покупке.

    Ааа, кнопочкой! То есть, в одном поле у товара остатки есть, но в то же время "Нет в наличии"? Ну такооооое.... )))
    Это да, это мы не проверяем.

    Ну давайте и эту проверку поставим, ладно. Хотя кто-нибудь через полгода скажет, чего за фигня, я остатки обновил, было 0, стало 10, а купить нельзя, так как галка "Нет в наличии" стоит ) Хотя может галка и приоритетнее
  • 13 декабря 2023 г.
  • Поправили, в обновлении сегодня выйдет
    Куму вручную:
    Код
    foreach($cart["rows"] as $row)
    {
    if($row["good"]["no_buy"])
    {
    $this->result["errors"][0] = $this->diafan->_('К сожалению, товар %s больше не в наличии. Пожалуйста, отредактируйте заказ.', false, $row["good"]["name"._LANG]);
    return;
    }
    if($row["price_count"] < $row["count"])
    {
    $this->result["errors"][0] = $this->diafan->_('К сожалению, закончился товар %s. Пожалуйста, отредактируйте заказ.', false, $row["good"]["name"._LANG]);
    return;
    }
    }
  • 28 ноября 2023 г.
  • Да, бывает две формы заказа, типа обычная и скрытая в display none для мобильной версии, на сайте не видно, но ajax две формы видит в источнике и пуляет обе.

    Но вот с этим не сходится по поведению
    Цитата
    При добавлении в корзину разными пользователями одного товара, улетает 2 товара двум разным пользователям
Показывать по:

Новости

  • 19 сентября
  • Мы внесли изменения в лицензию и объявляем, что прекращаем техническую консультационную поддержку сайтов на DIAFAN.CMS версий старше 7.0. А это все минорные версии платформы, предшествующие актуальной линейке, а именно: версии серии 4.x, 5.x, 6.x.
  • 15 сентября
  • У нас отличные новости! Мы выпустили новую сборку DIAFAN.CMS 7.3, которая включает встроенные нейросети непосредственно в административной панели. Это значит, что создание контента для вашего сайта больше не будет проблемой — искусственный интеллект возьмет эту задачу на себя, избавляя вас от необходимости привлекать копирайтеров или тратить время на написание текстов самостоятельно.
  • 25 марта
  • Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее. 

Блоги

  • 10.09.2025
  • DIAFAN.CMS славится нагрузоустойчивостью и безопасностью, про инциденты со взломом сайта на нашей системе давненько не слышали, но недавно получили мы письмо от fstec.ru такого характера:

    Обнаружена уязвимость в CMS-системе DIAFAN, позволяющая нарушителю, действующему удалённо, красть сессионные куки через XSS-атаку.