• Как локализовать контент на сайте Laravel?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Комментировать
  • Поле типа json в миграция laravel создает в базе поле longtext, почему?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    MariaDB не поддерживает тип JSON полностью, как новые версии MySQL, а скорее эмулирует. Впрочем, делает она это очень хорошо, но тип поля будет longtext, а JSON будет лишь алиасом к нему. Это все есть в официальной документации.
    Ответ написан
    Комментировать
  • Как увеличить скорость загрузки сайта на мобильниках?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Хотел что-то с картинками сделать, так формат webp не поддерживается сервером.

    Браузером Safari он тоже, между прочим, не поддерживается. Реализация должна быть прогрессивная - если клиент поддерживает, то использует webp, если нет - даем jpg/png. В вашем случае вообще жесть, все картинки в PNG, но альфа-канал там не нужен - переводите все в JPG с оптимизацией, будет весить в несколько раз меньше.

    Хотел скрипты вниз перемести, но ммщица, сказало, что нельзя.

    Ммщица отстала от жизни лет эдак на 5-6, скрипты ДОЛЖНЫ не только в подвале стоять, но еще и с defer/async. А маркетинговый мусор (трекеры, пиксели, чаты и прочую ересь) вообще нужно обернуть в какой-нибудь таймаут или скролл. По умолчанию их быть не должно, нам важен быстрый TTI (а у вас он почти 15 секунд - это атомный пи***ц).

    А вообще вам нужен:

    1. Хороший хостинг. Не экономьте на этом.
    2. HTTPS. Подойдет бесплатный Let's Encrypt.
    3. HTTP/2 и заголовки кеширования для статики.
    4. Все картинки перегнать в JPG и оптимизировать.
    5. Использовать для картинок lazy loading.
    6. Не знаю что это за viewer.js, но 633 KB для него - слишком жирно. Убейте его и найдите более щадящее решение.
    7. У вас Метрика Яндекса ведет себя явно неадекватно. И вообще все 3rd party скрипты повесьте на скролл. Пока юзер не начал скроллить - они и не грузятся даже.

    А вообще там и верстка адовая, а JS тупо вешает браузер (при том что у меня мощный ноут). Либо Watsons жестко сэкономили на разработке этого "сайта", либо таки не лыжи.
    Ответ написан
    Комментировать
  • Как выводить динамически правильно такого вида блоки в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Объекты эти - custom post type.
    Вывод в основном шаблоне для этого custom post type - главным циклом.
    Вывод в виде блока в другом шаблоне (главная, например) - WP_Query и кастомный цикл.
    Ответ написан
    Комментировать
  • Как задать $defaults = array() для register_sidebar?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Обертка виджетов указывается при определении сайдбара именно с помощью этой функции - register_sidebar() c помощью параметров before_widget / after_widget, и это легко переопределить:
    register_sidebar( [
        'name'          => 'My Sidebar',
        'id'            => 'my-sidebar',
        'before_widget' => '<div class="my-custom-class">',
        'after_widget'  => '</div>'
    ] );

    Default значение в самой функции менять не надо, вы не поняли как это работает. Вы либо передаете в register_sidebar() свой массив с настройками, либо если не передадите - тогда WP будет использовать $defaults
    Ответ написан
  • Максимально эффективная методика изучения программирования?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Дотошный подход это хорошо, когда нужно разобраться в чем-то конкретном. Для азов и первичного проникновения - нет. Раз вы уж начали с Java - пройдите курс "Методология программирования" Стенфордского Университета, видео лекций есть в открытом доступе, бесплатно (https://see.stanford.edu/Course/CS106A). Оно на английском, разумеется. Вот этого курса будет достаточно чтобы понять для себя путь джедая.

    А если в двух словах, то рабочая схема плюс-минус такая:

    1. изучаем синтаксис языка
    2. изучаем основные концепты языка и списки DOs и DONTs с примерами
    3. садимся пилить real world задачи
    4. в процессе сталкиваемся с углубленными вопросами, их изучаем по мере поступления
    5. GOTO 4
    Ответ написан
    Комментировать
  • Влияние класса в тегах на SEO?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Включайте презумпцию невиновности. Названия классов на SEO никак не влияют. Если SEOшники не согласны - пусть докажут обратное, фактами. SEOшники вообще еретики минимум на 50%.
    Ответ написан
    Комментировать
  • Стоит ли включать HTTP/2?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Добавлю к ответу Владислав Лысков

    Global Users:
    Full support 93.83% + Partial support 2.04% = 95.87%

    Mobile Users:
    Full support 97.1%

    Desktop Users:
    Full support 91.38% + Partial support 4.73% = 96.1%

    Цифры говорят сами за себя. И да, HTTP/2 таки обратно совместим. И еще важный момент - в зависимости от конфигурации SSL (в первую очередь Cypher Suites) вы скорее отрежете часть клиентов несовместимыми алгоритмами шифрования еще на этапе SSL Handshake нежели протоколом HTTP/2 самим по себе.

    Используйте HTTP/2 по умолчанию. Если будут приходить жалобы от юзеров - тогда надо смотреть и решать их по мере поступления.
    Ответ написан
    Комментировать
  • Как редактировать тему WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Взрослые дяди и тети делают вот так:

    1. Разрабатываете локально.
    2. Все изменения под git.
    3. Атомарные изменения коммитите.
    4. Делаете push в remote repository на каком-нибудь GitHub / BitBucket / GitLab.
    5. C помощью CI/CD код билдится, тестируется и деплоится на сервер.
    6. О статусе сборки/деплоя сообщается в выбранный канал коммуникации (Telegram, Slack, email и тд).

    С точки зрения действий все очень просто и удобно - сделали локальные изменения, все ок - коммит, пуш, через пару десятков секунд или пару минут получили уведомление что все на сервере, можно смотреть. Если в процессе сборки вылезла ошибка - деплоя не будет и об этом вам тоже будет сообщено.
    Ответ написан
    Комментировать
  • Как устранить "WordPress необходим доступ к вашему серверу"?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Корректные пользователь:группа
    2. Папки рекурсивно 755
    3. Файлы рекурсивно 644

    Bonus point: ISP Manager и прочие панельки - зло.
    Ответ написан
    Комментировать
  • Что такое extra в Composer json?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    https://getcomposer.org/doc/04-schema.md#extra


    Arbitrary extra data for consumption by scripts.
    This can be virtually anything.
    Optional.


    Простым языком - это секция, в которой можно устанавливать свои кастомные параметры, которые будут использоваться вашими скриптами или надстройками для Composer. Например, есть плагин composer/installers, позволяющий устанавливать пакеты не в vendor, а по нужным путям для разных платформ/CMS. Он использует секцию extra для конфигурации этих путей. Например, для WordPress у меня это выглядит вот так:

    {
      "extra": {
        "wordpress-install-dir": "core",
        "installer-paths": {
          "app/{$name}": ["type:wordpress-dropin"],
          "app/mu-plugins/{$name}": ["type:wordpress-muplugin"],
          "app/plugins/{$name}/": ["type:wordpress-plugin"],
          "app/themes/{$name}/": ["type:wordpress-theme"]
        }
      }
    }
    Ответ написан
    4 комментария
  • Какая правильная реализация Vue + Laravel?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Без разницы. В момент выполнения скрипта на конкретной странице экземпляр будет один единственный. Обычно это #app на уровне лейаута.
    Ответ написан
    Комментировать
  • ACF: если вывести поля ACF через Elementor, а потом попытаться сделать их блоками для Гутенберга - нужно ли переписывать их или их содержимое?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Костыльно. Тут по определению либо одно, либо другое - Elementor или ACF. Скрестить бульдога с носорогом конечно можно - науке известны извращения куда круче - но смысла в этом ровно ноль целых ноль десятых.
    Ответ написан
    1 комментарий
  • Как разрешить пользователям публиковать свои статьи?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    По умолчанию пользователи получают роль Подписчик / Subscriber, который может только читать и комментировать. Есть еще роль Author - эти могут писать статьи, но не публиковать. После написания их статьи может (и должен) проверять редактор с ролью Editor - эти уже могут писать и публиковать как свои, так и чужие материалы.
    Ответ написан
    Комментировать
  • Как совместить выборку значений и Count()?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    SELECT SQL_CALC_FOUND_ROWS p.product_id
    FROM product_to_category p2c 
    LEFT JOIN product p ON (p2c.product_id = p.product_id)  
    WHERE p2c.category_id = '66'

    Вернет product_ids.
    Дополнительным запросом
    SELECT FOUND_ROWS()
    Можно получить количество строк. Запрос будет быстрым, так что таких 2 запроса это не то же самое, что 2 запроса с джоинами. Впрочем, первый запрос с SQL_CALC_FOUND_ROWS может быть медленнее чем 2 запроса - все зависит от конкретной структуры данных, индексов.

    ЗЫ: Запрос по памяти писал, подходящих данных для тестирования нет, поэтому может придется покрутить.
    ЗЗЫ: А вообще на тему SQL_CALC_FOUND_ROWS холивары годами идут. По производительности есть вопросы и много "если". Да и MySQL вроде как его потихоньку депрекейтит. Впрочем, так или иначе - это инструмент. Сами решайте, имеет ли смысл использовать его в вашем конкретном случае.
    Ответ написан
    Комментировать
  • Приложение для изучения программирования на mac?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ну, есть полезная штуковина CodeRunner. С ее помощью действительно удобно изучать разные языки программирования, не заморачиваясь полноценной средой для каждого из них, по крайней мере до тех пор, пока это не станет узким местом. А вот сами задачи лучше всего брать из каких-то курсов. Определите для себя что именно вы хотите учить, ищите курсы на всяких udemy, treehouse и тд.
    Ответ написан
    Комментировать
  • Как сейчас дела у frontend разработчика на Upwork?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Ваши навыки отстают от рынка. Сейчас чисто верстка требуется не так часто и да, чисто HTML/CSS сносного уровня можно получить и за $10 от тех же индусов. Индус индусу рознь, там есть и хорошие разрабы.

    2. Ваша ставка слишком высока для "только верстки". Да, вполне возможно что качество вашей верстки абсолютно честно стоит тех $25/час, но чисто психологически и субъективно клиент за эти деньги ждет уже frontend developer или даже fullstack developer. Его сам рынок к этой мысли подводит.

    3. Если хотите на фрилансе (апворк или не апворк - не важно) зарабатывать стабильно и расти по заработку - делайте упор на long-term контракты и клиентов. Это либо клиенты, которые постоянно приходят с новыми проектами (например, студии / агентства - конвеер), либо поддержка/сопровождение проектов, которые вы для клиента сделали. Спустя пару лет активной работы на апворке у вас должно минимум 60% заработка быть от поддержки существующих проектов. В идеале, клиенты должны платить fixed fee ежемесячно + допработы за отдельную плату. При грамотном подходе та же 1000-1500 в месяц будет капать только от этих fixed fees, а тратить на них времени вы будете минимум. А уже все допработы будут вам приносить дополнительный заработок поверх этих 1000-1500. При этом вы почти не проседаете в доходах, если вдруг перестали заниматься активными бидами на какое-то время. Но для этого вам нужно выйти за пределы HTML/CSS, потому что этим вы сами себя ограничиваете. Крайне редко ваша верстка выставляется в production as-is, как правило другой разраб дальше превращает ее в какой-то динамичный шаблон. И с этого момента не остается продукта, который вы могли бы поддерживать.

    4. Добавляйте себе в стек новые скилы. Если предпочитаете все-таки верстать - научитесь сразу верстать "в шаблоны" - WordPress themes, Drupal themes, Laravel Blade templates, Symfony Twig templates и тд.
    Ответ написан
    3 комментария
  • Elementor, Divi, WPBakery, Visual Composer, BeaverBuilder или что-то другое?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Тут для себя надо сначала решить какова конечная цель этой затеи. Если вы хотите в процессе разобраться с кодом, научиться решать с помощью кода любую задачу - тогда билдеры в сторону, берем ACF и готовимся к интересному и увлекательному путешествию. Будет дольше, сложнее, но в долгосрочной перспективе - полезнее. Если же вам надо быстро собрать вменяемый сайт, который вы запустите и дальше основное время будет уходить на контент для него, маркетинг и СЕО и подсчет заработанных денег - тогда начните с поиска подходящей темы, с дизайном который вам нравится и с функциональностью, которая вам максимально подходит. Найдете такую тему - покупайте. И пользуйтесь тем билдером, который будет в нее встроен. А на вот этих всех "писано против него" не обращайте внимания. Билдеры - это инструмент, который решает конкретные задачи. Если для вашего use case они решают задачу достаточно хорошо для ваших возможностей - значит они (или какой-то конкретный билдер) являются подходящим инструментом для вашего случая.
    Ответ написан
    Комментировать
  • Как массово генерировать сайты на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Зачем вообще плодить клоны? Доменную часть делаете динамической, отлавливаете поддомен и в зависимости от него меняете только нужные данные на выводе. Это все один сайт.
    Ответ написан
    2 комментария
  • Как отключить функцию в MacOS, когда приложение автоматически становится активным при наведении курсора?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А установлены какие-то window managers? Ничего подобного в самой оси не видел никогда, даже в Accessibility. Больше похоже на стороннее приложение.
    Ответ написан