Задать вопрос
  • Bootstrap. Cпор с программистом, как убедить?

    dom1n1k
    @dom1n1k
    Имею опыт глубокой кастомизации Бутстрапа. Глупая была затея.
    Родился такой монстр, который просрал плюсы и сочетал минусы обоих подходов (популярный фреймворк vs самописный велосипед).
    Сильно изменив Бутстрап, убиваются:
    - его обновления и багофиксы
    - совместимость со сторонними плагинами
    - низкий порог вхождения новых людей
    - возможность гуглить решения в случае багов
    Но и самописным велосипедом это тоже не является, потому что сильно завязано на исходную архитектуру. То есть нет полной свободы и гибкости, присущей кастомным решениям. БЭМ-ом там, конечно, тоже не пахнет, откуда идут большие проблемы с независимостью.
    Бутстрап нужно использовать либо как есть, либо с минимальными скинами-стилизациями поверх.
    Ответ написан
    Комментировать
  • Bitrix api Как добавить торговых предложений к товару?

    Bankir77
    @Bankir77
    Для этого нужно иметь два инфоблока: товары и торговые предложения, инфа по настройке тут https://dev.1c-bitrix.ru/learning/course/?COURSE_I...

    Рабочий пример:
    CModule::IncludeModule('iblock');
    CModule::IncludeModule('sale');
    
    $ciBlockElement = new CIBlockElement;
    
    // Добавляем товар-родитель, у которго будут торг. предложения
    $product_id = $ciBlockElement->Add(
        array(
            'IBLOCK_ID' => 13, // IBLOCK товаров
            'NAME' => "Товар 1",
            "ACTIVE" => "Y",
            // Прочие параметры товара
        )
    );
    // проверка на ошибки
    if (!empty($ciBlockElement->LAST_ERROR)) {
        echo "Ошибка добавления товара: ". $ciBlockElement->LAST_ERROR;
        die();
    }
    // добавляем нужное кол-во торговых предложений
    $arLoadProductArray = array(
        "IBLOCK_ID"      => 14, // IBLOCK торговых предложений
        "NAME"           => "Торговое предложение 1",
        "ACTIVE"         => "Y",
        'PROPERTY_VALUES' => array(
            'CML2_LINK' => $product_id, // Свойство типа "Привязка к товарам (SKU)", связываем торг. предложение с товаром
        )
        // Прочие параметры товара 
    );
    $product_offer_id = $ciBlockElement->Add($arLoadProductArray);
    // проверка на ошибки
    if (!empty($ciBlockElement->LAST_ERROR)) {
        echo "Ошибка добавления торгового предложения: ". $ciBlockElement->LAST_ERROR;
        die();
    }
    // Добавляем параметры к торг. предложению
    CCatalogProduct::Add(
        array(
            "ID" => $product_offer_id,
            "QUANTITY" => 9999
        )
    );
    // Добавляем цены к торг. предложению
    CPrice::Add(
        array(
            "CURRENCY" => "RUB",
            "PRICE" => 999,
            "CATALOG_GROUP_ID" => 1,
            "PRODUCT_ID" => $product_offer_id,
        )
    );
    Ответ написан
    2 комментария
  • Создание заказа через api?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    $APPLICATION->RestartBuffer();
    echo json_encode($response);
    die();


    CAdminMessage может из какого то обработчика события вылезать
    Ответ написан
    Комментировать
  • Как в битрикс сделать параметры url в нижнем регистре?

    babarun
    @babarun Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Как это можно сделать?

    Залезть в компонент bitrix:catalog и переделать алгоритм работы умного фильтра.

    Или почему это не нужно делать?

    Вы не сделаете это аккуратно и правильно (потому что сам вендор делал это несколько лет). Вы потеряете возможность нормально обновляться. Если всё таки решитесь на это и предположим перегоните в нижний регистр, то в поисковый индекс попадут урлы которые вам придётся сохранять в таком виде вечно! И уже не о каком рефакторинге речи в будущем идти не будет. В 2012 году для одного магазина написал аналог смарт фильтра с ЧПУ, тогда его ещё не было в коробке. Так вот ребята, которые там остались, вынуждены до сих пор его поддерживать, потому что ссылки с фильтра обросли хорошим весом.

    Сеошники выдвигают в качестве требований такую дичь по одной причине, что бы потом оправдать свои плохие результаты. Они прекрасно знают что это повлияет на результат чуть больше чем на ноль процентов. Но когда придут подписывать акт о закрытии работ и на вопрос почему нет результата, первое что они скажут: "Ваши айтишники не выполнили наши требования".

    Сеошник, который собирается продвигать такие ссылки: site.ru/catalog/?arrFilter_P7_MAX=&arrFilter_P7_MI... должен с позором сдать партбилет.
    Ответ написан
    Комментировать
  • Стоит ли изучать Битрикс?

    @lexnekr
    знаю, что Битрикс с точки зрения развития, путь вниз

    Смешно.
    Битрикс - это путь.
    Любой путь лучше, чем топтание на месте.
    С битриксом на кусок хлеба с маслом в ближайшие годы заработаете гарантированно.
    Ну и на что-то другое перейти всегда можно.

    Если других хороших вариантов прямо сейчас не видно, я бы на вашем месте согласился. Любой даже самый ненавистный продукт стоит хотя бы немного потыкать (я так в своё время с 1С пободался).
    Ответ написан
    1 комментарий
  • Стоит ли изучать Битрикс?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    так говоришь, как будто всю жизнь решил этому посвятить и вариантов больше не будет изменить выбор.
    смотри на это как на очередной фреймворк, коих в твоей карьере разраба будет еще куча.
    и учитывая что ты новичок - это тебе все равно будет ценным опытом.
    Ответ написан
    3 комментария
  • Как сделать веб-сервис и не утонуть в процессе?

    gobananas
    @gobananas
    finishhim.ru
    1. Выделить одну главную функцию сервиса
    2. Сделать её, сверстать и выкатить, это будет MVP
    3. Не заморачиваться с вёрсткой
    4. Не заморачиваться с методами авторизации
    5. Не думать про нагрузку, не заниматься оптимизацией кода и БД
    6. Если поймали себя на мысли что вы думаете какой паттерн тут применить вы в Ж, просто пишите код, который работает!!
    7. Не совмещать написание сервиса, который вы РЕАЛЬНО хотите запустить с изучением чего-то нового (языка, БД). Утоните в учёбе и никогда не запустите.

    Это всё на своём опыте написания проекта говорю вам а не голословно ))
    Ответ написан
    10 комментариев
  • Зачем нужны таск менеджеры GULP и GRUNT?

    Мне кажется тут не хватает образного примера:

    Вот купили вы стул. До ужаса дешевый, а потому без инструкции по сборке. Помучились час другой, но собрали. И тут выясняется, что ваша подруга купила такой же стул, а собрать ума не хватает, и просит она вас. Вы уже опытный - за пол часа управились. Вы бы и быстрее управились, но все никак не могли найти куда присобачить последний шуруп.
    Потом случилось страшное - почти вся ваша родня узнала о дешевых стульях, и помчалась их покупать, а за советом как собирать их, как вы уже догадались, обращается к вам. Конечно разъезжать из дома в дом по столь неуважительной причине вам не с руки, вот тогда вы написали инструкцию и разослали ее всем по факсу.
    Время шло, город слухами полнился, и вот уже совершенно незнакомые люди обращаются к вам с просьбой какой либо предмет мебели. До поры до времени инструкции спасали, но потом нахлынула толпа бабушек, которым ваши каракули как пергамент на древнеегипетском...
    На этом этапе вы решили уволиться с основной работы и открыть собственное дело по производству роботов-сборщиков (не путайте с роботами-сгибателями). Вам звонят бабушки, а вы им высылаете свои агрегаты, подчас загружая в них инструкцию по строительству дома.

    Вот и сказочке конец, а кто слушал, тот и gulp.

    Простите - пятница.
    Ответ написан
    Комментировать
  • Bullshit Web - чрезмерное загромождение сайтов десятками скриптов и модулей. Можно ли решить эту проблему?

    snap44
    @snap44
    Фыр!
    5b66f6989b4fa204912050.png
    И так работает большинство "верстальщиков". Зато заказчик 2-3тыщи сэкономил на вёрстке.
    Ответ написан
    Комментировать
  • Как узнать что находимся в карточке товара компонента каталог?

    Делайте через отложенные функции

    в footer.php в конец пишем функцию, которая в зависимости от условий производит нужные нам действия
    function containerWidth() {
            global $APPLICATION;
            ob_start();
    
            if(strlen($APPLICATION->GetProperty('fullWidthContainer')) > 0) {
                echo 'container-fluid';
            } else {
                echo 'container';
            }
            $result = ob_get_contents();
            ob_end_clean();
            return $result;
        }


    в header.php в необходимом нам месте
    <div class="<?$APPLICATION->AddBufferContent("containerWidth");?>">


    и на необходимых нам страницах устанавливаем свойство fullWidthContainer

    в вашем случае в catalog.detail или news.detail в component_epilog.php

    $APPLICATION->SetPageProperty("fullWidthContainer", "1");


    Код не тестил, но смысл понятен
    Ответ написан
    1 комментарий
  • Где брать примеры хорошего ООП?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Если у вас проблема с тем, как делить код на объекты, это означает, что
    1. Вы плохо продумали архитектуру проекта, либо вообще плохо представляете что должен делать проект.

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

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

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Ну, по хорошему, это делается на стороне сервера.
    А по плохому - берете строку ссылки window.location.host делите ее по точке, и берете первый элемент
    var subdomain = window.location.host.split()[0];
    if(subdomain === 'subdomain1') {
    //показываем один блок
    } else if(subdomain  === 'subdomain2') {
    // показываем второй блок
    }

    только учитывайте, что если зайти с основного домена, его имя и будет возвращено. Можно сделать проверку, на количество компонентов
    if(window.location.host.split().length === 3) {
    // домен состоит из трех компонент sub.domain.ru
    }
    Ответ написан
    1 комментарий
  • Выполнение php внутри файла xml?

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    В .htaccess:
    AddType application/x-httpd-php .php .xml
    php_flag short_open_tag off # чтобы PHP не матерился на <?xml ... ?>

    Или в nginx.conf, в секции location, которая передаёт обработку в PHP-FPM:
    location ~* \.(php|xml)$ {
    Ответ написан
    2 комментария
  • Выполнение php внутри файла xml?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    Давайте догадаюсь: файл, конечно же, имеет расширение .xml. И заворот всех *.xml на веб-сервер в .htaccess не настроен.
    Ответ написан
    Комментировать
  • Как как при загрузке страницы выполнить ajax запрос один раз?

    TerNik
    @TerNik
    Может быть так сделать?
    if (!document.body.hasAttribute('alreadyClicked')) {
      document.body.setAttribute('alreadyClicked', 'true');
      $("#year-30").click();
    }
    Ответ написан
    4 комментария
  • Как автоматически сохранить html-страницу в pdf?

    Ответ написан
    Комментировать
  • Нужен совет по изменению дизайна?

    riot26
    @riot26
    <:З )~~
    Просто оттенок оранжевого подобран неудачно, на нём плохо виден белый текст. Варианты решения — добавить тень или сделать оранжевый не таким бледным:
    5ac09edb56f6b924507598.png
    Если не получится добиться большей выразительности такими способами — лучше оставить синий.
    UPD
    Я бы ещё убрал фон у шапки, сильно уж отвлекает:
    5ac0a0243c466358282614.pngUPD 2
    Ещё внимание на себя отвлекают второстепенные красные кнопки. Они выделяются больше основных. Я бы исправил это как-то так:
    5ac0a23ba98d8695431026.pngUPD 3
    Если двигаться дальше в сторону избавления от отвлекающих элементов:
    5ac0a456d9f69874595267.pngUPD 4
    По желанию можно дополнительно акцентировать внимание на размере бонуса цветом несколькими способами:
    5ac0a66723abe380753951.pngUPD 5
    Подумал ещё и родил ещё несколько хороших мыслей. От слов "промокод" и "скидка" можно вовсе избавиться, об этом наглядно сообщат символы ₽ и %. Окончательно убедился, что оранжевый фон будет лишним, а оранжевые символы — вполне ок. Так же нужно кратко описывать условия предоставления бонусов, если это возможно и форматировать большие числа (на примере 10 000 ₽ — тысячи разбиты пробелом, на счёт 1 тысячи не уверен):
    5ac0ac866f91a706133752.png
    Ответ написан
    9 комментариев
  • Как спарсить html-код?

    Stalker_RED
    @Stalker_RED
    Можно использовать Zend\Dom\Query
    use Zend\Dom\Query;
    
    $dom = new Query($html);
    $nodes = $dom->execute('div.issue');
    foreach ($nodes as $node) {
        // $node is a DOMElement http://php.net/manual/ru/class.domelement.php
        echo $node->C14N();
    }


    А simple html dom не обновлялся несколько лет, я бы не стал своязываться.

    Из более комплексного - можно взять Guzzle, там сразу http клиент в комплекте.
    Ответ написан
    Комментировать
  • Как восстановить БД Битрикс на сервере Ubuntu?

    castomi
    @castomi
    Серверный администратор - tickets.settin.ru
    Создай пользователя и базу через консоль.
    1. Подключись по ssh к root пользователю.
    2. Подключись к консоли Mysql-сервера
    mysql -uroot -p
    Пароль если запросит ничего не вводи, если выполняешь конект с root юзера там и без пароля должно пускать.
    3. Создай базу
    create database bitrixbd;
    4. Создай юзера
    create user bitrixuser@localhost identified by 'password';

    5. Дай привилегии на использование этим юзером этой БД
    grant all privileges on bitrixbd.* to bitrixuser@localhost identified by 'password';

    6. Примени изменения и отключись от консоли.
    flush privileges;
    exit;


    Ну и теперь указывай ту базу, пользователя и пароль которые ты тут создал.
    Ответ написан
    5 комментариев