• Как лучше всего организовать разработку, деплоинг и тестирование продуктов для 1с-Битрикс?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Git и BitrixVM.
    Заводите 2 сервера/ветки: прод (ветка master) и тест (ветка develop). В идеале еще + предпрод и на каждую фичу свою ветку.
    Изменения в структуре БД переносите миграциями также в гите.
    Собственно прод - он и в африке прод. На тесте делаете какие-то правки, после вливается в мастер. Ну а на бою уже делаете пул и накатываете миграции.

    Чтобы совсем хорошо: для каждой ветки (либо на локальной машине) можете поднимать свой докер с общей тестовой БД, чтобы ресурсы сэкономить.

    Если какие-то обработки еще нужны (предпроцессоры всякие), то можете подключить к этому https://deployer.org
    Ответ написан
  • Что использовать для PHP разработки? Vagrant, Ansible или Docker?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Это зависит от того, что, куда и как вы будете диплоить.
    По хорошему чем ближе окружения для разработки к продакшну - тем лучше.

    Лично я работал со следующими связками:
    - Vagrant + bash provisioning
    Этот способ с самым низким погором вхождения, но он очень требователен к качеству кода И процесса установки и обновления.

    - Vagrant + ansible provisioning
    Этот способ по сути включает в себя bash provisioning, но в структуре ansible. Работая в команде будьте готовы к тому, что провизионирование далеко не у всех будет нормально работать и это будет источником вашей головной боли. Если базово подтянуть bash у сотрудников еще не вызовет вопросов, то с ansible это процесс будет сложнее.

    - Docker
    Чистый докер требует далеко не маленькой компетенции. В команде я бы настоятельно не рекомендовал его использовать без дополнительных обвязок. По сути вам прийдется сделать свой docker-compose.

    - Docker + docker-compose
    Считаю оптимальным решением для dev окружения при работе как в команде, так и без.
    Ответ написан
    8 комментариев
  • MVC php на пальцах?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ох...

    Model View Controller. Да ну его, ему уже 45 лет (придумали в 79-ом году). Давайте лучше про Model View Adapter погокорим. это то что все используют в популярных фреймворках последние лет так 10 так точно.

    mvc-mvp-mvvm-6-638.jpg?cb=1375170002

    Вообще в этом всем важно не только то, что каждая буква обозначает, а как они друг с дружкой связаны.

    View - это не только HTML, но и вообще представление в целом, а так же логика его формирования. Шаблонизаторы, фильтры, различные функции/объекты помогаютщие нам сформировать view (например форматирование дат, сериализаторы и т.д.) В подавляющем большинстве случаев "представление" наших данных - это HTTP запросы и HTTP ответы. HTML - э то лишь часть HTTP ответа.

    Model - Это целый слой, который может быть представлен в виде кучи отдельных объектиков, структур и т.д. Его задача - делать дела и хранить/менять состояние системы. Тут легко запутаться потому что термин "модель" много чего значит. Воспринимайте его как "слой логики" а не конкретные объекты. И да - база данных и прочая чушь - это детали реализации этого слоя. "не важные штуки" словом. Туда же и ActiveRecord, ORM-ки всякие. Это деталь реализации и все остальные чуваки (view и controller) о них знать ничего не должны (хотя иногда могут в целях упрощения).

    Controller или адаптер. Это опять же не обязательно один объект. это может быть цепочка адаптеров (еще называют фронт-контроллером, middlewares и т.д.). Его задача весьма простая. Получаем представление данных на входе (HTTP запрос), определяем что надо делать, и просим модель что-то сделать (ни в коем случае не меняем ничего самостоятельно в контроллере, он только просит). Потом мы можем попросить модель вернуть нужный нам кусок состояния, и попросить View сформировать представление (HTTP ответ).

    Как-то так. В целом же это я сейчас описал "идеальный мир". Вся суть этого подхода - разделение логики презентационной и логики приложения. Зачем это надо? что бы было проще жить! Обычно UI приложения или способы взаимодействия с ним меняются почаще логики или как минимум в разные моменты времени. Адаптеры в этом случае служат промежуточным слоем, они ничего сами не делают, это "переводчики". Они просто переводят то, что сказано в запросе в язык понятный приложению и обратно.

    Но на начальной стадии можно слегка нарушать эти правила, делать толстые контроллеры и т.д. В этом случае бизнес логика будет потихоньку "вытекать" из модели. Это не хорошо, и на хоть сколько нибудь больших проектах может привести к проблемам. Потому важно находить баланс.
    Ответ написан
    Комментировать
  • Contact form 7 почему не выводятся "Уведомления об отправке"?

    ssenj
    @ssenj
    HTML, CSS, PHP, WordPress, Bitrix
    Нашел "временное" решение (до обновления Contact Form 7)
    В файле /wp-content/plugins/contact-form-7/includes/js/scripts.js из переменной $message удалил второй параметр
    5da9bd956399d208558102.png
    Сообщения начали отображаться.
    Почему так - не знаю, я не силен в js и разбираться особо не хочется.

    До кучи перенес стили "удачной отправки"
    5da9be1e2d99a846013884.png
    Это решение изменяет цвет "успешной отправки" на зеленый после неудачной (желтой рамки).
    Ответ написан
    Комментировать
  • Contact form 7 почему не выводятся "Уведомления об отправке"?

    @fuild
    Решил поделиться, почему у меня не отображалось уведомление и страница перезагружалась после отправки формы:

    В шаблоне футера вызов <?php wp_footer(); ?> был размещен ниже вывода всех .js
    Поставил его над всеми .js и все заработало.
    Ответ написан
    Комментировать
  • Как подключиться с помощью PHP к FTP и вывести список файлов и папок FTP?

    kawabanga
    @kawabanga
    Можно через CURL,
    Можно через php ftp https://www.php.net/manual/ru/book.ftp.php

    Зависит от вашего протокола ftp.

    Пару месяцев назад я делал проект, где использовался Implicit FTP over TLS . Через CURL в итоге получилось запустить.
    Ответ написан
    Комментировать
  • Как подключиться с помощью PHP к FTP и вывести список файлов и папок FTP?

    smilingcheater
    @smilingcheater
    Начните с чтения доков по работе с FTP https://www.php.net/manual/ru/function.ftp-connect.php
    Ответ написан
    Комментировать
  • Как создать AJAX запрос?

    @alekcena
    Нелинейный наставник
    При удалении посылаешь данные
    {
    Id - такой то(Ну или шо там надо)
    }

    Ожидаешь ответ от сервера true\false

    Обрабатываешь ответ на js
    Если всё ок удаляешь дом элемент jsom - нет не удаляешь.
    Ответ написан
    Комментировать
  • PHP, отправка письма?

    @tomcode
    Ответ написан
    Комментировать
  • PHP, отправка письма?

    @Ex1st
    Забудь об отправке через стандартную функцию php. Отправляй через SMTP с помощью библиотеки PHPMailer. Выше скинули хороший материал.
    Ответ написан
    6 комментариев
  • Как правильно оценивать сроки на разработку сайта в web студии?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    «В молодости я спросил у начальника, как оценить время на выполнение работы? И начальник ответил мне:
    — Время, которое ты планируешь, умножить на Пи пополам, плюс 2 недели.
    — Почему Пи пополам? — удивился я.
    — Потому что в реальной жизни ты никогда не будешь двигаться к своей цели напрямую, а скорее — по дуге окружности.
    — А почему плюс две недели?
    — А потому, что когда ты в итоге просрёшь все сроки, то за две недели хоть что-то успеешь сделать.» (с)
    Ответ написан
    1 комментарий
  • Где начинающему разработчику подглядеть примеры неговнокода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На самом деле надо качать Лару а ещё лучше - Симфони.
    Только не тупо зазубривать, а пытаться понять, почему там так сделано. Это и будет теми самыми примерами.
    И да - не Лару точно. Потому что там очень много магии которая полезна тем кто понимает как она работает и очень вредна для тех кто учится.

    И вот изучая нормальный фреймворк ты как раз и будешь учиться примерам хорошего кода.
    Начать можно с этой хрестоматийной статьи https://symfony.ru/doc/current/introduction/from_f...
    А потом переключаться на https://github.com/symfony/demo

    Честно говоря, я не очень понимаю, что ты имеешь в виду под "знаниями чистого пыха".
    Чисты пых - это синтаксис, учится за две недели.
    А остальное - это уже программирование, общее для любых языков и фреймворков. Отладка, репортинг ошибок, профайлинг, оптимизация, структурирование кода, олгоритмы.

    И кстати я совсем забыл. У нас же есть гений в своем отечестве, Дмитрий Елисеев. На фоне бесчисленных неграмотных выскочек типа хаудихи или, прости господи, руселлера, это реально человек который знает, о чем говорит.
    И - что гораздо реже случается - умеет донести эти знания до аудитории.
    И насколько я понимаю, твой уровень уже должен позволять в принипе понимать, о чем он говорит.
    В общем начать можно отсюда, https://elisdn.ru/blog/113/psr7-framework-http
    и дальше остальные материалы.
    Ответ написан
    8 комментариев
  • Правильно ли я защитил сайт?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    правильно
    ты, главное, идею пойми
    а как поймешь - поймешь что csrf лучше ставить JS кодом, уже сложнее для атакующего, ну и прочие навороты
    ну и проверка-то правильная
    а вот вставил ли ты ее ВО ВСЕ страницы где она нужна?
    Ответ написан
    1 комментарий
  • Как вывести только товары с акцией в WooCommerce?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    так wp-panda.com/woocommerce_posts/woocommerce-shortco...

    цикл сильно прощще

    <ul class="products">
    	<?php
                    $product_ids_on_sale = wc_get_product_ids_on_sale();
    
    		$args = array(
    			'post_type' => 'product',
                            'post__in' => array_merge( array( 0 ), $product_ids_on_sale )
    			);
    		$loop = new WP_Query( $args );
    		if ( $loop->have_posts() ) {
    			while ( $loop->have_posts() ) : $loop->the_post();
    				wc_get_template_part( 'content', 'product' );
    			endwhile;
    		} else {
    			echo __( 'Продуктов не найдено' );
    		}
    		wp_reset_postdata();
    	?>
    </ul><!--/.products-->
    Ответ написан
    1 комментарий
  • Как вывести только товары с акцией в WooCommerce?

    CrewCut
    @CrewCut
    Коплю силы на переезд в тропики
    Можно шорткодом [sale_products per_page="12"] (12 - кол-во продуктов на вывод)

    Можно кодом:
    $args = array(
        'post_type'      => 'product',
        'meta_query'     => array(
            'relation' => 'OR',
            array( // Simple products type
                'key'           => '_sale_price',
                'value'         => 0,
                'compare'       => '>',
                'type'          => 'numeric'
            ),
            array( // Variable products type
                'key'           => '_min_variation_sale_price',
                'value'         => 0,
                'compare'       => '>',
                'type'          => 'numeric'
            )
        )
    );
    
    query_posts( $args );


    Узнать есть ли скидка:
    $product->is_on_sale()

    --
    Смотря что нужно в конкретном случае
    Ответ написан
    Комментировать
  • Где вы учите/ли PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я могу сказать, где точно учить не надо
    руселлер и прочие видеокурсы. это реальный ад
    какой-то дятел на ютубе, который толкает RedBean - это полная жесть. новичкам этот редбин ни к чему, им надо основы учить, а основ он не даёт, его курсы для тех кто уже знает РНР и SQL. Но фокус в том что тем кто знает, его курсы даром не сдались, а новички из ничего вообще ничего не выносят, но потом со слезами и соплями пытаются что-то ваять и у них вообще ничего не выходит.
    otus . ru - я тут недавно увидел на их сайте пример кода, и чуть не поседел. Долго искал подпись что это коллекция примеров того как не надо писать, но это они всерьёз.
    твое коде муму сейчас посмотрел - написано такими же макаками на материале прошлого века. Если будешь искать работу то тебя даже на порог не пустят с таким кодом.
    В общем не знаю. скрепя сердце могу посоветовать хтмлакадемию, но там во-первых платно, а во-вторых материал тоже местами проседает. Но хотя бы менторы вроде нормальные, а не какая-то школота "с вконтакте".

    В целом я рекомендую учить не какой-то конкретный язык, а программирование в целом
    Ответ написан
    2 комментария
  • Php 7+ умеет без библиотек открывать excel и гугл таблицы?

    Stalker_RED
    @Stalker_RED
    Нет конечно.
    у гуглотаблиц есть api, а для экселя есть PHPOffce

    Если не нужны навороты вроде формул и графиков, то и то и другое сохраняется как CSV, а для него уже есть встроенная функция fgetcsv().
    Ответ написан
    6 комментариев
  • Какие преимущества проекта на laravel нежели на CMS- битрикс?

    alexyarik
    @alexyarik
    Битрикс разработчик
    laravel нежели на CMS- битрикс?

    - как можно сравнивать продукт с фреймворком. Если взять любую доступную админку на Ларавел, то она даже близко не превзойдёт админку Битрикс.
    Если уж сравнивать тогда ларавел с коммерческим фреймворком Битрикс. По техническим моментам фреймворк битрикса скорее всего уступает ларавел, но как это упрощает и решает задачи бизнеса?
    прикрутить личный кабинет пользователя, с графиками + vue

    - на самом деле Битрикс это коммерческий фреймворк, а админка это продукт на его основе. Если вы будете писать новый функционал, которого нет в продукте, что в Битриксе, что в ларавел вы будете это делать с нуля, писать и там и там на фреймворке.
    1) Удобная система ( админ панель) с быстрой тех поддержкой

    - это реальный большой плюс, который сокращает расходы на поддержку проекта.
    2) Много функционала из коробки

    - это тоже реальный большой плюс, который сокращает расходы на создание аналогичного функционала.
    3) Удобно интегрировать с CRM битрикс

    - хороший плюс, который сокращает расходы на создание аналогичного функционала.
    масштабировать проект очень сложно

    - точно также как и в Ларавел пишутся модули и функционал.
    Когда имеет смыл рассматривать преимущества Ларавел
    - когда не типовой, индивидуальный интернет-магазин
    - когда возможностей CMS Битрикс кардинально не хватает
    - когда глубокая интеграция ТЗ в готовый функционал занимает больше времени, чем сборка аналога с нуля. И в итоге дороже. В этом случае бизнес считает деньги.
    - гибкость для сложных проектов, но нужно эту гибкость представить в виде пункта коммерческого предложения, иначе это для бизнеса просто слово
    - создание и полная кастомизация административной панели сайта под не типовые и сложные проекты
    - скорость работы, для крупных интернет-магазинов это важно. Интернет-магазин получается реально шустрее тиражных решений.
    Ответ написан
    Комментировать
  • Где найти ссылки на хорошие yii2 проекты, где можно изучить хороший код?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Очень сложных проектов на Yii2 с открытым, да ещё и хорошим кодом очень мало)) Прежде всего, потому что Yii создан для быстрой разработки нарушая все правила сложных архитектур. А учитывая его устарелость, то тем более таких проектов мало. На форуме давно обсуждался этот вопрос. Там есть ссылки на проекты и код. Так же на сайте yiipowered.com есть список проектов, у некоторых с исходным кодом.

    Вам лучше изменить тактику и искать проекты с хорошей архитектурой вне зависимости от фреймворка. Так ваша вероятность найти что-то стоящее на много выше. В целом, хорошая архитектура - это всегда дорого. Мало кто будет выкладывать проект большой команды, на которую были потрачены сотни тысяч и миллионы в открытый доступ. Кроме того хорошая архитектура всегда зависит от требований, задач и самого проекта. Что и где применять, как строить - придет только со знанием и опытом. Здесь не получится сделать по примеру.

    Если по теме, то начните изучать или искать DDD, CQRS, SOA, Микросервисы. В принципе это основные архитектурные подходы в разработке. На Yii по DDD есть хороший пример. Однако начинать НОВЫЙ проект на Yii2 используя даже самую сложную архитектуру - путь в никуда. Yii2 создан для других целей. Чтобы понять можно посмотреть ответ на вопрос: Актуален ли Yii2 Фреймворк в 2020?
    Ответ написан
    Комментировать
  • Какой курс по веб разработке выбрать?

    Nuby
    @Nuby
    ступай на https://htmlacademy.ru/ и пройди бесплатный интерактив.
    можешь заплатить 2 000 за годовую подписку.

    Это работает и это полезно.

    Остальное не работает и не может тебе предложить что-то, чего нет в бесплатном доступе.
    Ответ написан
    Комментировать