• Как изменить стили bootstarp 5?

    Starina_js
    @Starina_js
    full-stack web dev
    1. Посмотрите порядок подключения стилей.
    2. Движки/CMS могут по-своему переключать порядок
    3. Посмотрите в инспекторе , где идет сбивка стилей. Что перебивает.
    Ответ написан
    Комментировать
  • Скрипт php для создания json файла, как правильно создать?

    Starina_js
    @Starina_js
    full-stack web dev
    Сам json формируется так
    $items = [
    	"item1" => [
    		"name" => "itemName1",
    		"code" => "itemCode1",
    		"options" => [
    			"var" => "rav"
    		]
    	],
    	"item2" => [
    		"name" => "itemName2",
    		"code" => "itemCode2",
    	],
    ];
    
    $json = json_encode($items);
    
    // Сохранить в файл можно так
    file_put_contents("/path/my.json", $json);
    
    //есть еще параметры, допустим FILE_APPEND - дописываем в конец файла


    А если нужно написать страничку, то создаем html разметку с
    Внутри form указываем нужные input, Форма тип post, button submit.

    При сохранении, получаем значения инпутов ($_POST["input"]) , валидируем и сохраняем как json

    Гуглим , первая ссылка с примерами - https://metanit.com/php/tutorial/3.1.php
    Ответ написан
    Комментировать
  • Bitrix D7 какой самый быстрый по скорости метод получения значения свойства элемента с типом Список?

    Starina_js
    @Starina_js
    full-stack web dev
    Если работа с инфоблоками, то можно в select указать свойства сразу, и тогда битрикс сам соединит таблицы
    PROP, PROP.VALUE, PROP.ITEM.VALUE, PROP.ELEMENT (типы свойств посмотрите в справке, ссылку указал внизу)
    
    \Bitrix\Iblock\Elements\ElementСatalogTable::getList([
        'select' => [
        'NAME',
        'ID',
        'PROP_TEXT_VALUE' => 'PROP_TEXT.VALUE',  //строка
        'PROP_CITY_VALUE' => 'PROP_CITY.ITEM.VALUE',  // список
        'PROP_COURSE_' => 'PROP_COURSE_ELEMENT.ELEMENT', // свойство с привязкой элемента
       ],
       'cache' => [
          'ttl' => 3600
       ],
    ])->fetchAll() // если хотим просто массив получить готовый


    Если хотим работать с коллекцией, то
    $elements = \Bitrix\Iblock\Elements\ElementСatalogTable::getList([
      'select' => [
         'NAME',
         'ID',
         'PROP_NAME.ITEM',  // список
         //'PROP_NAME',  // строка
      ],
      'cache' => [
        'ttl' => 3600
      ],
    ])->fetchCollection();
    
    foreach ($elements as $element)
    {
       echo $element->getPropName()->getValue();
       //echo $element->getPropName()->getElement()->getValue();    
    }


    Справка по инфоблокам orm (там спойлеры еще гляньте)
    https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    1 комментарий
  • Как показать подразделы в компоненте bitrix:news?

    Starina_js
    @Starina_js
    full-stack web dev
    Допустим у нас есть раздел site.ru/news/

    Мы хотим выводить новости, но без подразделов и допустим site.ru/news/news-name/
    1. В настройках инфоблока:
    URL страницы информационного блока: #SITE_DIR#/news/
    URL страницы детального просмотра: #SITE_DIR#/news/#ELEMENT_CODE#/
    2. В api компонента
    "SEF_FOLDER" => "/news/",
    "SEF_URL_TEMPLATES" => array(
          "news" => "",
          "section" => "",
          "detail" => "#ELEMENT_CODE#/",
    )


    Или, допустим, мы хотим выводить новости с подразделами site.ru/news/section/news-name/
    1. В настройках инфоблока:
    URL страницы информационного блока: #SITE_DIR#/news/
    URL страницы раздела: #SITE_DIR#/news/#SECTION_CODE#/
    URL страницы детального просмотра: #SITE_DIR#/news/#SECTION_CODE#/#ELEMENT_CODE#/
    2. В api компонента
    "SEF_FOLDER" => "/news/",
    "SEF_URL_TEMPLATES" => array(
          "news" => "",
          "section" => "#SECTION_CODE#/",
          "detail" => "#SECTION_CODE#/#ELEMENT_CODE#/",
    )


    Или, допустим, мы хотим выводить новость в несколько разделов, но чтобы чпу у новости был не в подразделе.
    К примеру новость отображалась в разделах site.ru/news/section1 и site.ru/news/section2 , но url самой новости был один для этих разделов (site.ru/news/detail/news-name/)

    1. В настройках инфоблока:
    URL страницы информационного блока: #SITE_DIR#/news/
    URL страницы раздела: #SITE_DIR#/news/#SECTION_CODE_PATH#/ (хотя можно даже section_code не указывать)
    URL страницы детального просмотра: #SITE_DIR#/news/#ELEMENT_CODE#/
    2. В api компонента
    "SEF_FOLDER" => "/news/",
    "SEF_URL_TEMPLATES" => array(
          "news" => "",
          "section" => "#SECTION_CODE_PATH#/",
          "detail" => "#ELEMENT_CODE#/",
    )


    или еще так можно

    1. В настройках инфоблока:
    URL страницы информационного блока: #SITE_DIR#/news/
    URL страницы раздела: #SITE_DIR#/news/#SECTION_CODE#/ (хотя можно даже section_code не указывать)
    URL страницы детального просмотра: #SITE_DIR#/news/element/#ELEMENT_CODE#/
    2. В api компонента
    "SEF_FOLDER" => "/news/",
    "SEF_URL_TEMPLATES" => array(
          "news" => "",
          "section" => "#SECTION_CODE#/",
          "detail" => "element/#ELEMENT_CODE#/",
    )


    Еще, в корне проекта есть файл urlrewrite.php - он отвечает за обработку адресов. Вообще он должен обновляться когда вы сохраняете компонент через редактор админа на фронте, либо через админку в обработке адресов.
    Однако вы можете глянуть как там прописаны пути

    0 => 
      array (
        'CONDITION' => '#^/news/#',
        'RULE' => '',
        'ID' => 'bitrix:news',
        'PATH' => '/news/index.php',
        'SORT' => 100,
      ),
    Ответ написан
    Комментировать
  • Как получить все св-ва элементов в ORM используя runtime?

    Starina_js
    @Starina_js
    full-stack web dev
    Если хотим работать с orm инфоблоков, то сначала в настройках инфоблока пропишите символьный код api

    Если вам нужно получить все свойства инфоблока то можно так
    \Bitrix\Iblock\PropertyTable::getList([
                'select' => [
                    'CODE',
                    'NAME',
                ],
                'filter' => [
                    'IBLOCK_ID' => $iblockId,
                ],
                'cache' => [
                    'ttl' => 3600
                ],
            ])->fetchAll();

    Вместо fetchall() можно fetchCollection() - для работы с коллекциями

    Если мы хотим получить элементы со значениями нужных свойств, то можно допустим так
    \Bitrix\Iblock\Elements\ElementCalendarListTable::getList([
                'select' => [
                    'NAME',
                    'ID',
                    'PROP_TEXT_VALUE' => 'PROP_TEXT.VALUE',  //строка
                    'PROP_CITY_VALUE' => 'PROP_CITY.ITEM.VALUE',  // список
                    'PROP_COURSE_' => 'PROP_COURSE_ELEMENT.ELEMENT', // свойство с привязкой элемента
                ],
                'cache' => [
                    'ttl' => 3600
                ],
            ])->fetchCollection()

    ElementCalendarListTable - это часть из названия символьного кода api и ElementTable

    Обратите внимание на select и как указываются свойства.
    Битрикс автоматом связывает таблицы, если они правильно в запросе прописаны

    https://dev.1c-bitrix.ru/learning/course/index.php...
    Посмотрите тут про типы свойств и как их можно получить и как формировать запросы. (там это указано под спойлером)

    Еще значения из свойств элемента можно получить так (как в справке)
    $iblock = \Bitrix\Iblock\Iblock::wakeUp($iblockId);
    $elements = $iblock->getEntityDataClass()::getList([
        'select' => ['ID', 'SOME_FIELD', 'ANOTHER_FIELD.ELEMENT']
    ])->fetchCollection();
    
    foreach ($elements as $element)
    {
        echo $element->getSomeField()->getValue();
        echo $element->getAnotherField()->getElement()->getTitle();
    }

    Тута https://dev.1c-bitrix.ru/learning/course/index.php...

    Это более простые способы получения значений из свойств инфоблоков.

    Есть еще вариант джойнить таблицы, делается через runtime
    Ответ написан
  • Стоит ли стажироваться на php разработчика, если у них cms Битрикс?

    Starina_js
    @Starina_js
    full-stack web dev
    Топик очень даже дискуссионный. Тут многое зависит от точки зрения.

    1. Если начинающий разработчик, можно пробовать в Битрикс.
    Плюсы: быстрый старт и вход в профессию веб-разработчика, очень много вакансий от студий.
    На начальном этапе нужно понять азы коммерческой веб-разработки, уронить пару продакшн серверов, затем наполучать от клиентов и своих менеджеров хороших люлей.
    Пет проекты — это хорошо, но опыт коммерческой разработки важен для компаний.
    Студии охотно работают с Битриксом, там есть бюджеты клиентов. Разработчики вполне хорошо зарабатывают в этой нише. На старте конечно меньше, но с опытом быстро растет рейт.
    Минусы: рынок СНГ, дальше не уедешь.
    Кстати, это не значит, что на Битриксе то и дело только шаблоны клепаешь. Я работаю с крупными проектам на Битриксе, с крупной архитектурой проектов и бизнес логикой, большими нагрузками, rest api. Хороший опыт современной разработки.

    2. Из первого пункта вытекает один нюанс, крупных проектов на Битриксе на всех не хватит.
    Чаще всего — это работа с клепанием шаблонов и правок по SEO. Часть бизнес логике описываешь отдельно и передаешь в шаблон. Иногда пишешь свои компоненты или даже модули (чутка интереснее, чем шаблоны).
    Это все рынок услуг, рынок аутсорса. Ты или твоя компания обслуживает клиента: корп сайты, магазины. Ты завязан на требования от клиента, его отдела менеджмента и маркетинга. Мало свободы, рамки.
    Со временем ты понимаешь, что устал от рынка услуг, что хочется в продуктовую разработку. Сервисы, кабинеты, разработка API, архитектура, польза миру и все вот это вот....
    Тут уже ты переключаешься на продуктовый рынок, где одно из требований — современные фреймворки.
    И хорошо, если ты попробовал серьезные проекты на битриксе, будет проще перескочить.
    Но если ты все время клепал шаблоны, то будет сложно. Об этом надо знать заранее, и готовиться заранее. Советую заранее походить по вакансиям, разобраться что от вас требуется знать, уметь, владеть.

    3. Мировой рынок. Тут Битрикса нет :) Тут будут спрашивать опыт, но и заработок другой.
    Хочется сюда? Готовимся заранее... Идем по вакансиям на джунов по фремворкам, доказываем, что есть огромное желание работать. Работаем на опыт. Годик, полтора — смотрим вакансии в мире

    P.S. Не советую на старте во фриланс лезть. Наработка опыта растянется на года, денег там мало, зато нервных срывов, выгорания, бессонных ночей дохрена. Сам проходил)
    Ответ написан
    2 комментария
  • Как настроить урл-ы инфоблока Битрикса на без слеша?

    Starina_js
    @Starina_js
    full-stack web dev
    В битриксе по умолчанию используется конечный слеш. Лучше привести к этому формату Инфоблоки.
    #SITE_DIR#catalog/#SECTION_CODE#/
    ... #ELEMENT_CODE#/
    Вот везде слеш проставить в конце.
    А так же посмотреть параметры компонента, у подключаемых шаблонов.
    Ответ написан
  • Какой стэк технологии выбрать для социальной сети?

    Starina_js
    @Starina_js
    full-stack web dev
    Архитектура проектов не зависит от языков программирования, библиотек, баз данных.
    Начинать надо с бизнес-требований, дальше переходим к бизнес-логике, а дальше уже работаем на уровне реализации (языки, библиотеки, фреймы и т.п).
    + еще архитектура штука изменчивая. Она должна и будет меняться при смене требований.

    Посоветовать могу книгу «Чистая архитектура. Роберт Мартин». Что-то сразу не зайдет, но в целом станет легче)
    Ответ написан
    2 комментария
  • Считать ли опыт разработки под битрикс полноценным опытом в php?

    Starina_js
    @Starina_js
    full-stack web dev
    Если кастом будете пилить, то в принципе прокачка будет.
    Если зависните на стандартной натяжке, то деградация. Подключить компонент и поднастроить шаб, ничего сложного, одна рутина.

    После такой работы, если попадётся нормальный таск, потеряетесь и фейл будет однозначно. Поймёте, что потеряли кучу времени впустую.
    Ответ написан
  • Как обойти дублирование кода с настройками в классе DataTable ( Laravel + editor.Datatables)?

    Starina_js
    @Starina_js Автор вопроса
    full-stack web dev
    Решено.
    Создал доп. класс с настройками, в метод html-билдера передал этот класс и вызвал нужную функцию, которая возвращает массив настроек.
    Ответ написан
    Комментировать
  • По какому API строится работа с реестром действующих пропусков грузового транспорта Москвы?

    Starina_js
    @Starina_js
    full-stack web dev
    Здравствуйте. Удалось разобраться? Как я понял по гос номеру нельзя получить информацию, только по номеру самого пропуска?
    Ответ написан
    Комментировать
  • Joomla или Wordpress?

    Starina_js
    @Starina_js
    full-stack web dev
    А на чем система объявлений построена?

    Вообще лучше просто обновить систему.
    Комменты, интеграции с соц сетями другие расширения есть в магазине от Joomla. Есть бесплатные, есть платные. Как и у WP. На github всего полно. Плюс joomlaforum вам поможет, если что не так.

    1. Встроенный редактор вполне себе хороший, да и можно настроить под себя. Или вообще отключить, кому как удобно.
    Если этого мало, то вот еще редакторы — https://extensions.joomla.org/tags/editors/
    2. По поводу получить статьи автора. Вы про выборку прямо в админке? Так вот скрин 5c60179e5115a220012575.png
    Если разговор про фронт, то тоже можно сделать фильтрацию по авторам прямо в админке, без того что бы лезть в код. Да и вообще в админке много настроек по фильтрациям контента. Не надо никуда в код лезть.
    3. Понятные переопределения шаблонов сайта. Все хранится в одной папке в шаблоне в понятной структуре. Сами макеты подключается в админке. Не надо искать по всему шаблону нужный файл перебирая все подключения.
    4. Если что-то нужно по SEO для админки, то есть расширения. Как собственно и в WP. Плюс в Joomla вся разметка под SEO уже из коробки (зависит от шаблона).
    5. Наконец Жжумла развивается. В последней ветке из коробки появились поля, которые создаются прям в админке.
    В планах выпуск Joomla 4 . Вот концепт админки https://magazine.joomla.org/item/3289-episode-iv-a...
    Ответ написан
    4 комментария
  • Как добавить дополнительные поля в Joomla?

    Starina_js
    @Starina_js
    full-stack web dev
    Это не шаблон категории блога. Это вы в компонент "метки" пытаетесь вывести поля из материалов, поэтому их нет.
    Вот так можно
    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
    $item->jcfields = FieldsHelper::getFields('com_content.article', $item, true);
    $fields = [];
    foreach($item->jcfields as $jcfield)
    {
      $fields[$jcfield->name] = $jcfield;
    }
    $fields['имя_поля']->rawvalue;
    Ответ написан
    Комментировать