Задать вопрос
Ответы пользователя по тегу 1С-Битрикс
  • Как сделать анимированное подчёркивание ссылки у текста в 2 строки?

    @Asokr
    Видео не смотрел. Двойное подчеркивание при наведении можно сделать, к примеру использовав два псевдо элемента before и after - стили одни, просто один из них нужно опустить ниже второго...
    Ответ написан
    Комментировать
  • В битриксе не показывается панель ()?

    @Asokr
    проблема в том, что header её перекрывает...
    Задайте панели нужный position (relative/fixed) , и укажите z-index выше вашего хедера, 99999999 к примеру...
    Ответ написан
  • Инфоблоки как у битрикс, но в wordpress?

    @Asokr
    Скорее всего вам нужны произвольные типы постов, погуглите.
    Ответ написан
    Комментировать
  • Как запретить автоматические создание robots.txt в Битрикс?

    @Asokr Автор вопроса
    В моём случае роботс создавался при генерации карты сайта, т.к. стояла галочка
    "Добавить правило в robots.txt после генерации:"

    Спасибо Андрей Николаев, за подсказку...
    Ответ написан
    Комментировать
  • Как настроить redirect после смены ЧПУ для подразделов каталога bitrix?

    @Asokr
    Спасибо PetrPo.
    Оставлю тут готовый, рабочий код из диалога выше. Происходит редирект разделов и элементов.
    В моем случае, еще были нижние подчеркивания у старых URL, у новых тире...+ 301 редирект, вместо 302...
    <?
    if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
    $this->setFrameMode(true);
    
    $variables['SECTION_CODE_PATH'] = $arResult['VARIABLES']['SECTION_CODE_PATH'].'/'.$arResult['VARIABLES']['ELEMENT_ID'];
    $variables['SECTION_CODE_PATH'] = str_replace('_', '-', $variables['SECTION_CODE_PATH']);
    
    CIBlockFindTools::checkSection($arParams['IBLOCK_ID'], $variables);
    
    if(isset($variables['SECTION_ID']) && $variables['SECTION_ID']) {
      $iblock = \Bitrix\Iblock\IblockTable::getList([
        'select' => ['SECTION_PAGE_URL'],
        'filter' => ['ID' => $arParams['IBLOCK_ID']],
        'cache' => ['ttl' => 31536000]
      ])->fetch();
    
      if(strpos($iblock['SECTION_PAGE_URL'], '#SECTION_CODE_PATH#') !== false) {
        $sectionId = $variables['SECTION_ID'];
    
        $filter = ['IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $sectionId];
    
    
        $obCache = new CPHPCache();
        if($obCache->InitCache(36000, serialize($filter), '/iblock/catalog/redirect')) {
          $section = $obCache->GetVars();
        }
        elseif($obCache->StartDataCache()) {
          $section = [];
    
          $iterator = CIBLockSection::GetList([], $filter, false, ["IBLOCK_ID", "ID", "SECTION_PAGE_URL", "IBLOCK_TYPE_ID", "IBLOCK_SECTION_ID", "CODE", "SECTION_ID", "NAME"]);
    
          if(defined("BX_COMP_MANAGED_CACHE")) {
            global $CACHE_MANAGER;
            $CACHE_MANAGER->StartTagCache('/iblock/catalog/redirect');
    
            if($row = $iterator->GetNext()) {
              $section = $row;
              $CACHE_MANAGER->RegisterTag('iblock_id_'.$arParams['IBLOCK_ID']);
            }
    
            $CACHE_MANAGER->EndTagCache();
          }
          else {
            if($row = $iterator->GetNext()) {
              $section = $row;
            }
          }
    
          $obCache->EndDataCache($section);
        }
        if($section['SECTION_PAGE_URL']) { 
          LocalRedirect($section['SECTION_PAGE_URL'], false, '301 Moved permanently');
        }
      }
    } else {
      $iblock = \Bitrix\Iblock\IblockTable::getList([
        'select' => ['DETAIL_PAGE_URL'],
        'filter' => ['ID' => $arParams['IBLOCK_ID']],
        'cache' => ['ttl' => 31536000]
      ])->fetch();
    
      if(strpos($iblock['DETAIL_PAGE_URL'], '#ELEMENT_CODE#') !== false) {
        $elementId = $arResult['VARIABLES']['ELEMENT_ID'];
        $filter = ['IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $elementId];
        
        $obCache = new CPHPCache();
        if($obCache->InitCache(36000, serialize($filter), '/iblock/catalog/redirect')) {
          $element = $obCache->GetVars();
        }
        elseif($obCache->StartDataCache()) {
          $element = [];
    
          $iterator = CIBLockElement::GetList([], $filter, false, false, ['IBLOCK_ID', 'ID', 'DETAIL_PAGE_URL']);
          
          if(defined("BX_COMP_MANAGED_CACHE")) {
            global $CACHE_MANAGER;
            $CACHE_MANAGER->StartTagCache('/iblock/catalog/redirect');
    
            if($row = $iterator->GetNext()) {
              $element = $row;
              $CACHE_MANAGER->RegisterTag('iblock_id_'.$arParams['IBLOCK_ID']);
            }
    
            $CACHE_MANAGER->EndTagCache();
          }
          else {
            if($row = $iterator->GetNext()) {
              $element = $row;
            }
          }
            
            
          $obCache->EndDataCache($element);
        }
    
    
        if($element['DETAIL_PAGE_URL']) {
          LocalRedirect($element['DETAIL_PAGE_URL'], false, '301 Moved permanently');
        }
      }
    }
    Ответ написан
    Комментировать
  • Редирект Битрикс?

    @Asokr
    Спасибо PetrPo.
    Оставлю тут готовый, рабочий код. Происходит редирект разделов и элементов.
    <?
    if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
    $this->setFrameMode(true);
    
    $variables['SECTION_CODE_PATH'] = $arResult['VARIABLES']['SECTION_CODE_PATH'].'/'.$arResult['VARIABLES']['ELEMENT_ID'];
    $variables['SECTION_CODE_PATH'] = str_replace('_', '-', $variables['SECTION_CODE_PATH']);
    
    CIBlockFindTools::checkSection($arParams['IBLOCK_ID'], $variables);
    
    if(isset($variables['SECTION_ID']) && $variables['SECTION_ID']) {
      $iblock = \Bitrix\Iblock\IblockTable::getList([
        'select' => ['SECTION_PAGE_URL'],
        'filter' => ['ID' => $arParams['IBLOCK_ID']],
        'cache' => ['ttl' => 31536000]
      ])->fetch();
    
      if(strpos($iblock['SECTION_PAGE_URL'], '#SECTION_CODE_PATH#') !== false) {
        $sectionId = $variables['SECTION_ID'];
    
        $filter = ['IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $sectionId];
    
    
        $obCache = new CPHPCache();
        if($obCache->InitCache(36000, serialize($filter), '/iblock/catalog/redirect')) {
          $section = $obCache->GetVars();
        }
        elseif($obCache->StartDataCache()) {
          $section = [];
    
          $iterator = CIBLockSection::GetList([], $filter, false, ["IBLOCK_ID", "ID", "SECTION_PAGE_URL", "IBLOCK_TYPE_ID", "IBLOCK_SECTION_ID", "CODE", "SECTION_ID", "NAME"]);
    
          if(defined("BX_COMP_MANAGED_CACHE")) {
            global $CACHE_MANAGER;
            $CACHE_MANAGER->StartTagCache('/iblock/catalog/redirect');
    
            if($row = $iterator->GetNext()) {
              $section = $row;
              $CACHE_MANAGER->RegisterTag('iblock_id_'.$arParams['IBLOCK_ID']);
            }
    
            $CACHE_MANAGER->EndTagCache();
          }
          else {
            if($row = $iterator->GetNext()) {
              $section = $row;
            }
          }
    
          $obCache->EndDataCache($section);
        }
        if($section['SECTION_PAGE_URL']) { 
          LocalRedirect($section['SECTION_PAGE_URL'], false, '301 Moved permanently');
        }
      }
    } else {
      $iblock = \Bitrix\Iblock\IblockTable::getList([
        'select' => ['DETAIL_PAGE_URL'],
        'filter' => ['ID' => $arParams['IBLOCK_ID']],
        'cache' => ['ttl' => 31536000]
      ])->fetch();
    
      if(strpos($iblock['DETAIL_PAGE_URL'], '#ELEMENT_CODE#') !== false) {
        $elementId = $arResult['VARIABLES']['ELEMENT_ID'];
        $filter = ['IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ID' => $elementId];
        
        $obCache = new CPHPCache();
        if($obCache->InitCache(36000, serialize($filter), '/iblock/catalog/redirect')) {
          $element = $obCache->GetVars();
        }
        elseif($obCache->StartDataCache()) {
          $element = [];
    
          $iterator = CIBLockElement::GetList([], $filter, false, false, ['IBLOCK_ID', 'ID', 'DETAIL_PAGE_URL']);
          
          if(defined("BX_COMP_MANAGED_CACHE")) {
            global $CACHE_MANAGER;
            $CACHE_MANAGER->StartTagCache('/iblock/catalog/redirect');
    
            if($row = $iterator->GetNext()) {
              $element = $row;
              $CACHE_MANAGER->RegisterTag('iblock_id_'.$arParams['IBLOCK_ID']);
            }
    
            $CACHE_MANAGER->EndTagCache();
          }
          else {
            if($row = $iterator->GetNext()) {
              $element = $row;
            }
          }
            
            
          $obCache->EndDataCache($element);
        }
    
    
        if($element['DETAIL_PAGE_URL']) {
          LocalRedirect($element['DETAIL_PAGE_URL'], false, '301 Moved permanently');
        }
      }
    }
    Ответ написан
    Комментировать