• Как отключить скрипт на мобильных устройствах или при соответствующих разрешениях дисплея?

    varzin
    @varzin
    UI/UX дизайнер в instadev.ru
    var isMobile = {
        Android:        function() { return navigator.userAgent.match(/Android/i) ? true : false; },
        BlackBerry:     function() { return navigator.userAgent.match(/BlackBerry/i) ? true : false; },
        iOS:            function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false; },
        Windows:        function() { return navigator.userAgent.match(/IEMobile/i) ? true : false; },
        any:            function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());  }
    };
    	
    if ( !isMobile.any() ) {
        // Код не для телефонов
    }
    Ответ написан
    4 комментария
  • Как посчитать сумму переплаты?

    ovalenko
    @ovalenko
    O mne
    Это не val, а html.
    function calc()
        {
        var summa = parseFloat($('#summa').html());
        var stavka = parseFloat($('#stavka').html());
        var srok = parseFloat($('#srok').html());
        var pereplat = parseFloat(summa/100*stavka*srok);
        $('#pereplat').html(pereplat);
    }
    calc();
    Ответ написан
    Комментировать
  • В случае, если произвольное поле ACF не заполнено, то показать значение другого произвольного поля - как сделать?

    @vardoLP
    Ват ю сэй эбаут май мама?!
    ну так и проверяйте.

    $field1 = get_field('field-1');
    
    $field2 = get_field('field-2');
    
    if($field1){
        echo $field1;
    }elseif($field2){
        echo $field2;
    }
    Ответ написан
    1 комментарий
  • В случае, если произвольное поле ACF не заполнено, то показать значение другого произвольного поля - как сделать?

    JoyDumply
    @JoyDumply
    Кодить нужно красиво
    <?php 
    $email = get_field('email') ? get_field('email') : get_field('email2') ;
    if(!empty($email)):
     ?>
    <div>Электронная почта: <?= $email; ?></div>
    <?php endif; ?>
    Ответ написан
    1 комментарий
  • Как вывести все дочерние страницы определенной страницы wordpress?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Здравствуйте.

    значит в коде нужно определять автоматически ID страницы "Продукция" и исходя из полученного ID выводить список всех его дочерних страниц на любой из дочерних страниц.


    if ( wp_get_post_parent_id() )	{
    	$ancestors = get_post_ancestors( get_the_ID() );
    	$parent_id = end( $ancestors );
    } else {
    	$parent_id = get_the_ID();
    }


    Не тестировал код, но по идеи, в $parent_id и будет искомый ID родительской страницы на любой из дочерних страниц, включая саму родительскую страницу.
    Ответ написан
    3 комментария
  • Какую архитектуру проекта выбрать?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Для всех пользователей - лендинг на www.example.com.
    Все API www.example.com/api/version/whatever

    Все скрывать за реверсивным прокси!
    full-stack-front-end-back-end-comic-joke


    А теперь почему следует делать именно так.
    Домен следует вешать на www по простой причине - субдомены кэшируются на более короткое время, а следовательно переезд будет менее болезненный.
    Лендинги и дребедень делать удобнее всего внутри каталогов. Например, у вас есть ссылка www.example.com/megapartner она может быть расшарена в соц.сетях, на форумах и т.д. Это все увеличивает вес вашего домена для поисковых систем. Если вы будете использовать субдомены, то этот вес будет размываться, т.к. поисковики будут все считать разными сайтами.
    Авторизация и управление пользователями должны быть унифицированы. Не стоит делать 20 разных мест, для которых надо авторизовываться по 100 раз. Для этого давно были придуманы роли. Я рекомендую сразу реализовывать вход через тот же Facebook/Google/OK/VK и т.д.
    Общая авторизация дает громадное количество преимуществ, например облегчает поддержку в разы, позволяет знать контекст выполнения действий.
    Один домен облегчает взаимодействие с пользователем, т.к. ему не нужно запоминать десяток разных страниц.
    Ну и дополнительные плюшки реверсивного прокси заключаются в том, что всегда можно настроить редирект, что-то закэшировать, показать правильную станичку, если какой-то из сервисов отвалился.
    Позади прокси следует все делить по назначению, держать каждый проект в разных репозитариях и т.д. Это может существенно упростить разработку, например можно отдать какой-то лендинг в переработку просто дав доступ к репозитарию.

    Если очень хочется упороться и поиграть в девопса, разбейте на 100500 микросервисов, засуньте все внутрь кубернетиса с каким-нибудь истио. Будет красивая архитектура с контейнерами и плюшками.
    Когда наиграитесь, возьмете обычный nginx, напишете конфигурацию простого реверса и он будет работать годами как часы.
    Ответ написан
    Комментировать
  • Оптимальные конфиги для связки: DigitalOcean(5$) + VestaCP + Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Веста хоть и самая легкая из CP, но все же жрет ресурсы, а на дроплете за $5 их и так очень мало. Ну а для одного сайта зачем вообще контрольная панель?! Удалите к чертям. Ну или попробуйте объяснить, зачем вам эта панель вообще нужна. Уверен, смысла в ней нет.

    2. На минимальном дроплете надо все делать максимально продуманным и эффективным. Обязательно нужен swap 512Мб или даже 1Гб. Nginx, желательно последний mainline. PHP5-FPM с Opcache, для Opcache необходимо выделить 32Мб. Если сайтов больше чем 1 - возможно придется увеличить до 64Мб. Вместо MySQL ставим MariaDB. Обязательно ставим Memcached, php5-memcached (c буквой "d" в конце), ему даем 64-128Мб памяти. В WordPress устанавливаем плагин Memcached Redux (только внимательно читаем как его устанавливать - вместо активации плагина надо скопировать файл в wp-content). Это включит persistent object cache на уровне WordPress, большинство запросов вообще перестанет доходить до БД, а это самое узкое место на минимальном дроплете. Кроме того, если уж делать все серьезно, ставим плагин FFPC (Fast Full Page Cache), он позволит кешировать страницы целиком, а чуть поковырявшись с конфигами, можно кешировать страницы в Memcached (то есть в память), и отдавать их оттуда непосредственно Nginx'ом, даже не поднимая PHP-процесс, и уж тем более не касаясь базы данных. Объем памяти для Memcached, возможно, придется увеличивать - все зависит от объема сайта. Но при таком подходе вы получите очень высокую скорость отклика от своего маленького сервера, и он сможет выдерживать очень большие нагрузки. С полностью кешированным в память сайтом и отдачей Nginx'ом непосредственно из Memcached, а также с оптимизированным кодом и файлами (минификация и конкатенация скриптов и стилей, gzip, оптимизированные картинки и т.д., минимизация количества запросов и т.п.) данный дроплет за $5 сможет обслуживать и 50 000 просмотров в сутки. А это уже 1 500 000 в месяц. Даже пиковые 1-2-3 тысячи запросов (что будет крайне редко, если будет вообще) за короткий промежуток времени ("хабраэффект") пройдут еле-еле заметно - даже если начнет использоваться swap, на SSD-дисках он быстр. В итоге часть клиентов будут испытывать небольшие задержки, не более. Но это речь об одновременной тысяче посетителей на сайте, не меньше. К тому времени, как аудитория сайта дорастет до этого уровня, уверен вы уже перейдете хотя бы на дроплет за $10. А там ресурсов больше, при аналогичном подходе этот дроплет выдержит намного больше.
    Ответ написан
    5 комментариев
  • Как отключить слежку Google?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    То есть, Вы реально думаете, что Яндекс не собирает о нас никакой информации и не передает ее куда надо?))) Слив подобной инфы - это "бонус" интернетов. Не нравится - не пользуйтесь интернетом, компьютером, смартфоном, телевизором и вообще электронными устройствами. Уезжайте из города в деревню, топите печку дровами, выращивайте картошку и пусть эти всякие Гуглы удавятся - не получат ни байта Вашей личной информации!
    Ответ написан
    21 комментарий
  • Как можно адаптировать меню?

    svistiboshka
    @svistiboshka
    живые веб интерфейсы
    Ответ написан
    Комментировать
  • Влияет ли наличие onclick в ссылках на СЕО?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    Влияет ли наличие onclick в ссылках на СЕО

    Нет, не влияет. Может влиять его содержимое.
    onclick="window.open('https://example222.com');return false;"

    Это как раз тот случай. Подобная конструкция делает поведение пользователя не очевидным, а это не может влиять положительно. Желательно разнести ссылку и кнопку с onclick в разные DOM-узлы.
    Ответ написан
    3 комментария
  • Влияет ли наличие onclick в ссылках на СЕО?

    opium
    @opium
    Просто люблю качественно работать
    Нормально все должно быть
    Ответ написан
    Комментировать
  • Как запретить индексацию только группы страниц в robots.txt?

    igorux
    @igorux
    city - должно быть открыто


    Allow: /city/$

    название-города - должно быть закрыто

    Сделайте общую подстроку в конце url для этих страниц, например, /city/название-города/city-info/
    Тогда получится:
    Disallow: /city/*/city-info/$

    products - должно быть открыто, но все, что после products должно быть закрыто от индексации

    Allow: /city/*/products/$
    Disallow: /city/*/products/*
    #/city/*/products/ подходит под оба условия, будет выбрана директива Allow
    Ответ написан
    4 комментария
  • Как в хлебных крошках выводить значения произвольных полей во всех уровнях вложенности?

    kaliyan
    @kaliyan
    php-developer, wordpress-developer
    _add_title обрабатывает только последний элемент крошек. За иерархию отвечает функция _page_crumbs.

    Привожу код, адаптированный под ваши требования.

    function _page_crumbs( $post ){
    		$parent = $post->post_parent;
    
    		$crumbs = array();
    		while( $parent ){
    			$page = get_post( $parent );
    
    			$my_title = get_field('my_title_field', $page->ID);
    			$post_title = esc_html($page->post_title);
    			$title = ($post_title != $my_title  && !empty($my_title)) ? $my_title  :  $post_title;
    
    			$crumbs[] = sprintf( $this->arg->linkpatt, get_permalink($page), esc_html($title) );
    			$parent = $page->post_parent;
    		}
    
    		return implode( $this->arg->sep, array_reverse($crumbs) );
    	}


    function _add_title( $add_to, $obj, $term_title = '' ){
    		$arg = & $this->arg; // упростим...
    		$title = $term_title ? $term_title : esc_html($obj->post_title); 
    		$show_title = $term_title ? $arg->show_term_title : $arg->show_post_title;
    		
    		$my_title_field = get_field('my_title_field');
    		$title = ($title != $my_title_field && !empty($my_title_field)) ? $my_title_field : $title;
    
    		// пагинация
    		if( $arg->pg_end ){
    			$link = $term_title ? get_term_link($obj) : get_permalink($obj);
    			$add_to .= ($add_to ? $arg->sep : '') . sprintf( $arg->linkpatt, $link, $title ) . $arg->pg_end;
    		}
    		// дополняем - ставим sep
    		elseif( $add_to ){
    			if( $show_title )
    				$add_to .= $arg->sep . sprintf( $arg->title_patt, $title );
    			elseif( $arg->last_sep )
    				$add_to .= $arg->sep;
    		}
    		// sep будет потом...
    		elseif( $show_title )
    			$add_to = sprintf( $arg->title_patt, $title );
    
    		return $add_to;
    	}


    Сорри, могут быть ошибки, нет времени проверить.
    Ответ написан
    9 комментариев
  • Как сделать тень внизу стик меню?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Все просто:
    используйте CSS box-shadow
    А вот и генератор, чтобы самому не писать - https://www.cssmatic.com/box-shadow

    Вот, инструкция, как создать fixed header - https://www.w3schools.com/howto/howto_js_sticky_he...
    Ответ написан
  • SEO-оптимизация с нуля. Ничего не забыл?

    @Matuvi
    У меня в закладках чеклист https://www.seochecklist.ru/
    Ответ написан
    Комментировать
  • Как правильно реорганизовать сайт с поддоменами на сайт с подкаталогами?

    RotgarSett
    @RotgarSett
    SEO Эксперт
    Если задача именно уйти от поддоменов, но оставить при этом разделение по региональности, то решение именно в подкаталогах. Подкаталоги для яндекса хуже так как им нельзя указать регион в вебмастере, а вот поддоменам можно. Поэтому если вы все же хотите сохранить региональное разделение, то лучше оставить поддомены. Если же поддомены вообще никак не оставить, то можно все же сделать каталоги по точно такому же принципу как и поддомены, Яндекс поймет что это региональное разделение если будут разные тайтлы\заголовки\контакты, не будет считать дублями.
    Ответ написан
    Комментировать
  • Влияет ли на сео display: none?

    Скрывать надо через visible hidden

    Как вариант - https://codepen.io/anon/pen/yXzJGx
    Ответ написан
    1 комментарий
  • Как при массовой рассылке (10000) не загнать домен в бан?

    PNAGAEV
    @PNAGAEV
    Домены в спам не попадают, попадают IP адреса рассылающих серверов.
    Ответ написан
    8 комментариев
  • Как сделать так, чтобы при выборе в списке был виден другой список?

    SV0L0Ch
    @SV0L0Ch
    Разработчик специализируюсь на Bitrix и Wordpress
    По событию change для select надо показывать нужный.
    Можно фильтровать по значению option.

    Как-то так:

    <select id="type">
        <option>Выбрать</option>
        <option value="muz">Музыка</option>
        <option value="book">Аудио книги</option>
    </select>
    
    <select id="muz" style="display:none">
        <option>Выбрать</option>
        <option value="">Рок</option>
        <option value="">Классика</option>
        <option>Рэп</option>
    </select>
    
    <select id="book" style="display:none">
        <option>Выбрать</option>
        <option value="">Рок</option>
        <option value="">Классика</option>
    </select>

    $(function(){
          $('#type').change(function () {
               $('#'+ $(this).val() ).show();
          });
    });
    Ответ написан
    1 комментарий
  • Как из адресной строки вытащить из url нужное значение?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    lmgtfy.com/?q=php+routing

    Конкретные примеры:
    Symfony Routing (см. "placeholders")
    PhpLeague Route (см. "Wildcard Routes")
    Aura.Router

    В вашем случае должен быть определён маршрут типа:
    /{city_name}/products (это на примере Symfony Routing, в других смысл радикально отличаться не будет)

    Далее в случае попадания запроса на этот маршрут вы передаёте нужному контроллеру данные - в данном случае значение параметра city_name и там уже работает логика связанная с обработкой разных городов.
    Ответ написан
    Комментировать