Задать вопрос
  • Как в Битриксе в разделе вывести все товары по определенному признаку?

    @constlapkin
    Если в отдельный раздел поместил компонент bitrix:catalog.section, то можешь задать фильтр
    "FILTER_NAME" => "arFilter"
    и указать название переменной фильтра в компоненте (в примере $arFilter).

    В курсах и на форумах написано как задавать фильтры: https://dev.1c-bitrix.ru/learning/course/index.php...

    Для комплексного компонента можно также реализовать.

    Если раздел создан в инфоблоке Каталога, то есть другое решение - вкладка "Группа", которая позволяет привязать товар к нескольким разделам сразу.
    Ответ написан
    2 комментария
  • Есть ли приоритет у поведенческого таргетинга перед тематическим в РСЯ?

    DeoZ
    @DeoZ Куратор тега Яндекс.Директ
    Веб-разработка и Реклама
    Официально такой приоритет нигде не обозначен, в справке такой информации нет. На практике - да, большая часть объявлений на сайтах показывается по условиям поведенческого таргетинга. Об этом также можно судить при построении отчёта по площадкам в аккаунтах Яндекс.Директ.
    Ответ написан
    4 комментария
  • Несколько объявлений или одно в РСЯ?

    DeoZ
    @DeoZ
    Веб-разработка и Реклама
    Так правильно.
    Сомнительно, что один и тот же клиент будет кликать несколько раз в течение дня на ваши объявления, но в любом случае объединение групп запросов с этим вопросом не поможет.
    Ответ написан
    1 комментарий
  • Как в telegram через callback_data отправить несколько переменных?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Делайте уникальный ключ вида UUID, например, а все параметры храните на сервере. Так можно будет ещё контролировать одноразовость операций
    Ответ написан
    Комментировать
  • Сравнение текстовых данных средствами php?

    asperin
    @asperin
    Php mysql sphinx redis
    /**
     * Выделение различий в текстах (с точностью до строк или слов)
     * Изменения оборачиваются в тег "span" с классами 'added', 'deleted', 'changed
     * алгоритм: http://easywebscripts.net/php/php_text_differences.php
     *
     * @return array - тексты A и B
     * @param string $textA
     * @param string $textB
     * @param string $delimeter - "пробел": будет искать изменения с точностью до слова, "\n": с точностью до строки
     */
    function getTextDiff($textA, $textB, $delimeter = "\n") {
        if (!is_string($textA) || !is_string($textB) || !is_string($delimeter)) {
            return FALSE;
        }
    
        // Получение уникальных слов(строк)
        $arrA = explode($delimeter, str_replace("\r", "", $textA));
        $arrB = explode($delimeter, str_replace("\r", "", $textB));
        $unickTable = array_unique(array_merge($arrA, $arrB));
        $unickTableFlip = array_flip($unickTable);
    
        // Приводим к тексту из идентификаторов
        $arrAid = $arrBid = array();
        foreach($arrA as $v) {
            $arrAid[] = $unickTableFlip[$v];
        }
        foreach($arrB as $v) {
            $arrBid[] = $unickTableFlip[$v];
        }
    
        // Выбор наибольшей общей последовательности
        $maxLen = array();
        for ($i = 0, $x = count($arrAid); $i <= $x; $i++) {
            $maxLen[$i] = array();
            for ($j = 0, $y = count($arrBid); $j <= $y; $j++) {
                $maxLen[$i][$j] = '';
            }
        }
        for ($i = count($arrAid) - 1; $i >= 0; $i--) {
            for ($j = count($arrBid) - 1; $j >= 0; $j--) {
                if ($arrAid[$i] == $arrBid[$j]) {
                    $maxLen[$i][$j] = 1 + $maxLen[$i+1][$j+1];
                } else {
                    $maxLen[$i][$j] = max($maxLen[$i+1][$j], $maxLen[$i][$j+1]);
                }
            }
        }
        $longest = array();
        for ($i = 0, $j = 0; $maxLen[$i][$j] != 0 && $i < $x && $j < $y;) {
            if ($arrAid[$i] == $arrBid[$j]) {
                $longest[] = $arrAid[$i];
                $i++;
                $j++;
            } else {
                if ($maxLen[$i][$j] == $maxLen[$i+1][$j]) {
                    $i++;
                } else {
                    $j++;
                }
            }
        }
    
        // Сравниваем строки, ищем изменения
        $arrBidDiff = array();
        $i1 = 0; $i2 = 0;
        for ($i = 0, $iters = count($arrBid); $i < $iters; $i++) {
            $simbol = array();
            if (isset($longest[$i1]) && $longest[$i1] == $arrBid[$i2]) {
                $simbol[] = $longest[$i1];
                $simbol[] = "*";
                $arrBidDiff[] = $simbol;
                $i1++;
                $i2++;
            } else {
                $simbol[] = $arrBid[$i2];
                $simbol[] = "+";
                $arrBidDiff[]     = $simbol;
                $i2++;
            }
        }
        $arrAidDiff = array();
        $i1 = 0; $i2 = 0;
        for ($i = 0, $iters = count($arrAid); $i < $iters; $i++) {
            $simbol = array();
            if (isset($longest[$i1]) && $longest[$i1] == $arrAid[$i2]) {
                $simbol[] = $longest[$i1];
                $simbol[] = "*";
                $arrAidDiff[] = $simbol;
                $i1++;
                $i2++;
            } else {
                $simbol[] = $arrAid[$i2];
                $simbol[] = "-";
                $arrAidDiff[] = $simbol;
                $i2++;
            }
        }
    
        // Меняем идентификаторы обратно на текст
        $arrAdiff = array();
        foreach($arrAidDiff as $v) {
            $arrAdiff[] = array(
                $unickTable[$v[0]],
                $v[1],
            );
        }
        $arrBdiff = array();
        foreach($arrBidDiff as $v) {
            $arrBdiff[] = array(
                $unickTable[$v[0]],
                $v[1],
            );
        }
    
        // Если на одной и той же позиции у текста A "добавлено" а у B "удалено" - меняем метку на "изменено"
        $max = max(count($arrAdiff), count($arrBdiff));
        for ($i1 = 0, $i2 = 0; $i1 < $max && $i2 < $max;) {
            if (!isset($arrAdiff[$i1]) || !isset($arrBdiff[$i2])) {
                // no action
            } elseif ($arrAdiff[$i1][1] == "-" && $arrBdiff[$i2][1] == "+" && $arrBdiff[$i2][0] != "") {
                $arrAdiff[$i1][1] = "*";
                $arrBdiff[$i2][1] = "m";
            } elseif ($arrAdiff[$i1][1] != "-" && $arrBdiff[$i2][1] == "+") {
                $i2++;
            } elseif ($arrAdiff[$i1][1] == "-" && $arrBdiff[$i2][1] != "+") {
                $i1++;
            }
            $i1++;
            $i2++;
        }
    
        // Оборачиваем изменения в теги для последующей стилизации
        $textA = array();
        foreach($arrAdiff as $v) {
            if ('+' == $v[1]) {
                $textA[] = '<span class="added">' . $v[0] . '</span>';
            } elseif ('-' == $v[1]) {
                $textA[] = '<span class="deleted">' . $v[0] . '</span>';
            } elseif ('m' == $v[1]) {
                $textA[] = '<span class="changed">' . $v[0] . '</span>';
            } else {
                $textA[] =$v[0];
            }
        }
        $textA = implode($delimeter, $textA);
        $textB = array();
        foreach($arrBdiff as $v) {
            if ('+' == $v[1]) {
                $textB[] = '<span class="added">' . $v[0] . '</span>';
            } elseif ('-' == $v[1]) {
                $textB[] = '<span class="deleted">' . $v[0] . '</span>';
            } elseif ('m' == $v[1]) {
                $textB[] = '<span class="changed">' . $v[0] . '</span>';
            } else {
                $textB[] =$v[0];
            }
        }
        $textB = implode($delimeter, $textB);
    
        return array($textA, $textB);
    }
    Ответ написан
    1 комментарий
  • Как лучше сделать SQL запрос?

    AnatolTh
    @AnatolTh
    Full Stack Developer
    select
      t1.id,
      t1.text,
      t1.text_last_update,
      t2.text_version
    
    from tabel1 t1
    
    left join table3 t3 ON t3.text_id = t1.id
    left join (
      select t.id, t.text_id, t.text_version, t.`date`
      from table2 t
      where t.`date` <= t3.`date`
      order by t.`date` desc limit 1
    ) t2 ON t2.text_id = t1.id
    
    where t3.user_id = 1
    Ответ написан
    Комментировать
  • Что почитать о рекламе в vk?

    gobananas
    @gobananas
    finishhim.ru
    Все сообщества парсеров: ЦереброТаргет, ТаргетХантер, на SMMщиков подпишитесь нескольких
    Ответ написан
    Комментировать
  • Есть ли модуль обратного отсчета для товара без скидки?

    zoozag
    @zoozag
    Opencart
    Возьмите модуль привязанный к скидке и чуть допилите его.
    Ответ написан
    Комментировать
  • Как добавить на изображение закругленный текст?

    @SharuPoNemnogu
    не язык плохой, программисты такие...
    набросал за 10 минут. Не готовое идеальное решение, но принцип думаю понятен
    class RoundedText
    {
        private $string = "some text";
        private $angle = 45;
        private $image;
        private $startX = 150;
        private $startY = 250;
    
        /**
         * @param string $string текст для отрисовки
         */
        public function __construct($string = '')
        {
            if (!empty($string)) {
                $this->string = $string;
            }
        }
    
        /**
         * Рисует текст
         */
        private function drawText()
        {
            // пустая черная картинка 500х500
            $this->image = imagecreatetruecolor(500, 500);
            //массив символов из строки
            $simbols = str_split($this->string);
            //центр строки
            $center = round(count($simbols)/2);
            //цвет символов (красный)
            $color = imagecolorallocate($this->image, 0xFF, 0x00, 0x00);
            //множитель угла наклона
            $i = 1;
            //счетчик символов
            $j = 1;
    
            while ($simbols) {
                $simbol = array_shift($simbols);
                //угол поворота символа
                $angle = $this->angle / $i;
    
                //если текущий символ дальше центра, инвертируем угол накрона
                if ($j > $center) {
                    $angle *= -1;
                    $i--;
                 } else {
                    $i++;
                }
    
                //рисуем символ
                $coords = imagefttext($this->image, 24, $angle, $this->startX, $this->startY, $color, 'path_to_font.ttf', $simbol);
    
                //присваиваем координаты нового символа
                $this->startX = $coords[2];
                $this->startY = $coords[3];
    
                $j++;
            }
        }
    
        public function save($path = null)
        {
            $this->drawText();
            header("Content-type: image/jpeg");
            imagejpeg($this->image, $path, 90);
            imagedestroy($this->image);
        }
    }
    
    $roundText = new RoundedText();
    $roundText->save();
    Ответ написан
    1 комментарий
  • Как подключиться с сайта к веб-сервису 1С через vpn?

    @spotifi
    Никак.
    Это делается настройками сервера. Создаете VPN-тунель.

    В скрипте просто адрес поменяете на адрес внутри тунеля VPN.
    Ответ написан
    2 комментария
  • Как правильно сделать запрос?

    maximw
    @maximw
    SELECT DISTICT product_id  FROM t AS t1
    LEFT JOIN t AS t2 ON t1.product_id = t2.product_id
    WHERE t1.param_id = 1 AND t2.param_id = 2 OR t1.param_id = 2 AND t2.param_id = 1
    Ответ написан
    5 комментариев
  • Как с помощью htaccess добавить обратный слэш в конце домена и части разделов?

    @ShamblerR
    странно вообще то, обычно или следят за двойными страницами или нет,но частично???? это зачем
    Теперь смотри
    1. не везде можно добавить / например его нельзя добавить к html файлу так что нужно еще правило следящее за такой фигней
    2. если тебе нужен просто слеш после домена так поставь его в куда /куда и все
    3. Если тебе нужно на определеном уровне сработку скажем на 3 то следовательно и пропиши в условие
    4. Если тебе нужно избавитсья от дублей то

    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$  
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d   
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$      
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]     
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    Ответ написан
    Комментировать
  • Выводить города из mysql по первой букве, как сделать?

    Примерно так
    $query_cities = "SELECT * FROM `cities` WHERE `cities`.`name` LIKE '".escape($_GET['text'])."%' LIMIT 10";
    Ответ написан
    4 комментария
  • Как лучше сделать копию сайта для другого региона?

    XXX
    @XXX
    Решение где-то рядом
    @vaserguy верстку не обязательно менять, достаточно поменять мета-теги (descriprion, title), заголовки страниц и написать новые тексты для страниц, кроме описаний товаров. Характеристики товаров нет смысла пытаться менять, а вот их описания можете переписать, если товаров не слишком много.

    Если продвижением сайтов в поисковиках Вы не собираетесь заниматься, можете просто сделать дубль своего каталога, поменяв только везде в текстах Челябинск на Екатеринбург. Поисковикам дублирование контента не понравится, но проиндексировать сайт должны. sitemap.xml и robots.txt не забудьте поправить.
    Ответ написан
    5 комментариев