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

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

  • 06 августа, среда
  • Всем привет, подскажите, при импорте больших файлов иногда возникает ошибка
    [eprecated: Array and string offset access syntax with curly braces is deprecated in .../plugins/PHPExcel/Shared/String.php on line 526]
    Как понимаю, устаревший синтаксис и надо везде {} менять на []
    Есть мысли как поправить. Версия Диафана 7.2.5, работает на PHP: 7.4.33
  • 05 августа, вторник
  • Все нашел, реализовал.
    Думаю кому-нибудь будет интересно.
    Правим файл /modules/shop/admin/shop.admin.express.fields.element.php

    Находим блок
    Код
    // дополнительная характеристика
    $param_select_type = $type == 'param' && ! empty($params["select_type"]) ? $params["select_type"] : '';
    echo '
    <div id="param_id" class="unit params param_param">
    <div class="infofield dophar">'.$this->diafan->_('Укажите характеристику').'</div>';
    $rows = DB::query_fetch_all("SELECT id, [name], type FROM {shop_param} WHERE trash='0' ORDER BY sort ASC, id ASC");
    if ($rows)
    {
    echo '<select name="param_id">';
    echo '<option value="0">Создать автоматически</option>';
    foreach ($rows as $row)
    {
    echo '<option value="'.$row["id"].'"'
    .($type == 'param' && ! empty($params["id"]) && $params["id"] == $row["id"] ? ' selected="selected" ' : '' )
    .' type="'.$row["type"].'">'.$row["name"].'</option>';
    }
    echo '</select>';
    }

    заменяем на
    Код
    // дополнительная характеристика
    $param_select_type = $type == 'param' && ! empty($params["select_type"]) ? $params["select_type"] : '';
    echo '<div id="param_id" class="unit params param_param">
    <div class="infofield">'.$this->diafan->_('Укажите характеристику').'</div>';

    echo '<div class="search-container">
    <input type="text" id="param_search" placeholder="Поиск..." class="search-input">';
    echo '<div id="param_results" style="display:none; position:absolute; width:428px; max-height:200px; overflow-y:auto; border:1px solid #ccc; background:white; z-index:1;"></div>';

    $rows = DB::query_fetch_all("SELECT id, [name], type FROM {shop_param} WHERE trash='0' ORDER BY sort ASC, id ASC");
    if ($rows)
    {

    echo '<select name="param_id" id="param_select">';
    echo '<option value="0">Создать автоматически</option>';
    foreach ($rows as $row)
    {
    echo '<option value="'.$row["id"].'"'
    .($type == 'param' && ! empty($params["id"]) && $params["id"] == $row["id"] ? ' selected="selected" ' : '' )
    .' type="'.$row["type"].'">'.$row["name"].'</option>';
    }
    echo '</select>';
    echo '</div>';

    echo '<style>
    .result-item { padding:8px; cursor:pointer; }
    .result-item:hover { background-color:#f0f0f0; max-width: 428px; }
    #param_search { margin-right: 10px; }
    </style>';

    echo "<script>
    document.addEventListener('DOMContentLoaded', function() {
    // Получаем элементы
    const searchInput = document.getElementById('param_search');
    const select = document.getElementById('param_select');
    const resultsContainer = document.getElementById('param_results'); // Добавьте этот div в HTML

    // Функция для обновления списка результатов
    function updateResults(searchTerm) {
    const options = Array.from(select.options);
    const filtered = options.filter(option => {
    return option.text.toLowerCase().includes(searchTerm.toLowerCase());
    });

    // Очищаем контейнер
    resultsContainer.innerHTML = '';

    // Если нет результатов — показываем сообщение
    if (filtered.length === 0) {
    resultsContainer.innerHTML = '<div>Ничего не найдено</div>';
    return;
    }

    // Создаем элементы списка
    filtered.forEach(option => {
    const item = document.createElement('div');
    item.className = 'result-item';
    item.textContent = option.text;
    item.dataset.value = option.value;

    // Обработчик клика по элементу
    item.addEventListener('click', () => {
    select.value = item.dataset.value;
    searchInput.value = item.textContent;
    resultsContainer.style.display = 'none'; // Скрываем список
    });

    resultsContainer.appendChild(item);
    });

    // Показываем контейнер с результатами
    resultsContainer.style.display = 'block';
    }

    // Обработчик ввода в поле поиска
    searchInput.addEventListener('input', function() {
    const searchTerm = this.value;
    if (searchTerm.trim() === '') {
    resultsContainer.style.display = 'none';
    return;
    }
    updateResults(searchTerm);
    });

    // Показываем список при фокусе на поле
    searchInput.addEventListener('focus', function() {
    if (this.value.trim() !== '') {
    updateResults(this.value);
    }
    });

    // Скрываем список при потере фокуса
    searchInput.addEventListener('blur', function() {
    setTimeout(() => {
    resultsContainer.style.display = 'none';
    }, 200);
    });
    });
    </script>";

    }


    Получаем поле поиска с выбором выпадающих результатов. При выборе характеристика выбирается и в поле по умолчанию.
    Делал на коленке, так что прошу не пинать - можно оптимизировать, вынести JS и CSS в отдельные файлы, но это уже лень разбираться было.
  • 05 августа, вторник
  • Здравствуйте, хочу реализовать такое самостоятельно https://user.diafan.ru/wishlist/show4220/ т.е. по сути можно сделать простой jS поиск/фитрацию по списку доп. характеристик, чтоб оставлял только нужное для выбора, ато если честно запарился с проектом с миллионом товаров и еще ищи есть эта характеристика или нет.
    Подскажите где можно найти вывод данных полей, по идее должно быть где-то в /modules/service/ но не могу найти.
    т.е. мне нужен путь к файлу который править?
  • 09 июня 2024 г.
  • Спасибо, вроде работает.
    А если несколько полей за один запрос получить надо, то правильно понимаю должно быть чтото типа этого?
    Код

    $autor= DB::query_result("SELECT name1, keywords1 FROM {clauses} WHERE id='%h'", $autorID);
    print_r($autor); //выводим массив
  • 09 июня 2024 г. , редакция: 1717884822
  • Я так понимаю, что там завязка какая то с двумя таблицами.
    Из site похоже берется ID автора, потом из таблицы clauses берутся значения по ID
    Обращение к site можно получается пропустить, ведь ID у меня задается.
  • 08 июня 2024 г.
  • Всех приветствую,
    Для статей есть список авторов с различными характеристиками, под идентификаторы страниц паторов создано поле 'autor' в таблице 'site'
    Для страниц статей получаю данные запросом
    Код

    $autor = DB::query_fetch_all("SELECT s.autor, c.name1 FROM {site} AS s INNER JOIN {clauses} AS c ON s.autor = c.id WHERE s.id=%d", $this->diafan->_site->id);


    Могу ли я получить данные определенного автора по его ID например на странице новости?

    Пробую в news.view.id.php вывести, но что то не выходит
    Код

    $autorID = 236;
    $autor = DB::query_fetch_all("SELECT autor, name1 FROM {site} AS s INNER JOIN {clauses} WHERE id='.$autorID.'");


    Не особо разбираюсь в БД, если что не сильно закидывайте кирпичами )))
  • 13 сентября 2023 г.
  • Здравствуйте,
    Подскажите где в структуре Diafan найти файл отвечающий за генерацию файла карты сайта (sitemap.xml)
    нашел modules/site/site.sitemap.php - там вывод из массива неких значений. дальше не особо понятно, где именно прописаны заголовок XML и генерируемые поля.

    Хочу доработать карту сайта для картинок / либо создать новую если такое возможно.
    https://developers.google.com/search/docs/crawling-indexing/sitemaps/image-sitemaps?hl=ru
  • 16 мая 2023 г. , редакция: 1684184640
  • Здравствуйте,
    нет, это отдельные страницы с вложенностью.
    Эти блоки именно в меню должны быть, т.е. разные меню для разных страниц, так что кастомизировать все равно пришлось.
    Спасибо за <insert name="show_links" module="site"> поизучаю, я пока реализовал через чистый html и подключение разных шаблонов )))
  • 13 мая 2023 г.
  • Приветствую,
    Есть меню с кучей дочерних пунктов, есть ли возможность вывести отдельно дочерние пункты например указывая ID родителя.
    Т.е. задача на отдельных страницах создать отдельные блоки с этими дочерними пунктами.
    Я понимаю, что можно создать отдельные меню и вывести их, но может есть способ проще, чтоб не плодить менюшки.
  • 17 декабря 2021 г.
  • Приветствую,
    по условиям понял, но это получается мне как то это в цикле нужно делать, и еще вставить в цикл вкладки - это конечно можно изгалиться, но наверное есть способ попроще. В любом случает спасибо.
  • 17 декабря 2021 г. , редакция: 1639695357
  • Всех приветствую,
    Подскажите как правильно вывести отдельно способы доставки по их ID.
    Задача такая - распределить способы доставки по отдельным вкладкам (табам) чтобы в зависимости от выбранного таба показывались помещенные в него способы доставки (см. рисунок), с табами проблем нет, а вот как распределить способы доставки чет не могу понять.
    в cart.view.table.php способы доставки выводятся циклом друг за другом, а мне нужно как то распределить их по отдельным вкладкам.
    через $result["delivery"][4]["name"] , где [4] - ID способа доставки в CMS - не получается или что то не так делаю.
    Не силен в программировании поэтому прошу помидорами сразу не закидывать )))
  • 18 декабря 2020 г.
  • Хотелось бы включить видеофайлы в галерею изображений товара.
    В поддерживаемых форматах для загрузки в галерею только изображения (jpg, png и пр.)
    Gif анимация как я понял не воспроизводится.
    Есть ли примеры как можно такое реализовать.
  • 23 мая 2019 г.
  • Всем привет, столкнулся с задачей повысить цены на все товары сайта на 5%, а товаров этих +100500 (((
    Была идея поставить минусовой процент в Скидках - но там заблокирован ввод символа минуса (((

    Вот и подумал, что неплохо было бы реализовать модуль или дополнение которое работает по типу Скидок,
    только чтобы можно было указывать процент или фиксированную сумму на которую нужно увеличить цены.
    А также сделать кнопку "Поменять все цены" - это на случай если повышение цен не временное, чтобы потом можно было повысить уже новые цены )))

    Есть у кого идеи как реализовать такое?

  • 22 февраля 2019 г. , редакция: 1550835720
  • Проблема почти решена )))
    правим два файла в adm/includes

    1. Делаем доступными списки категорий в редактировании карточки
    edit_functions.php
    в строке 77 меняем
    Код
    $max = 1000;

    на большее значение (например на 3000)
    P.S. За наводку огромное спасибо Степан (idxdoc)

    2. Делаем доступными списки категорий в фильтре товаров

    show.php
    В строке 758 меняем
    Код
    if(count($cats) == 1000)

    на большее значение (например на 3000)
    Это уже нашел сам )))

    3. Делаем доступными списки категорий в характеристиках товаров
    еще ищу...
Показывать по:

Новости

  • 25 марта
  • Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее. 
  • 17 января
  • В преддверии 2025 года была выпущена сборка 7.2.5, которая не приносит радикальных изменений в функциональности, но способствует повышению стабильности работы системы и расширению возможностей облачного сервиса для создания сайтов.
  • 18 июня 2024 г.
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.