Задать вопрос
  • Как использовать Iblock внутри своего класса?

    no_one_safe
    @no_one_safe
    $el = new \CIBlockElement();
    Слеш забыли перед классом.
    Ответ написан
    1 комментарий
  • Как использовать Iblock внутри своего класса?

    udjin123
    @udjin123
    PHP, Golang, React
    use Bitrix\Iblock это не нужно и не поможет, это namespace.
    Вам же нужно загрузить модуль Iblock так как класс который вам нужен в нем, при загрузке модуля инициализируется автолоадер его классов.

    use Bitrix\Main\Loader;
    Loader::includeModule("iblock");
    Ответ написан
    1 комментарий
  • Как обрезать слишком длинный текст при выводе?

    noder_ss
    @noder_ss
    Линуксоид-энтузиаст и SQL разработчик
    Легко ищется:
    <body>
    <p class="text">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Consequuntur laudantium commodi corporis, sunt repellendus impedit quo veritatis reiciendis. Deleniti sequi cumque id animi cupiditate, cum maiores eaque minus maxime itaque.</p>
    
    </body>
    <script>
    let text = document.querySelector('.text')
    
    text.innerHTML = text.innerHTML.slice(0, 16) + "..."
    </script>
    Ответ написан
    Комментировать
  • Как добавить в массив пару ключ-значение на php?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Начиная с php 5.4 можно использовать конструкцию для ассоциативных массивов вида
    $arr += $arr2;
    // или так
    $arr += ['lol3'=>'3'];


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

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    в файл element.php
    например, bitrix/templates/шаблон сайта/components/bitrix/catalog.default/element.php
    или
    например, bitrix/templates/шаблон сайта/components/bitrix/news.default/element.php
    добавь условие, предварительно создав шаблоны детальной страницы.
    добавь до компонента условие
    if (strstr($APPLICATION->GetCurPage(true), 'products/1/') !== false) {$SP = 'название шаблона1';};
    if (какое то другое условие)  {$SP = 'название шаблона2';};
    if (еще условие)  {$SP = 'название шаблона3';};
    if (и еще условие) {$SP = 'название шаблона4';};

    и в компоненте, где шаблон указан, замени на переменную $SP
    $APPLICATION->IncludeComponent(
    	"bitrix:catalog.element",
    	$SP, //подставится шаблон согласно условию
    	array(
    		"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    		"IBLOCK_ID" => $arParams["IBLOCK_ID"],
    .......................

    В зависимости от условия будет задействован нужный шаблон
    Ответ написан
    3 комментария
  • Как правильно написать GetCurPage в Битрикс?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Есть еще подход, когда в директории в файле свойств раздела заводится флаг, например:
    /news/.section.php
    <?
    $sSectionName="Новости";
    $arDirProperties = [
        'HIDE_H1' => 'Y',
    ];
    ?>


    И потом в шаблоне страницы пишется условие:
    <?php
    if ('Y' != $APPLICATION->GetProperty('HIDE_H1')) {
    	?><h1><?$APPLICATION-ShowTitle(true);?></h1><?
    }
    Ответ написан
    Комментировать
  • Как создать xml карту сайта для изображений?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Набросал код для вас.
    <?
    require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
    CModule::IncludeModule("iblock");
    $dom = new domDocument("1.0", 'utf-8');
    $xml = $dom->createElement("xml");
    $xml ->setAttributeNS(null, 'version', '1.0');
    $xml ->setAttributeNS(null, 'encoding', 'utf-8');
    $dom->appendChild($xml); 
    $urlset = $dom->createElement("urlset"); 
    $urlset->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
    $urlset->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:image','http://www.google.com/schemas/sitemap-image/1.1');
    
    $arSelect = Array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE");
    $arFilter = Array("IBLOCK_ID"=>8, "SECTION_ID"=>100, "INCLUDE_SUBSECTIONS" => "Y"); //ID Инфоблока и ID раздела с элементами
    $rsElement = CIBlockElement::GetList(Array("NAME" => "ASC"), $arFilter, false, Array("nPageSize"=>5), $arSelect);
    $arResult["ITEMS"] = array();
    while($obElement = $rsElement->GetNextElement())
    {
    $arItem = $obElement->GetFields();
    $arItem["PROPERTIES"] = $obElement->GetProperties();
    $google_link =  'https://site.ru'.$arItem[DETAIL_PAGE_URL];
    $google_img =  'https://site.ru'.CFile::GetPath($arItem[PREVIEW_PICTURE]);
    
        $url = $dom->createElement("url"); 
        $login = $dom->createElement("loc", $google_link);
        $url->appendChild($login);
        $image = $dom->createElement("image:image");
        $image2 = $dom->createElement("image:loc", $google_img);
        $image->appendChild($image2);
        $url->appendChild($image);
    
    $urlset->appendChild($url);
    };
    $xml->appendChild($urlset);
    $dom->save("img.xml"); //в корне директории откуда запускаем скрипт
    echo 'Готово';
    ?>

    5eecf8d3c0a8c845561753.png
    Ответ написан
    4 комментария