• Как называлась статья от zelenyikot про героев-космонавтов?

    @UndineS
    Похоже на рассказ о Гордоне Купере из https://habr.com/ru/post/168937/ (но это не от Zelenyikot)
    Ответ написан
    1 комментарий
  • Как составить запрос в mysql?

    @UndineS
    используйте LEFT JOIN - он позволит взять из левой таблицы все записи, а из правой - только те, для которых нашлись подходящие в левой. Т.е. у Вас получается в выборке все записи из EVENTS, из которых у части записей в столбце "access" будет стоять NULL.

    объяснение различий join с картинками: www.skillz.ru/dev/php/article-Obyasnenie_SQL_obedi...
    Ответ написан
    1 комментарий
  • Почему ошибка в WordPress ?v=2.0:6 WebSocket connection to 'wss://public-api.wordpress.com/pinghub/wpcom/me/newest-note-data?

    @UndineS
    Скорее всего, какой-то из плагинов обращается к данному адресу, который отвечает ответом "403" (недостаточно прав). Судя по https://wordpress.org/support/topic/403-forbiden-p... , это может быть, например, плагин JetPack (https://ru.wordpress.org/plugins/jetpack/ ). Попробуйте временно отключить плагин и посмотреть, останется ли ошибка.
    Ответ написан
    Комментировать
  • Как проверить GET запрос?

    @UndineS
    в цикле можно использовать команду continue для перехода к следующей итерации (не выполняем далее действия с текущими значениями счетчиков, а переходим к следующим значениям)
    Например:
    var index = 0, 
        id = 0;
    
    while (i < 4) {
       i += 1;
       while (j > 4) {
          j +=1;
          if (i == 0 && j==0) {
             continue;
          } else {
             let image = new Image;
             image.src = "../img/designers/" + index + '.' + id + ".jpg";
          }
       }
    }


    Можно использовать как в while, так и в for:
    https://learn.javascript.ru/while-for

    Если закономерность отсутствующих фото выявить нельзя, то можно получить ответ сервера таким образом:
    var xhr = new XMLHttpRequest();
    
    xhr.open('GET', '/ajax-xmlhttprequest', true);
    
    xhr.send();
    
    xhr.onreadystatechange = function() {
      if (this.readyState != 4) return;
    
      // по окончании запроса доступны:
      // status, statusText
      // responseText, responseXML (при content-type: text/xml)
    
      if (this.status != 200) {
        // обработать ошибку
        alert( 'ошибка: ' + (this.status ? this.statusText : 'запрос не удался') );
        return;
      } else {
      alert('ответ 200! ссылка рабочая');
    }
    
      // получить результат из this.responseText или this.responseXML
    }


    Подробнее тут: https://learn.javascript.ru/ajax-xmlhttprequest
    Ответ написан
    2 комментария
  • Почему некоторые стили не замечаются браузером?

    @UndineS
    Самая вероятная, на мой взгляд, причина состоит в том, что примененный ниже по файлу стиль будет "перебивать" предыдущие стили, примененные к этому же элементу. При объединении не всегда очевидно заранее, как совместятся файлы.

    Если при удалении media-запросов проблема уходит, то проверьте корректность закрытия фигурных скобок - возможно, часть стилей попадает под неподходящий media-запрос.
    Ответ написан
  • Как в тайтл добавить таксономию через плагин Yoast SEO?

    @UndineS
    %%ct_%% - Значение пользовательских таксономий из записи (через запятую)
    %%ct_desc_%% - Описание произвольной таксономии

    Другие примеры, что можно добавить в title, есть тут:
    https://webmaster-seo.ru/seo/nastrojka-plagina-yoa...
    Ответ написан
    Комментировать
  • Как запомнить значение атрибута data?

    @UndineS
    В конкретно Вашем случае - можно так:
    $('.js-modal-join').click(function() {
            alert($('.js-join').data('id'))
        });


    А на практике модальные окна, например, часто используются, чтобы показать форму, в которой что-то нужно заполнить/кликнуть (например, для отправки заявки). Чтобы получить информацию, с какого товара был клик (заявка на какой товар оставляется), то в обработчике клика прописывают заполнение скрытого поля формы (), значение этого поля отправляется с другими данными формы на последующую обработку.
    Ответ написан
    1 комментарий
  • Js код работает на половину на адаптиве из-за чего такое может быть?

    @UndineS
    Для анимации:
    Раскомментируйте в блоке "@media all and (max-width: 650px){ ... }" анимацию
    animation: moon-star-one 4s infinite; animation-timing-function: linear;

    (аналогично для второй и третьей звезды)
    и сам код анимации
    @keyframes moon-star-one {
    	0% { transform:translate(100%, -200%) scale(1.19) rotate(0deg); }
    	50% { transform:translate(100%, -200%) scale(1) rotate(180deg); }
    	100% { transform:translate(100%, -200%) scale(1.19) rotate(360deg); }
    }
    @keyframes moon-star-two {
    	0% { transform:translateY(-25%) scale(1) rotate(0deg); }
    	50% { transform:translateY(-25%) scale(0.81) rotate(180deg); }
    	100% { transform:translateY(-25%) scale(1) rotate(360deg); }
    }
    @keyframes moon-star-three {
    	0% { transform:translate(200%, 25%) scale(0.81) rotate(0deg); }
    	50% { transform:translate(200%, 25%) scale(0.62) rotate(180deg); }
    	100% { transform:translate(200%, 25%) scale(0.81) rotate(360deg); }
    }


    Для свайпа:
    досканально разобраться на ходу не получается, но попробуйте в блоке
    $('section[name=sleep]').swipe( {
    ...
    });

    поменять друг на друга слова left и right в условиях direction (содержимое блока if не менять, только условие), так как в блоке с солнцем это работает. Скорее всего, там какой-то конфликт в расчетах происходит в блоке с луной. Версия RAX7 насчет двух блоков тоже должна быть верной, исправьте и то, и то.
    Ответ написан
    Комментировать
  • Как сверстать такую сетку?

    @UndineS
    гриды (display: grid и свойства для описания гридов) позволяют задать такое.

    С помощью гридов можно на уровне родительского блока указать стандартную ширину/высоту ячейки сетки (как в долях от экрана, так и в пикселях, в процентах, чередуя различные варианты), а уже у конкретного блока указывать границы его начала/окончания по вертикали и по горизонтали, основываясь на сетке, описанной в родительском блоке (например, указать, что первый блок по высоте идет от линии 1 до линии 3, а по ширине - от линии 1 до линии 2 и т.п.). Можно даже в описании родительского блока указать, какие ячейки должны занимать потомки, указывая их класс (пример тут: https://developer.mozilla.org/en-US/docs/Web/CSS/C... )

    Подробнее о гридах на русском языке тут: https://developer.mozilla.org/ru/docs/Web/CSS/CSS_...
    Ответ написан
    Комментировать
  • Как выучить классы в Bootstrap?

    @UndineS
    Документация по бутстрапу, в котором перечислены все классы: https://getbootstrap.com/docs/4.3/components/alerts/

    Самые часто используемые классы с отрисованными примерами:
    getbootstrap.ru/docs/v4-alpha/components/utilities

    Отрисованные примеры целых страниц:
    getbootstrap.ru/docs/v4-alpha/examples

    Заранее учить вряд ли имеет смысл, проще искать в документации / интернете по конкретной проблеме (например, "бутстрап блоки") и читать конкретные примеры использования для Вашей ситуации. Постепенно само начнет запоминаться.

    Сам по себе бутстрап представляет набор уже написанных сочетаний свойств: стоит только подставить описанный CSS-селектор элементу HTML в качестве класса - и к элементу уже применятся соответствующие свойства. Однако в любом случае для своего сайта придется что-то подгонять под себя - для этого лучше создать (и подключить на страницу) отдельный CSS-файл, а элементам добавлять дополнительный класс, уже на который навешивать нестандартные свойства поверх заданных бутстрапом.
    Ответ написан
    Комментировать
  • Почему не работает document.onclick на сдвинутых элементах с Position:absolute?

    @UndineS
    Посмотрите ответы к вопросу События для динамически добавленных в DOM элементов

    Кратко: если объект DOM переносится куда-либо (не просто изменение CSS, а удаление+вставка, перенос в другой блок), то события jQuery не сработают на нем стандартным способом
    document.onclick = function(event){
    //код функции
    }


    Необходимо использовать функцию on() для динамических элементов:
    $(document).ready(function() {
        ...
        $('.clickable-elements element').on('click', 'a', function(e){
            //Какое-то действие
        });
       ...
    });
    Ответ написан
  • Как динамически вставить и выполнить скрипт на странице?

    @UndineS
    Посмотрите в сторону функции eval().
    Описание: https://learn.javascript.ru/eval

    Правда, eval() редко используется. Чаще, если необходимо выполнить какие-либо расчеты после, например, заполнения пользователем какого-то поля, описывается обработчик события (отлавливается клик пользователя на кнопку, отправка формы, наведение курсора куда-либо и т. д.).
    Описание: https://learn.javascript.ru/introduction-browser-events

    Если расчет достаточно сложный и требует связи с бэкендом - используют AJAX-запросы.
    Ответ написан
    1 комментарий
  • Как сделать такое фон?

    @UndineS
    Задать список бэкграундов:
    body {
        background:  linear-gradient(to right, rgba(0, 0, 0, 1), rgba(255, 255, 255, 0), rgba(0, 0, 0, 1)),  url(background_picture.jpg) 0 0 no-repeat;
        background-size: auto 100%;
    }


    Такие настройки позволяют сделать фоном картинку "background_picture.jpg", а поверх нее наложить градиент слева направо: черный - прозрачный - черный. Если черный создает слишком темное оформление, можно поставить вместо "1" (это степень непрозрачности, измеряется от 0 до 1) что-то ближе к нулю (например, "0,5").
    В свойстве background-size указываем: если нужно растянуть картинку по высоте - "auto 100%", если по ширине - "100% auto".

    Подробнее об использованных свойствах:
    htmlbook.ru/css/background
    htmlbook.ru/css/background-size
    htmlbook.ru/css3-na-primerakh/lineinyi-gradient
    Ответ написан
    Комментировать
  • Как раскрыть блок?

    @UndineS
    В большинстве случаев, такой эффект скрывающегося текста происходит из-за наличия свойства overflow:hidden + конкретно заданных размеров блока. (подробнее про overflow: htmlbook.ru/css/overflow). Свойство overflow отвечает за наличие полосы прокрутки. В режиме "hidden" полоса прокрутки скрыта и "лишний" текст просто обрезается.

    Для решения проблемы можете либо задать высоту блока (height) как height:auto (высота блока будет подстраиваться под размер текста), либо просто сделать число побольше, чтобы точно влезло всё, но блок на всех страницах был одинаковой высоты.
    Другой вариант - заменить значение свойства overflow с "hidden", например, на "scroll" - тогда размеры блока можно не менять, но на больших текстах будет появляться полоса прокрутки.
    Ответ написан
    Комментировать
  • Не уходят данные в яндекс. метрику. Что делаю не так?

    @UndineS
    Попробуйте так:
    <script>
    window.onload = function() {
    if(window.location.href.indexOf("/o-kompanii/") > -1) {
           ym(11002952, 'reachGoal', 'compania');
        }
    };
    </script>

    Только вместо "/o-kompanii/" поставьте адрес вашей страницы.
    Условие (window.location.href.indexOf("/o-kompanii/") > -1) проверяет, что в адресе содержится искомая подстрока.

    Но вообще конкретно для этого типа целей в метрике есть уже готовое решение - вкладка "Посещение страниц" (рядом с "Javascript-событие"). Выбираете "url:содержит" и вписываете "o-kompanii" (ваш адрес) без кавычек.
    Инструкция от Яндекс.Метрики тут: https://yandex.ru/support/metrika/general/goal-pag...
    Ответ написан
    1 комментарий
  • Связи (отношения) между сущностями. Отслеживание связей второго, третьего, n+ уровня. Какие варианты решения?

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

    Вообще стандартные решения:
    • если используется связь "один к одному" и полей у дополнительной сущности не много, то она часто хранится в той же таблице - например, если у Персонажа может быть только один Телефон, о котором нужно знать только номер целиком без дальнейшей разбивки, то в таблице "Персонаж" будут поля по персонажу (ФИО, Документ, Адрес и т.п.) + поле для номера телефона;
    • если "один к одному", а о дополнительной сущности информации много (требуется 2 и более полей для описания дополнительной сущности), то, например, для "Телефона" заводим отдельную таблицу, у каждой записи будет первичный ключ (классический вариант - ID), а в таблице "Персонаж" создаем внешний ключ - т.е. заводим не поле "Номер телефона", а поле "ID телефона", где, собственно, указываем ID записи с телефоном;
    • в случае связи "один ко многим", "многие ко многим" - заводим дополнительную промежуточную таблицу "Персонаж - Телефон", где указываем пары "ID персонажа - ID телефона". Соответственно, записи в промежуточной таблице "Персонаж - Телефон" будут являться внешними ключами, которые ссылаются на записи с соответствующими первичными ключами в таблицах "Персонаж" и "Телефон" - например, в таблице с полями "ID персонажа, ID телефона" записи (1,1), (1,2), (1,3) будут указывать, что у персонажа с ID=1 есть три телефона с ID = 1, 2 и 3.


    Для формирования запроса с выгрузкой связей большой вложенности следует использовать JOIN - объединение таблиц по ключам. С помощью JOIN можно сделать выборку типа:
    Выбираем записи таблицы "Персонаж"
    Объединяем с таблицей "Персонаж - Домен" по условию "Персонаж.ID"="Персонаж-Домен.ID_Персонажа"
    Объединяем с таблицей "Домен" по условию "Персонаж-Домен.ID_Домена"="Домен.ID"

    Таким образом можно в запрос добавить еще сколько нужно объединений.

    Пример использования JOIN на MySQL:
    SELECT person.*, domain.*
    FROM person
    LEFT JOIN person_domain ON person.id=person_domain.person_id
    LEFT JOIN domain ON person_domain.domain_id=domain.id;


    Как подключиться к БД из PHP и отправить запрос, можно прочитать, например, тут: www.softtime.ru/bookphp/gl12_10.php
    Ответ написан
  • Как убрать отступы?

    @UndineS
    Текст страницы заключен в div со следующими классами:
    <div id="content" class="site-content">
    		<div class="container">

    На странице подключен бутстрап (bootstrap.min.css), который задает тегам с классом "container" фиксированную ширину:
    @media (min-width: 768px) { //это означает, что в родительском классе с шириной от 768 пикселей (фактически, в данном случае, при экранах от 768 пикселей) блок с контентом будет иметь ширину от 750 пикселей
        .container {
            width:750px
        }
    }
    
    @media (min-width: 992px) { //на экранах от 992 пикселей - блок "container" будет иметь ширину 970 пикселей
        .container {
            width:970px
        }
    }
    
    @media (min-width: 1200px) { //на экранах от 1200 пикселей - блок "container" будет иметь ширину 1170 пикселей
        .container {
            width:1170px
        }
    }


    Чтобы "перебить" стандартные настройки - рекомендую добавить более сложный селектор для текущего случая (более сложные селекторы имеют приоритет над более общими):
    .site-content .container {
    width:100%;
    }

    Таким образом, зададим ширину по размеру родительского блока "site-content" (фактически, на ширину экрана).
    Если хочется убрать и оставшиеся отступы по краям, то кроме условия на ширину добавляем:
    padding-right: 0px;
        padding-left: 0px;

    Стандартно паддинги стоят 15 пикселей.
    Ответ написан
    4 комментария
  • Как сделать так чтобы скрипт выводил нужное кол-во картинок?

    @UndineS
    Насколько понимаю задачу, нужно что-то типа этого:
    preg_match_all( '#]*\ssrc=(?:\'|")(.+?\..+?)(?:\'|")[^>]*>#i',$shortnews,$total);

    Регулярное выражение между решетками означает:
    - ]* - в строке дальше могут идти какие-либо символы, кроме закрывающей угловой скобки;
    - \s - идет пробельный символ (не только пробел, но и его вариации - короткий, длинный; табуляция, перенос строки и т. д.);
    - src= - идет последовательность символов "src=";
    - (?:\'|") - идет двойная или одинарная кавычка; скобками означаем границы для знака ИЛИ (вертикальная черта), а символы "?:" означают, что этот скобочный набор не надо отправлять в итоговый массив $total;
    - (.+?\..+?) - идет ЧТО-ТО, точка, потом еще ЧТО-ТО (точка означает "любой символ", плюс - что он идет один и более раз, а "+?" - что ищем минимальный подходящий набор, т.е. при нахождении точки (обозначена символом "\.", т.е. ищем именно символ точки, а не "любой символ") первая группа символов ".+?" заканчивается, после точки ищется еще одна);
    - (?:\'|") - снова одинарная/двойная кавычка;
    - [^>]* - от 0 до бесконечности символов, кроме закрывающей скобки
    - > - закрывающая скобка.
    символ "i" после решетки означает регистронезависимость.

    По итогу в массив $total будут попадать все теги , где элемент с номером "1" - это урл картинки. Т.е.:
    - $total[0][0] - полное совпадение с шаблоном, весь тег ;
    - $total[0][1] - совпадение с маской в скобках, непосредственно урл картинки.
    Ответ написан
    Комментировать
  • Получить первый заказ из группы, возможно ли?

    @UndineS
    SELECT min(id), group_key
    FROM table_name
    GROUP BY group_key

    где table_name - название таблицы в БД
    Ответ написан