• Как полностью запретить индексацию содержимого div?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Тега <nofollow> в HTML не существует, и браузеры или поисковые системы его не распознают.


    1. Использование атрибута data-nosnippet: Атрибут data-nosnippet запрещает поисковым системам отображать содержимое блока в результатах поиска.
    <div data-nosnippet>
        Это содержимое не будет отображаться в поисковой выдаче.
    </div>

    2. Использование тега с атрибутом robots: Добавьте в страницы:
    <meta name="robots" content="noindex">

    3. Атрибут rel="nofollow" для ссылок: Если ваша цель — запретить индексирование конкретной ссылки, используйте атрибут rel="nofollow" внутри тега :
    <a href="/page" rel="nofollow">Ссылка</a>
    Ответ написан
    Комментировать
  • Как объединить ключи и значения объекта или get параметров строки?

    Fortoo
    @Fortoo Автор вопроса
    Top-Web OpenCart
    Решил таким способом

    $('#button-filter').on('click', function() {
        var params = $("#filter_get").serializeArray();
        var result = {};
    
        $.each(params, function(_, field) {
            if (result[field.name]) {
                result[field.name] += ',' + field.value;
            } else {
                result[field.name] = field.value;
            }
        });
    
        var queryString = $.param(result);
        var page_link = '{{action}}';//URL страницы без get параметров (TWIG)
        window.location = page_link + '&' + queryString;
    });


    И все параметры name без квадратных скобок

    name="svfilter_category"
    Ответ написан
    Комментировать
  • Почему не отображается имя выбранного файла input?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Может просто добавить чёрный цвет текста?
    <input type="file" multiple="" class="custom-file-input" id="fileInput" style="color: #000;">
    Ответ написан
    Комментировать
  • Почему после закрытия окна magnificPopup блокируется весь js на странице?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    В моём случае, после закрытия magnificPopup (именно в мобильных браузерах), страница перестала скролиться.
    Пришлось сделать костыль и скрипт вставил в файл футера (так надёжнее чем в отдельном файле js)
    $(document).mouseup( function(e){ // событие клика по веб-документу
    	var div = $("#popup-quickorder"); // тут указываем ID элемента, вложенного внутрь .mfp-content
    	if ( !div.is(e.target) // если клик был не по нашему блоку
    	    && div.has(e.target).length === 0 ) { // и не по его дочерним элементам
    		setTimeout(function(){
                        $('html').css('overflow', '');
                        $('.mfp-wrap').css('overflow', '');
                    }, 100);
    	}
    });
    Ответ написан
    Комментировать
  • Как в Slick js отобразить половину следующего слайда?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Кто-то делает так
    centerMode: true,
    centerPadding: '50%',


    И наоборот: нужно чтобы не было частей бывает какие-то стили мешают и например задал 3 слайда, а показывает 3,2 слайда
    то быстрым решением будет сделать так
    centerMode: true,
    centerPadding: '0',
    Ответ написан
    Комментировать
  • Как отключить скролл при открытой модалке?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Опишу мой случай:
    Скопировал рабочий сайт на другой хостинг (masterhost) и модалка (magnific popup) начала прокручиваться вместе со всей страницей на любых мобильных устройствах.
    Целый день Поиска такого поведения не дал результата, хоть я и перешерстил все события и всевозможные сценарии.
    Наверное какие-то глюки хостинга- ибо нет другого объяснения, чтобы перестала адекватно работать библиотека(magnific popup).
    Я неоднократно замечал, как из-за хостинга (eternalhost) переставал работал ajax и т.п.(хотя такое редко случается). И только долгие переписки с поддержкой, помогали решить проблему.
    Конечно можно было-бы продолжать поиски, т.к. в библиотеке есть Ветвления с определением устройства.....

    Но решил сделать костыль:
    учитывая что при открытии модалки, некоторым тегам должны добавляться стили
    <html style="margin-right: 17px; overflow: hidden;">

    <div class="mfp-wrap mfp-close-btn-in mfp-auto-cursor mfp-ready" tabindex="-1" style="overflow: hidden auto;">

    но overflow: hidden; не добавлялся

    пример из OpenCart (быстрая корзина)
    function fastorder_open_cart() { 
      $.magnificPopup.open({
    	tLoading: '<span><i style="font-size:50px;" class="fa fa-spinner fa-pulse"></i></span>',
    	items: {
    	  src: '#popup-quickorder',
    	  type: 'inline',
    	  modal: true
    	}			
      });
      $( "#quick_checkout_cart" ).load( 'index.php?route=checkout/quick_checkout_cart');
      //SV исправление бага скрола вместе с попапом
        setTimeout(function(){
          $('html').css('overflow', 'hidden');
          $('.mfp-wrap').css('overflow', 'hidden auto');
        }, 100);
    }
    Ответ написан
    Комментировать
  • Почему поле user-agent бывает пустым?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    IP есть, а user-agent — нет


    У меня была похожая ситуация в OpenCart2.1.
    Когда отрабатывал попап Заказать звонок, то данные (без товара) записывались в Заказы.
    Сначала я заметил что IP подменяется, а user-agent по прежнему не было.

    Потом я нашёл причину в неявной переадресации.

    Скрипт содержал "странный способ обращению к методу контролера"
    $array_call = array('name' => $_POST['name'], 'phone' => $_POST['phone']);
    $info_call = base64_encode(json_encode($array_call ));
    file_get_contents('http://' . $_SERVER['SERVER_NAME'] . '/index.php?route=checkout/checkout/ajaxone&info=' . $info_call ;);


    file_get_contents- отправляет запрос на адрес в данном случае
    После срабатывало событие и запускало другой контроллер, но даже оттуда я не мог вытащить
    $_SERVER
    $_COOKIE
    $this->request->cookie


    Я переделал запись Заказа (через обращение внутри контроллеров) и всё заработало
    Ответ написан
    Комментировать
  • Почему не отображаются маркеры в списке?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Отменённый маркер

    list-style-type: none;

    может быть как тегу <ul>, так и тегу <li>
    Ответ написан
    Комментировать
  • Как проверить наличие таблицы в БД?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    К примеру проверка перед удалением (методы OpenCart)

    $result = $this->db->query("SELECT * FROM `table_name`");
    if ($result->num_rows) {
        $this->db->query("DROP TABLE `table_name`");
    }
    Но... может быть ошибка.
    Ошибка возникает когда мы пытаемся получить или удалить не существующую таблицу!

    Можно сделать проверку через SHOW, но тоже будет ошибка, если таблица не существует!
    $result = $this->db->query("SHOW TABLES LIKE `table_name`");
    if ($result->num_rows) {
        ...
    }


    Ошибка- потому-что к такому запросу нужны одинарные кавычки, а не обратные
    $result = $this->db->query("SHOW TABLES LIKE 'table_name'");
    if ($result->num_rows) {
        ...
    }


    В данном случае лучше так
    $this->db->query("DROP TABLE IF EXISTS `table_name`");

    Евгений прав)
    Ответ написан
    Комментировать
  • Не работает переключение input-ов radio. В чём может быть проблема?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Чтобы input-ты переключались зависимо, должны быть одинаковые name
    <input type="radio" name="one"><br>
    <input type="radio" name="one"><br>
    <input type="radio" name="one">


    А если name разные, то использовать js
    <input type="radio" name="one"><br>
    <input type="radio" name="two"><br>
    <input type="radio" name="three">

    $('input[type="radio"]').on('click', function() {
      $('input[type="radio"]').prop('checked', false);
      $(this).prop('checked', true);
    });
    Ответ написан
    Комментировать
  • При ajax запросе, знак '+' заменяеся на пробел, как исправить?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    data: $('#fastorder_data').serialize() + '&action=send' + '&together=' + encodeURIComponent($('input[name=\'together\']:checked').val()),
    Ответ написан
    Комментировать
  • Как поймать событие клика на элемент внутреннего списка в jquery?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Мой вариант
    <ul class="nav navbar-nav">
    	<li>
    		<a href="/index.php?route=product/category&amp;path=1852" rel="nofollow">Заборы
    			<span class="show-sc-mobile" data-toggle="collapse">
    				<i class="fa fa-plus plus"></i>
    			</span>
    		</a>
    		<div class="collapse mob-submenu-list">
    			<ul class="list-unstyled">
    				<li><a href="/index.php?route=product/category&amp;path=1852_1853">Заборы из профнастила</a></li>
    				<li><a href="/index.php?route=product/category&amp;path=1852_1854">Заборы из дерева</a></li>
    			</ul>
    		</div>
    	</li>
    	<li>
    		<a href="/index.php?route=product/category&amp;path=1852" rel="nofollow">Навесы
    			<span class="show-sc-mobile" data-toggle="collapse">
    				<i class="fa fa-plus plus"></i>
    			</span>
    		</a>
    		<div class="collapse mob-submenu-list">
    			<ul class="list-unstyled">
    				<li><a href="/index.php?route=product/category&amp;path=1852_1853">Навесы из профнастила</a></li>
    				<li><a href="/index.php?route=product/category&amp;path=1852_1854">Навесы из поликорбоната</a></li>
    			</ul>
    		</div>
    	</li>
    </ul>


    658abb3f13054730133701.png

    $("#menu-mobile-ns .show-sc-mobile").on('click', function(e) {
        e.preventDefault();
        var $link = $(this).closest("a");
    
        if (e.target === $link[0]){
            return false;
        } else {
           $(this).toggleClass("open-sc-mobile");
           $(this).parent().next().toggleClass("in");
        }
    });
    Ответ написан
    Комментировать
  • Где файл конфигурации nginx?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    К примеру у меня сервер разделён на пользователей и на каждом пользователе свой сайт.
    Поэтому такой путь
    /etc/nginx/vhosts/пользователь/site.ru.conf

    657a0a3e0be82817573863.png

    если у вас на сервере стоит ISPmanager

    657a0fdbef2c6925784174.png
    Ответ написан
    Комментировать
  • Как сделать плавную прокрутку к якорю на другой странице?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    А можно ещё вот так:

    var myHash = window.location.hash; //получаем значение хеша
    history.replaceState({}, document.title, window.location.href.split('#')[0]); //очищаем хеш
    
    $(document).ready(function(){
        if(myHash[1] != undefined){ //проверяем, есть ли в хеше какое-то значение
            $('html, body').animate({scrollTop: $(myHash).offset().top}, 500); //скроллим за полсекунды
        };
    });


    В таком варианте, не придётся подменять #anchor_search на #search

    Обратите внимание, что внутри
    $(document).ready(function(){

    только часть скрипта

    Ну или вот так https://qna.habr.com/q/355083
    Ответ написан
    Комментировать
  • Как в плагине validate убирать сообщение об ошибке если пользователь нажал галочку в checkbox?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Сообытия формы, на которые подписывается плагин — это «click», «focusin», «focusout», «keyup», «submit».
    Т.е он следит именно за формой- поэтому все поля должны быть внутри формы.
    и
    https://jqueryvalidation.org/category/selectors/
    https://api.jquery.com/checked-selector/
    Ответ написан
    Комментировать
  • Как выполнить скрипт при повороте экрана?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Jquery
    $(window).on('orientationchange', function(e) {
    // код
    });

    Некоторые устройства не поддерживают событие orientationchange,
    поэтому можно отловить изменение размера окна.
    Поэтому лучше так
    $( window ).on('load resize orientationchange', function( event ) {
      // код
    });


    // Вы также можете вручную запустить это событие.
    $( window ).orientationchange();
    Ответ написан
    Комментировать
  • Как отменить переадресацию после ошибки 302, используя jquery ajax?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    В комментах Vladimir Abramov правильно описал.
    Но не всегда понятна причина такого поведения браузера.
    К примеру:
    В консоле- post запрос, вкладка Заголовки
    Вдруг появляется поле location
    64fc7ee302daf641203740.png

    В этом поле виден длинный адрес
    https://accounts.google.com/o/oauth2/auth/oauthchooseaccount?response_type=code&access_type=offline&client_id=344682867558-pqngnatm6b7tf9ko067ktiuq7ae4mao9.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fuss-center.ru%2Foauth2callback.php&state&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets&approval_prompt=auto&service=lso&o2v=1&flowName=GeneralOAuthFlow


    И как выянилось, в коде был старый код метрики от Гугла и он делал эту переадресацию.
    Глобальным поиском пришлось искать всё что начинается на ga(' (пример- ga('send', 'pageview'); )
    После удаления, код ответа 200
    Ответ написан
    Комментировать
  • Как реализовать ссылку с номер whatsapp на сайте?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Сейчас (2023г) проверил, надёжнее работает так

    И телеграм вот так лучше
    <a href="tg://resolve?domain=USERNAME">Telegram</a>

    USERNAME без собаки

    И для Whatsapp
    <a href="whatsapp://send?phone=79809999999">Whatsapp</a>
    Ответ написан
    Комментировать
  • Как создать HTML Якорь на текущую страницу?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    Можно для якоря использовать любые идентификаторы, начиная от data-url и заканчивая просто классами
    <body>
      <div class="calculator__step step_1">
        <img src="" alt="">
      </div>
      <div class="calculator__step step_2">
        <img src="" alt="">
      </div>
      <div class="calculator__step step_3">
        <img src="" alt="">
      </div>
    </body>

    К примеру прокручивать между блоками, используя классы.....
    $("body").on('click', '.calculator__step img', function(e){
            var sc = '.step-' + (Number($(this).parent().attr("class").match(/(step\-[0-9]+)/)[0].match(/[\d]+$/)[0]) + 1);
            var dn = $(sc).offset().top;
               // sc - в переменную заносим информацию о том, к какому блоку надо перейти
               // dn - определяем положение блока на странице
                $('html, body').animate({scrollTop: dn}, 1000);
        });
    Ответ написан
    Комментировать
  • Где найти шаблон Успешного заказа?

    Fortoo
    @Fortoo
    Top-Web OpenCart
    При оформлении заказа, отправляется запрос в контролер
    /index.php?route=checkout/success

    а контролер пересылает на файл вида

    common/success

    Соответственно шаблон
    site.ru/catalog/view/theme/ваша_тема/template/common/success
    Ответ написан
    Комментировать