Bitrix чпу news: Новости (комплексный компонент)

/novosti/#’, ‘RULE’ => », ‘ID’ => ‘bitrix:news’, ‘PATH’ => ‘/novosti/index.php’, ‘SORT’ => 100, )

С выключенным ЧПУ в компоненте всё работает: и страница «список новостей», и страница «новость детально».
С включённым ЧПУ в компоненте на странице «новость детально» текст новости не отображается.

Помогите правильно настроить ЧПУ компонента bitrix.news. Можно ли это сделать только через gui (без «ковыряния в коде»)?

.htaccess в корне сайта:

Options +Indexes 
ErrorDocument 404 /404.php

<IfModule mod_php5.c>

  php_flag session.use_trans_sid off
  
  php_value display_errors 1
  
  php_value mbstring.func_overload 2
  php_value mbstring.internal_encoding UTF-8
  
  php_value max_input_vars 10000
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_REFERER} http://bot.net/
    RewriteRule .* http://bitrix-biz.net [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.
(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] </IfModule> <IfModule mod_dir.c> DirectoryIndex index.php index.html </IfModule>

Содержание

Битрикс. Комплексный компонент «Новости». Категория: Web-разработка • CMS Битрикс

Создаем раздел blog и в визуальном редакторе, в правой колонке выбираем комплексный компонент «Контент • Новости • Новости» и добавляем его на страницу. Это комплексный компонент, предназначен для решения нескольких задач: показывать список новостей, показывать отдельную новость и т.д.

Рядом с комплексным компонентом есть несколько простых, которые предназначены для решения одной задачи:

  • Список новостей
  • Новость детально

В настройках компонента оставляем шаблон .default, выбираем тип инфоблока и сам инфоблок, которые были предварительно созданы в панели управления. Отмечаем checkbox-ы «Включать раздел в цепочку навигации» и «Устанавливать статус 404». В принципе, больше можно ничего не менять, остальные настройки можно поменять позже. В результате файл /blog/index.php будет таким:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Блог");
?>
<?php
$APPLICATION->IncludeComponent(
    "bitrix:news",
    "",
    Array(
        // настройки компонента
    )
);
?>
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>

Сам компонент расположен в bitrix/components/bitrix/news. В папке templates видим три шаблона, и среди них .default, который мы выбрали. Теперь надо скопировать этот шаблон в папку шаблона сайта, чтобы адаптировать его под свои нужды. Для раздела «Блог» предусмотрен отдельный шаблон local/templates/blog, именно в эту папку и будем копировать. Для шаблона компонента используем имя

blog:

После копирования шаблона компонента, файл /blog/index.php был перезаписан:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Блог");
?>
<?php
$APPLICATION->IncludeComponent(
    "bitrix:news",
    "blog",
    Array(
        "ADD_ELEMENT_CHAIN" => "N",                   // Включать название элемента в цепочку навигации
        "ADD_SECTIONS_CHAIN" => "Y",                  // Включать раздел в цепочку навигации
        "AJAX_MODE" => "N",                           // Включить режим AJAX
        "AJAX_OPTION_ADDITIONAL" => "",               // Дополнительный идентификатор
        "AJAX_OPTION_HISTORY" => "N",                 // Включить эмуляцию навигации браузера
        "AJAX_OPTION_JUMP" => "N",                    // Включить прокрутку к началу компонента
        "AJAX_OPTION_STYLE" => "Y",                   // Включить подгрузку стилей
        "BROWSER_TITLE" => "-",                       // Установить заголовок окна браузера из свойства
        "CACHE_FILTER" => "N",                        // Кешировать при установленном фильтре
        "CACHE_GROUPS" => "Y",                        // Учитывать права доступа
        "CACHE_TIME" => "36000000",                   // Время кеширования (сек.)
        "CACHE_TYPE" => "N",                          // Тип кеширования
        "CHECK_DATES" => "Y",                         // Показывать только активные на данный момент элементы
        "DETAIL_ACTIVE_DATE_FORMAT" => "M j, Y",      // Формат показа даты
        "DETAIL_DISPLAY_BOTTOM_PAGER" => "Y",         // Выводить под списком
        "DETAIL_DISPLAY_TOP_PAGER" => "N",            // Выводить над списком
        "DETAIL_FIELD_CODE" => array(                 // Поля
            0 => "",
            1 => "",
        ),
        "DETAIL_PAGER_SHOW_ALL" => "Y",               // Показывать ссылку "Все"
        "DETAIL_PAGER_TEMPLATE" => "",                // Название шаблона
        "DETAIL_PAGER_TITLE" => "Страница",           // Название категорий
        "DETAIL_PROPERTY_CODE" => array(              // Свойства
            0 => "AUTHOR",
            1 => "",
        ),
        "DETAIL_SET_CANONICAL_URL" => "N",            // Устанавливать канонический URL
        "DISPLAY_BOTTOM_PAGER" => "Y",                // Выводить под списком
        "DISPLAY_DATE" => "Y",                        // Выводить дату элемента
        "DISPLAY_NAME" => "Y",                        // Выводить название элемента
        "DISPLAY_PICTURE" => "Y",                     // Выводить изображение для анонса
        "DISPLAY_PREVIEW_TEXT" => "Y",                // Выводить текст анонса
        "DISPLAY_TOP_PAGER" => "N",                   // Выводить над списком
        "HIDE_LINK_WHEN_NO_DETAIL" => "N",            // Скрывать ссылку, если нет детального описания
        "IBLOCK_ID" => "1",                           // Идентификатор инфоблока
        "IBLOCK_TYPE" => "content",                   // Тип инфоблока
        "INCLUDE_IBLOCK_INTO_CHAIN" => "N",           // Включать инфоблок в цепочку навигации
        "LIST_ACTIVE_DATE_FORMAT" => "j F Y",         // Формат показа даты
        "LIST_FIELD_CODE" => array(    // Поля
            0 => "",
            1 => "",
        ),
        "LIST_PROPERTY_CODE" => array(                // Свойства
            0 => "AUTHOR",
            1 => "",
        ),
        "MESSAGE_404" => "",                          // Сообщение для показа (по умолчанию из компонента)
        "META_DESCRIPTION" => "-",                    // Установить описание страницы из свойства
        "META_KEYWORDS" => "-",                       // Установить ключевые слова страницы из свойства
        "NEWS_COUNT" => "2",                          // Количество новостей на странице
        "PAGER_BASE_LINK_ENABLE" => "N",              // Включить обработку ссылок
        "PAGER_DESC_NUMBERING" => "N",                // Использовать обратную навигацию
        "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", // Время кеширования страниц для обратной навигации
        "PAGER_SHOW_ALL" => "N",                      // Показывать ссылку "Все"
        "PAGER_SHOW_ALWAYS" => "N",                   // Выводить всегда
        "PAGER_TEMPLATE" => ".default",               // Шаблон постраничной навигации
        "PAGER_TITLE" => "Новости",                   // Название категорий
        "PREVIEW_TRUNCATE_LEN" => "",                 // Максимальная длина анонса для вывода (только для типа текст)
        "SEF_MODE" => "N",                            // Включить поддержку ЧПУ
        "SET_LAST_MODIFIED" => "Y",                   // Устанавливать в заголовках ответа время модификации страницы
        "SET_STATUS_404" => "Y",                      // Устанавливать статус 404
        "SET_TITLE" => "N",                           // Устанавливать заголовок страницы
        "SHOW_404" => "N",                            // Показ специальной страницы
        "SORT_BY1" => "ACTIVE_FROM",                  // Поле для первой сортировки новостей
        "SORT_BY2" => "SORT",                         // Поле для второй сортировки новостей
        "SORT_ORDER1" => "DESC",                      // Направление для первой сортировки новостей
        "SORT_ORDER2" => "ASC",                       // Направление для второй сортировки новостей
        "STRICT_SECTION_CHECK" => "N",                // Строгая проверка раздела
        "USE_CATEGORIES" => "N",                      // Выводить материалы по теме
        "USE_FILTER" => "N",                          // Показывать фильтр
        "USE_PERMISSIONS" => "N",                     // Использовать дополнительное ограничение доступа
        "USE_RATING" => "N",                          // Разрешить голосование
        "USE_REVIEW" => "N",                          // Разрешить отзывы
        "USE_RSS" => "N",                             // Разрешить RSS
        "USE_SEARCH" => "N",                          // Разрешить поиск
        "USE_SHARE" => "N",                           // Отображать панель соц. закладок
        "VARIABLE_ALIASES" => array(
            "ELEMENT_ID" => "ELEMENT_ID",
            "SECTION_ID" => "SECTION_ID",
        )
    ),
    false
);
?>
<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>

Из папок шаблонов все удаляем, оставляем только файлы шаблонов и файлы стилей:

  • /local/templates/blog/components/bitrix/news/blog/bitrix/news.list/.default/template.php
  • /local/templates/blog/components/bitrix/news/blog/bitrix/news.detail/.default/template.php
  • /local/templates/blog/components/bitrix/news/blog/bitrix/news.list/.default/style.css
  • /local/templates/blog/components/bitrix/news/blog/bitrix/news.detail/.default/style.css

Шаблон списка новостей

Файл шаблона /local/templates/blog/components/bitrix/news/blog/bitrix/news.list/.default/template.php. Этот шаблон используется как для показа всех статей блога, так и для показа статей выбранного раздела инфоблока. Странно, но в шаблоне не предусмотрен вывод заголовков и вывод подразделов текущего раздела инфоблока. Давайте это исправим и создадим файл result_modifier.php:

<?php
/**
 * Файл local/templates/blog/components/bitrix/news/blog/bitrix/news.list/.default/result_modifier.php
 */
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

/*
 * Получаем информацию о текущем разделе инфоблока. Здесь возможны две ситуации:
 * - первая — мы имеем дело с обычным разделом инфоблока, который выводит список
 *   элементов этого раздела и всех его потомков
 * - вторая — мы имеем дело с корневым разделом инфоблока, который выводит список
 *   всех элементов, которые есть в инфоблоке
 * Для обоих случаев используется простой компонент bitrix:news.list и нам надо
 * как-то различать эти две ситуации. Но в любом случае у страницы должен быть
 * заголовок и список подразделов текущего раздела — для навигации. Потому как в
 * стандартном компоненте Битрикс этого не предусмотрено. Или я чего-то не понял.
 */

$arParams['PARENT_SECTION'] = intval($arParams['PARENT_SECTION']);

if ($arParams['PARENT_SECTION'] > 0) { // это обычный раздел инфоблока
    /*
     * Сначала получаем инфомацию о текущем разделе
     */
    $arResult['SECTION_DATA']['ROOT'] = false;
    // какие поля раздела инфоблока выбираем
    $arSelect = array(
        'NAME',
        'DESCRIPTION',
    );
    // условия выборки
    $arFilter = array(
        'IBLOCK_ID' => $arResult['ID'],      // идентификатор инфоблока
        'IBLOCK_ACTIVE' => 'Y',              // инфоблок должен быть активен
        'ID' => $arParams['PARENT_SECTION'], // идентификатор раздела
        'ACTIVE' => 'Y',                     // раздел должен быть активным
    );
    // сортировка
    $arSort = array(
        'SORT' => 'ASC'
    );
    // выполняем запрос к базе данных
    $dbResult = CIBlockSection::GetList(
        $arSort,
        $arFilter,
        false,
        $arSelect
    );
    if ($arSection = $dbResult->GetNext()) {
        $arResult['SECTION_DATA'] = $arSection;
    }
    /*
     * А потом информацию о подразделах текущего раздела
     */
    // какие поля подразделов выбираем
    $arSelect = array(
        'ID',
        'NAME',
        'DESCRIPTION',
        'SECTION_PAGE_URL'
    );
    // условия выборки подразделов
    $arFilter = array(
        'IBLOCK_ID' => $arResult['ID'], // идентификатор инфоблока
        'IBLOCK_ACTIVE' => 'Y',         // инфоблок должен быть активен
        'ACTIVE' => 'Y',                // только активные разделы
        'SECTION_ID' => $arParams['PARENT_SECTION']
    );
    // сортировка разделов
    $arSort = array(
        'SORT' => 'ASC'
    );
    // выполняем запрос к базе данных
    $dbResult = CIBlockSection::GetList(
        $arSort,
        $arFilter,
        false,
        $arSelect
    );
    // шаблон ссылки на страницу с содержимым подраздела
    $dbResult->SetUrlTemplates('', $arParams['SECTION_URL']);
    while ($arSection = $dbResult->GetNext()) {
        $arResult['SECTION_DATA']['CHILDS'][] = $arSection;
    }
} else { // это корень, делаем виртуальный раздел
    /*
     * Сначала получаем инфомацию о корневом разделе
     */
    $arResult['SECTION_DATA']['ROOT'] = true;
    // в качестве имени корневого раздела используем имя инфоблока
    $arResult['SECTION_DATA']['NAME'] = $arResult['NAME'];
    // в качестве описания корневого раздела используем описание инфоблока
    $arResult['SECTION_DATA']['DESCRIPTION'] = $arResult['DESCRIPTION'];
    /*
     * А потом информацию о подразделах корневого раздела
     */
    // какие поля подразделов выбираем
    $arSelect = array(
        'ID',
        'NAME',
        'DESCRIPTION',
        'SECTION_PAGE_URL'
    );
    // условия выборки подразделов
    $arFilter = array(
        'IBLOCK_ID' => $arResult['ID'], // идентификатор инфоблока
        'IBLOCK_ACTIVE' => 'Y',         // инфоблок должен быть активен
        'ACTIVE' => 'Y',                // только активные разделы
        'SECTION_ID' => false           // выбираем разделы верхнего уровня
    );
    // сортировка разделов
    $arSort = array(
        'SORT' => 'ASC'
    );
    // выполняем запрос к базе данных
    $dbResult = CIBlockSection::GetList(
        $arSort,
        $arFilter,
        false,
        $arSelect
    );
    // шаблон ссылки на страницу с содержимым подраздела
    $dbResult->SetUrlTemplates('', $arParams['SECTION_URL']);
    while ($arSection = $dbResult->GetNext()) {
        $arResult['SECTION_DATA']['CHILDS'][] = $arSection;
    }
}

Теперь можно заняться шаблоном списка статей блога:

<?php
/*
 * Файл /local/templates/blog/components/bitrix/news/blog/bitrix/news.list/.default/template.php
 */

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$this->setFrameMode(true);
?>

<h2><?= $arResult['SECTION_DATA']['NAME']; ?></h2>

<?php if (!empty($arResult['SECTION_DATA']['CHILDS'])): /* подразделы текущего раздела */ ?>
    <ul>
    <?php foreach ($arResult['SECTION_DATA']['CHILDS'] as $arSection): ?>
        <li><a href="<?= $arSection['SECTION_PAGE_URL'] ?>"><?= $arSection['NAME'] ?></a></li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

<?php if ($arParams['DISPLAY_TOP_PAGER']): /* постраничная навигация вверху */ ?>
    <?= $arResult['NAV_STRING']; ?>
<?php endif; ?>

<section>
<?php foreach ($arResult['ITEMS'] as $arItem): /* список статей блога */ ?>
    <article>
        <div>
            <a href="<?= $arItem['DETAIL_PAGE_URL']; ?>">
                <img src="<?= $arItem['PREVIEW_PICTURE']['SRC']; ?>"
                     title="<?= $arItem['PREVIEW_PICTURE']['ALT']; ?>" />
            </a>
        </div>
        <div>
            <h3><a href="<?= $arItem['DETAIL_PAGE_URL']; ?>"><?= $arItem['NAME']; ?></a></h3>
            <ul>
                <li>Добавлено: <?= $arItem['DATE_CREATE']; ?></li>
                <li>Автор: <?= $arItem['PROPERTIES']['AUTHOR']['VALUE']; ?></li>
            </ul>
        </div>
        <div>
            <p><?= $arItem['PREVIEW_TEXT']; ?></p>
        </div>
        <div>
            <ul>
                <li><span>Просмотров: <?= $arItem['SHOW_COUNTER']; ?></li>
                <li><a href="<?= $arItem['DETAIL_PAGE_URL']; ?>">Читать дальше</a></li>
            </ul>
        </div>
    </article>
<?php endforeach; ?>
</section>

<?php if ($arParams['DISPLAY_BOTTOM_PAGER']): /* постраничная навигация внизу */  ?>
    <?= $arResult['NAV_STRING']; ?>
<?php endif; ?>

Постраничная навигация

Чтобы кастомизировать постраничную навигацию, надо скопировать один из шаблонов системного компонента system.pagenavigation. Все содержимое папки modern копируем в папку pager:

  • bitrix/components/bitrix/system.pagenavigation/templates/modern
  • local/templates/.default/components/bitrix/system.pagenavigation/pager

Удаляем файл стилей style.min.css и создаем файл .description.php:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.navigation/pager/.description.php
 */
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$arTemplateDescription = array(
    "NAME" => GetMessage("SYS_PAGER_TMPL_NAME"),
    "DESCRIPTION" => GetMessage("SYS_PAGER_TMPL_DESCR"),
);
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.navigation/pager/lang/ru/.description.php
 */
$MESS['SYS_PAGER_TMPL_NAME'] = 'Постраничная навигация';
$MESS['SYS_PAGER_TMPL_DESCR'] = 'Шаблон постраничной навигации';

И теперь нам надо отредактировать файл template.php. Распечатаем массив $arResult с помощью функции print_r():

Array
(
    [NavShowAlways] => 
    [NavTitle] => Статьи
    [NavRecordCount] => 11
    [NavPageCount] => 6
    [NavPageNomer] => 3
    [NavPageSize] => 2
    [bShowAll] => 
    [NavShowAll] => 
    [NavNum] => 1
    [bDescPageNumbering] => 
    [add_anchor] => 
    [nPageWindow] => 5
    [bSavePage] => 
    [sUrlPath] => /blog/
    [NavQueryString] => 
    [sUrlPathParams] => /blog/?
    [nStartPage] => 1
    [nEndPage] => 5
    [NavFirstRecordShow] => 5
    [NavLastRecordShow] => 6
)

В нашем случае показывается список из 11 статей, по две статьи на страницу. Всего получается 6 страниц, но на последней странице только одна статья.

  • NavShowAlways — всегда показывать постраничную навигацию
  • NavTitle — название списка элементов, например «Статьи» или «Новости»
  • NavRecordCount — общее количество статей (записей)
  • NavPageCount — общее количество страниц
  • NavPageNomer — номер текущей страницы
  • NavPageSize — количество статей на одну страницу
  • bShowAll — разрешено или нет показывать ссылку «Все статьи»
  • NavShowAll — равен true, если показываются все статьи, без постраничной навигации
  • NavNum — номер постраничной навигации (PAGEN_1, PAGEN_2, …)
  • bDescPageNumbering — использовать или нет обратную постраничную навигацию
  • nPageWindow — количество страниц, которые отображаются в постраничной навигации
  • bSavePage — равна true если в главном модуле отмечена опция запоминать последнюю открытую страницу
  • sUrlPath — путь к странице относительно корня
  • NavQueryString — строка GET-параметров
  • nStartPage — номер первой страницы слева для текущей страницы
  • nEndPage — номер первой страница справа для текущей страницы
  • NavFirstRecordShow — порядковый номер первой статьи на текущей странице
  • NavLastRecordShow — порядковый номер последней статьи на текущей странице

По поводу переменной bSavePage:

// Пример запрещает сохранение в сессии номера последней страницы при стандартной
// постраничной навигации. По умолчанию в сессии запоминается последняя открытая
// страница постраничной навигации. 
CPageOption::SetOptionString("main", "nav_page_in_session", "N");

По поводу переменных nStartPage и nEndPage. Если текущая страница — третья (NavPageNomer=3), а показывается пять ссылок (nPageWindow=5), тогда nStartPage=1, а nEndPage=5:

<a href="...">1</a> <a href="...">2</a> <span>3</span> <a href="...">4</a> <a href="...">5</a>

Если текущая страница — четвертая (NavPageNomer=4), а показывается пять ссылок (nPageWindow=5), тогда nStartPage=2, а nEndPage=6:

<a href="...">2</a> <a href="...">3</a> <span>4</span> <a href="...">5</a> <a href="...">6</a>

По поводу переменных NavFirstRecordShow и NavLastRecordShow. У нас всего 11 статей на 6 страницах, по две статьи на страницу. Если текщая страница — третья, то NavFirstRecordShow=5, а NavLastRecordShow=6. На первой странице будут первая и вторая статьи, на второй странице — третья и четвертая, на третьей странице (текущей) — пятая и шестая.

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.pagenavigation/pager/template.php
 */
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();

$this->setFrameMode(true);

// ссылка на первую страницу
$firstPageUrl = $arResult['sUrlPath'];
if (!empty($arResult['NavQueryString'])) {
    $firstPageUrl = $firstPageUrl.'?'.$arResult['NavQueryString'];
}
// ссылка на последнюю страницу
$lastPageUrl = $arResult['sUrlPath'];
if (!empty($arResult['NavQueryString'])) {
    $lastPageUrl = $lastPageUrl.'?'.$arResult['NavQueryString']
                   .'&amp;PAGEN_'.$arResult['NavNum'].'='.$arResult['NavPageCount'];
} else {
    $lastPageUrl = $lastPageUrl.'?PAGEN_'.$arResult['NavNum'].'='.$arResult['NavPageCount'];
}
?>

<ul>
    <?php if ($arResult['NavPageNomer'] > 1): /* ссылка на первую страницу */ ?>
        <li>
            <a href="<?= $firstPageUrl ?>" title="Первая">«</a>
        </li>
    <?php endif; ?>
    
    <?php for ($i = $arResult['nStartPage']; $i <= $arResult['nEndPage']; $i++): ?>
        <?php
        // ссылка на очередную страницу
        $pageUrl = $arResult['sUrlPath'];
        if (!empty($arResult['NavQueryString'])) {
            $pageUrl = $pageUrl.'?'.$arResult['NavQueryString'].'&amp;PAGEN_'.$arResult['NavNum'].'='.$i;
        } else {
            $pageUrl = $pageUrl.'?PAGEN_'.$arResult['NavNum'].'='.$i;
        }
        ?>
        <?php if ($arResult['NavPageNomer'] == $i): /* если это текущая страница */ ?>
            <li><span><?= $i; ?></span></li>
        <?php else: ?>
            <li><a href="<?= $pageUrl; ?>"><?= $i; ?></a></li>
        <?php endif; ?>
    <?php endfor; ?>

    <?php if ($arResult['NavPageNomer'] < $arResult['NavPageCount']): /* ссылка на последнюю страницу */ ?>
        <li>
            <a href="<?= $lastPageUrl; ?>" title="Последняя">»</a>
        </li>
    <?php endif; ?>
</ul>
/*
 * Файл local/templates/.default/components/bitrix/system.pagenavigation/pager/style.css
 */
.pager {
    overflow: hidden;
    margin: 10px 0;
}
    .pager li {
        list-style: none;
        float: left;
        margin-right: 15px;
    }
    .pager li:last-child {
        margin-right: 0;
    }
        .pager li a {
            display: block;
            width: 26px;
            height: 26px;
            text-align: center;
            background: #395985;
            font-size: 14px;
            line-height: 26px;
            color: #fff;
            text-decoration: none;
        }
        .pager li span {
            display: block;
            width: 26px;
            height: 26px;
            text-align: center;
            background: #e9751f;
            font-size: 14px;
            line-height: 26px;
            color: #fff;
        }

Шаблон готов, давайте его применим. Для этого заходим в настройки компонента и выбираем в выпадающем списке наш шаблон pager:

Теперь постраничная навигация выглядит так:

ЧПУ (SEF)

Идем в настройки компонента и выставляем значения:

  • Каталог ЧПУ (относительно корня сайта): /blog/
  • Страница общего списка: [пусто]
  • Страница раздела: category/#SECTION_ID#/
  • Страница детального просмотра: category/#SECTION_ID#/post/#ELEMENT_ID#/

Теперь URL будут иметь вид:

  • Страница раздела блога: http://www.host.ru/blog/category/3/
  • Страница просмотра статьи: http://www.host.ru/blog/category/3/post/12/

Еще один вариант — использовать символьные коды (транслитерация названия) разделов и элементов инфоблока:

  • Каталог ЧПУ (относительно корня сайта): /blog/
  • Страница общего списка: [пусто]
  • Страница раздела: category/#SECTION_CODE#/
  • Страница детального просмотра: category/#SECTION_CODE#/post/#ELEMENT_CODE#/

Теперь URL будут иметь вид:

http://www.host.ru/blog/category/vtoraya-kategoriya/
http://www.host.ru/blog/category/vtoraya-kategoriya/post/sedmaya-statya-bloga/

Если категории блога имеют вложенность, можно использовать #SECTION_CODE_PATH# вместо #SECTION_CODE#:

http://www.host.ru/blog/category/tretya-kategoriya/dochernyaya-kategoriya/
http://www.host.ru/blog/category/tretya-kategoriya/dochernyaya-kategoriya/post/vosmaya-statya-bloga/

Шаблон отдельной новости

Файл шаблона /local/templates/blog/components/bitrix/news/blog/bitrix/news.detail/.default/template.php

<?php
/*
 * Файл /local/templates/blog/components/bitrix/news/blog/bitrix/news.detail/.default/template.php
 */

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$this->setFrameMode(true);
?>

<article>
    <h2><?= $arResult['NAME']; ?></h2>
    <ul>
        <li>Добавлено: <?= $arResult['DATE_CREATE']; ?></li>
        <li>Автор: <?= $arResult['PROPERTIES']['AUTHOR']['VALUE']; ?></li>
    </ul>
    <?php if (!empty($arResult['DETAIL_PICTURE'])): ?>
        <img src="<?= $arResult['DETAIL_PICTURE']['SRC']; ?>"
            alt="<?= $arResult['DETAIL_PICTURE']['ALT']; ?>"
            title="<?= $arResult['DETAIL_PICTURE']['TITLE']; ?>" />
    <?php endif; ?>
    <div>
        <?= $arResult['DETAIL_TEXT']; ?>
    </div>
    <ul>
        <li>Количество просмотров: <?= $arResult['SHOW_COUNTER'] ? $arResult['SHOW_COUNTER'] : 0; ?></li>
        <li><a href="<?= $arResult['SECTION']['SECTION_PAGE_URL']; ?>">Назад в раздел</a></li>
    </ul>
</article>

И добавим стили для страницы детального просмотра:

/*
 * Файл /local/templates/blog/components/bitrix/news/blog/bitrix/news.detail/.default/style.css
 */
#blog-article {

}
    #blog-article > ul {
        overflow: hidden;
        margin: 10px 0 !important;
        padding: 15px;
        font-size: smaller;
        background: #eee;
        border-radius: 5px;
        list-style: none;
    }
        #blog-article > ul > li:first-child {
            float: left;
        }
        #blog-article > ul > li:last-child {
            float: right;
        }
#blog-article > img {
    float: right;
    padding: 10px;
    border: 1px solid #ddd;
    width: 30%;
    margin-left: 10px;
    border-radius: 5px;
}

Хлебные крошки

Для полноты картины не хватает еще хлебных крошек. Давайте откроем шаблон сайта local/templates/blog/header.php и добавим компонент «Навигационная цепочка»:

$APPLICATION->IncludeComponent(
    "bitrix:breadcrumb",
    "",
    Array(
        "PATH" => "",
        "SITE_ID" => "s1",
        "START_FROM" => "0"
    )
);

Выглядит неплохо, но есть лишний элемент «Блог». Это потому, что второй элемент цепочки — «Блог» — Битрикс добавляет из файла /blog/.section.php, а третий элемент — «Статьи о домашних животных» — добавляет комплексный компонент «Новости». Сейчас файл .section.php имеет вид:

<?php
$sSectionName = "Блог";
$arDirProperties = array();

Внесем исправления:

<?php
$sSectionName = "";
$arDirProperties = array();

Но хотелось бы еще подправить шаблон компонента «Навигационная цепочка». Создадим свой шаблон с именем chain в папке общего шаблона сайта .default:

  • local/templates/.default/components/bitrix/breadcrumb/chain/template.php
  • local/templates/.default/components/bitrix/breadcrumb/chain/style.css

Распечатаем массив $arResult:

Array
(
    [0] => Array
        (
            [TITLE] => Главная страница
            [LINK] => /
        )
    [1] => Array
        (
            [TITLE] => Статьи о домашних животных
            [LINK] => /blog/
        )
    [2] => Array
        (
            [TITLE] => Породы кошек
            [LINK] => /blog/?SECTION_ID=16
        )
    [3] => Array
        (
            [TITLE] => Длинношерстные
            [LINK] => /blog/?SECTION_ID=17
        )
)
<?php
/*
 * Файл local/templates/.default/components/bitrix/breadcrumb/chain/template.php
 */
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

if(empty($arResult)) {
    return '';
}

$items = array();
foreach ($arResult as $item) {
    if (!empty($item['LINK'])) {
        $items[] = '<a href="'.$item['LINK'].'">'.htmlspecialchars($item['TITLE']).'</a>';
    } else {
        $items[] = '<span>'.htmlspecialchars($item['TITLE']).'</span>';
    }
}
$result = '<div>' . implode('&nbsp;&gt; ', $items) . '</div>';

return $result;
/*
 * Файл local/templates/.default/components/bitrix/breadcrumb/chain/style.css
 */
#breadcrumbs {
    border: 1px solid #d1d1d1;
    border-top: 5px solid #395985;
    padding: 15px;
    margin-bottom: 20px;
}
    #breadcrumbs a, #breadcrumbs span {
        font-size: smaller;
    }

Теперь можно использовать этот шаблон:

$APPLICATION->IncludeComponent(
    "bitrix:breadcrumb",
    "chain", /* используем шаблон chain */
    array(
        /* параметры компонента */
    )
);

Поиск: $arResult • CMS • Web-разработка • init.php • Битрикс • Инфоблок • Компонент • Новости • Постраничная навигация • ЧПУ • Шаблон компонента • Навигация

Bitrix Q&A

спросил 17 Март от аноним спросил 28 Янв от аноним спросил 26 Дек, 20 от аноним спросил 02 Ноя, 20 от аноним спросил 24 Авг, 20 от аноним спросил 10 Авг, 20 от аноним

Вывести компонент новостей на страницу в Битрикс- заметка на сайте camouf.ru

Чтобы не усложнять эту статью, не стал вдаваться в тонкие настройки, но вот с такими базовыми параметрами, вы уже сможете начать писать новости на своем Битрикс сайте и они будут с поддержкой ЧПУ..

Итак приступим:

Для начала идем админпанель и создаем Тип инфоблока «новости» — само собой если он у вас уже создан, пропускаем этот шаг.

Создание инфоблока

1. Кликаем в структуре на «Типы инфоблоков» и нажимаем на зеленую кнопку «+ Добавить новый тип»

2. Откроется окно мастера создания инфоблока:

Задаем индентификатор, он должен состоять из латинских букв/цифр и знака подчеркивания
Русское название, в примере я поставил «Мой блог» и английское «My blog»- если вы действительно делаете для новостей пишите «Новости» и «news» (или как вам будет угодно)

3. Далее в дереве «Типы инфоблоков» находим наш свежесозданный инфоблок и кликаем по нему. Далее на зеленую кнопку «+ Добавить инфоблок».

4. Откроется мастер создания инфоблока. Заполняем примерно следующим образом:

  • Символьный код: латинские буквы без пробелов со знаками подчеркивания
  • Выбираем сайт (в случае многосайтовой структуры), если он всего один, все равно выбираем его чекбоксом
  • Название инфоблока— собственно Новости (в примере Записная книжка)
  • Все остальное оставляем как есть, конечно если понимаете что делаете можно настроить ЧПУ и прочие тонкие параметры, но в простом варианте заработает со всем по умолчанию.

5. Переходим на закладку «Доступ» и выбираем в параметре «Для всех пользователей»- Чтение, чтобы новости после вывода на сайт были доступны для просмотра.

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

Выводим новости на страницу в Битрикс.

Создаем новый раздел (или страницу), назовем его Новости. Не буду вдаваться в подробности, по его созданию, в крайнем случае после нажатия кнопки «Создать раздел»- запустится пошаговый мастер создания раздела, который более чем понятен. Достаточно просто заполнять поля и нажимать «Далее».

В итоге вы придете вот к такому визуальному редактору, все что вы напишите или выведете вместо фразы «Text here…» и будет отображено на сайте в этом разделе.

Удаляем «Text here…» нафиг, раскрываем слева структуру (кликая на плюсики если кто не понял)
+Контент- +Статьи и новости
И перетягиваем самый первый компонент прямо на страницу (см. картинку):

Далее два раза кликаем по иконке компонента на странице, откроется мастер настройки компонента.

Итак пишу сверху вниз как заполнить поля:

  1. Шаблон компонента: выбираем .default если у вас еще нет готового шаблона для компонента новостей
  2. Выводить дату элемента: оставляем если нужно выводить дату публикации новости. 
  3. Выводить изображение для анонса: оставляем если нужно выводить картинку в анонсе. 
  4. Выводить текст анонса: аналогично с текстом. 
  5. Отображать панель соц. закладок: если нужны кнопки лайк социальных сетей то ставим галочку.
  6. Тип инфоблока: выбираем из выпадающего списка тот самый тип что создавали выше (см. выше пункт 2).
  7. Инфоблок— выбираем созданный ранее (см. выше пункт 4 начала статьи) инфоблок, в принципе он должен быть у вас всего один, но в любом случае выбираете именно тот что создавали в этом типе.
  8. Количество новостей на странице: по умолчанию 20, ставите что заблогорассудится. Это колличество которое будет выводится на странице за один раз, если больше- появится постраничная навигация. Пример на моем сайте, в разделе макеты выставлено 26 новостей (да там тоже выведено через компонент статьи и новости)
  9. Далее все пропускаем до пункта Включить поддержку ЧПУ (если оно вам конечно нужно), ставим чекбокс и в поле Каталог ЧПУ (относительно корня сайта): вписываем url раздела в котором выводятся новости, для примера у этого блога стоит /blog-note/ остальные поля оставляем как есть. Само собой это простая настройка для ЧПУ, более тонко вы сможете ее настроить почитав документацию. Однако работать новости итак будут.
  10. Все остальное до конца, оставляем как есть и нажимаем снизу слева, зеленую кнопку сохранить. Снова увидем  (без красной стрелки конечно)

Еще раз нажимаем сохранить снизу слева. Все инфоблок новостей Битрикс создан, настроен и выведен на сайт. 

Надеюсь все понятно и доступно. 

Повторюсь еще раз- чтобы не усложнять это обьяснение, не стал вдаваться в тонкие настройки, но вот с такими базовыми параметрами, вы уже вполне сможете начать писать новости на своем Битрикс сайте и они будут с поддержкой ЧПУ.

Просмотров: 57570 | Комментариев: 8

Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки

Почему «Раздел не найден» на «Битрикс» и как его найти?

Это прямо как в том анекдоте: чем бы зубы не чистил, как бы рот не полоскал, а этот неповторимый устойчивый вкус все возвращается и возвращается. Дворники двигал? Двигал. Протекторы пинал? Пинал. Капот открывал? Открывал. А раздел все равно не найден. Мы перечислим причины, чаще других вызывающие эту ошибку.

1. Инфоблоку назначены права «Чтение» для всех пользователей?

Если нет, выставьте права.

 
2. Папке раздела назначены права «Чтение» для всех пользователей?

Если нет, выставьте права.

 

3. В файле раздела index.php назначен верный номер инфоблока?

Проверьте значение переменной «IBLOCK_ID»./символьный код иноблока/#

Компонент:   bitrix:catalog

Файл:              /имя папки раздела/index.php

Напомним, что символьный код инфоблока должен совпадать с именем папки раздела.

Если правила нет или оно имеет другой вид, создайте или отредактируйте его.

——————-

Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!

Назад в раздел

Обновление SEO умного фильтра: Автоматическое продвижение всех страниц!

Александр Дудаков

03 июня 2021

Мы в Сотбит продолжаем активно развивать один из ведущих модулей Маркетплейса «SEO умного фильтра». В этой статье поговорим, что нового мы добавили в версии модуля 2.2.0.


В первую очередь работаем над тем, чтобы SEO умного фильтра был максимально функциональным решением для владельцев интернет-магазина. И важно не забывать об удобстве пользования этим инструментом. В обновлении 2.2.0 мы реализовали следующий функционал:

  • Добавление меток Open Graph и Twitter Cards
  • Выбор категории при генерации ЧПУ
  • Сортировка тегов по количеству товаров
  • Дополнительные функции для метаинформации
  • Проверка уникальности URL при генерации ЧПУ
  • Выбор разделителя при транслитерации
  • Вывод количества товаров в теге
  • Переход по ссылке ЧПУ из админки на сайт
  • Настройка ненастроенных страниц фильтра
  • Поиск по разделам

Давайте разберем каждое из нововведений по порядку. Поехали!

1Open Graph и Twitter Cards

В настройках условий мы реализовали возможность добавлять теги Open Graph, чтобы ваши ссылки в соцсетях выглядели привлекательно и имели больший показатель кликабельности (CTR).

Сейчас технологию Open Graph поддерживают большинство популярных соцсетей и мессенджеров:

  • ВКонтакте
  • Facebook
  • Twitter
  • Pinterest
  • Viber
  • Telegram
  • WhatsApp
  • Skype

Какие теги Open Graph вы можете задать:

  • og:type — тип основного содержимого страницы (например, видео или статья)
  • og:locale — для задания языка и региона
  • og:site_name — имя сайта для отображения в предпоказе
  • og:url — канонический URL
  • og:image — изображение для предпоказа
  • og:title — заголовок
  • og:description — описание страницы


Не забыли и о Twitter Cards — механизме управления дополнительной информацией о вашей ссылке в Twitter.

Для привлекательных и кликабельных карточек ссылок в Twitter мы добавили следующие теги в настройке условия:

  • twitter:card — вид контента
  • twitter:title — заголовок страницы
  • twitter:description — описание страницы
  • twitter:image — ссылка на изображение, которое отобразится в предпоказе

2Выбор категории при генерации ЧПУ

Забудьте о длинных списках ЧПУ в настройках SEO умного фильтра. Мы добавили возможность выбора категории при генерации ЧПУ. Это позволит объединять в одной папке url, имеющие общие признаки.


Например, разделите по папкам ЧПУ всех категорий товаров и быстро находите нужный url адрес.

3Сортировка тегов по количеству товаров и отображение в публичной части

Теперь на странице теги могут сортироваться по количеству товаров: на первых местах будет те теги, которые содержат наибольшее количество товаров.

Помимо этого вы можете разместить для клиентов информацию о количестве товаров, которые относятся к этому тегу.

4Работа с ЧПУ

Теперь, если вы пытаетесь сгенерировать страницу по условию, а URL в ЧПУ совпадает с тем адресом, что уже существует, поле останется пустым.

По желанию вы можете задать собственный символ, который будет заменять пробел в URL адресе. По умолчанию используется нижнее подчеркивание: «_».

Нужно проверить сгенерированную страницу по условию? Теперь достаточно просто нажать на ЧПУ — и вы окажетесь в публичной части сайта.

5Ненастроенные страниц фильтра

Вам необходимо создать отдельные условия только для некоторых страниц интернет-магазина? Но, что делать с остальными?

Задайте метаинформацию для остальных страниц вашего интернет-магазина в новом разделе «SEO ненастроенных страниц»:

  • title
  • keywords
  • description
  • Заголовок раздела
  • Название страницы в хлебных крошках
  • Верхнее, нижнее и дополнительное описание




6Реализован поиск по разделам

Настраивать привязку условий стало еще удобнее! Выберите нужный раздел для привязки через новое поле «Фильтр для разделов»: просто введите название нужного раздела.


7Прокачайте свой интернет-магазин на Битрикс!

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

Еще не работали с модулем? Попробуйте бесплатно! А техническая поддержка Сотбит поможет сделать это максимально легко.

Возникли вопросы о модуле? Просто свяжитесь с нами удобным способом.

Полный список обновлений

Новые функциональные возможности:

— Реализована возможность добавлять метатеги opengraph и twitter;
— Реализована возможность выбора категории при генерации ЧПУ;
— Добавлена сортировка тегов по количеству товаров;
— Добавлены дополнительные функции для метаинформации;
— Добавлена проверка уникальности Битрикс URL при генерации ЧПУ;
— Реализована возможность выбора разделителя при транслитерации;
— Реализована настройка вывода количества товаров в теге;
— Добавлен переход по ссылке ЧПУ из административной панели сразу на сайт;
— Реализована возможность настройки ненастроенных страниц фильтра;
— Реализован поиск по разделам.

Оптимизация и исправления:

— Исправлена ошибка автоматической перегенерации основной карты сайта;
— Оптимизирована генерации карты сайта сео;
— Оптимизирована работа с кодами emoji при автогенерации условий;
— Оптимизирована работа с числовыми значениями;
— Исправлена ошибка изменения названия для основной карты сайта;
— Прочие мелкие правки.

Настроить кастомный умный фильтр Битрикс

  • Цена договорная

    Услуги художника для книги

    Здравствуйте. Меня зовут Юрий. Написал детскую книгу, теперь хочу добавить несколько иллюстраций (4-5) и оформить обложку. Книжка в стиле фентези, рассчитанная на подростковый возраст. Если возьмётесь…

    Юрий

  • Цена договорная

    Разработка логотипа

    Необходимо разработать логотип для бренда одежды (женская, детская, возможно в последствии будет и мужская). Соответственно, основные критерии: универсально, лаконично, стильно, дорого. Название направлю…

    Екатерина К.

  • 3 000 руб

    Создать меню для кафе А3

    Создать меню для кафе на формате а3 плейсмет. стиль комиксы. весь текст предоставлю .

    Тигран Н.

  • Цена договорная

    Сделать файл -предметы мебели более «живыми»

    Есть готовый файл- он невыразительный, размеры сохраняем, но делаем &quot; вкусным&quot; и классным. Чтобы взглянув не возникало вопроса : что это?

    Александр

  • Цена договорная

    Нарисовать мобильную версию веб-сайта

    Мы даём исходный файл — блок схему, в которой указаны блоки взаимодействия пользователя с приложением. Требуется построить логическое взаимодействие с приложением. Дедлайна нет, единственное замечание…

    Дмитрий С.

  • Как не развивать проект на Битрикс / Судо Null IT News

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

    Здесь я постараюсь не заострять внимание на стандартной «наихудшей практике» при программировании на PHP, такой как наплевательское отношение к выбору имен переменных и функций, ненужные запросы к базе данных в цикле, отсутствие пользователя проверка данных в формах, игнорирование комментариев и тому подобное. Я постараюсь коснуться моментов, характерных для разработки на Битрикс, что в дальнейшем позволит вам избежать обид и ругательств в свой адрес со стороны программиста, который попал под сопровождение вашего кода. И да, довольно часто этот программист окажется через год, а то и больше, когда совсем забываешь, зачем сюда вставил тот или иной костыль.

    «Напишите код так, как будто его будет сопровождать жестокий психопат, который знает, где вы живете» (c) Джон Ф. Вудс
    Первое и самое важное, на мой взгляд, это ради всего, что есть святой, используйте локальную папку . Это просто жизненно важно при использовании системы контроля версий — все, что вам нужно, это добавить папку / bitrix / в исключения. Все. Далее практически вся разработка ведется только в нем. Это значительно упрощает поиск необходимых файлов и компонентов в дальнейшем, помогает не загромождать репозиторий ненужными файлами и в целом придает дереву проекта более аккуратный, «человеческий» вид.

    Не изменять ядро ​​. Даже если вы уверены, что он не будет обновляться. Даже если быстрее. Даже если вам лень. Забудьте эту мысль, как дурной сон. Если вам нужно изменить логику стандартного компонента, перенесите его в новое пространство имен / local / components / modify / и работайте с ним. То же касается модулей, гаджетов и активностей бизнес-процессов.

    Не засорять файл init.php . Объедините функции для работы с конкретным модулем или функциональностью в класс, запишите весь этот класс в отдельный файл и в init.php просто подключите эти файлы и установите обработчики событий. Я встречал файлы init.php размером 500Кб, где в беспорядок были замешаны функции, определение констант, классов и инициализация обработчиков. Конечно, когда мне пришлось разбираться в этих файлах, я проклял всех своих предшественников.

    Следующий пункт не распространяется на случай разработки готовых решений для Marketplace, когда цель — сделать максимально настраиваемый функционал из публичной части для конечного пользователя. Если вы работаете над конкретным проектом, над конкретным ТЗ — , вам не следует пытаться сделать единый шаблон для компонента на все случаи жизни .Лично я придерживаюсь философии — лучше иметь несколько простых шаблонов, используемых для разных целей, чем один универсальный, но в котором сам черт ногу сломает. Конечно, в каждом конкретном случае нужно отталкиваться от того, что есть — техническое задание, варианты реализации и тому подобное, но все же не стоит забывать о «Бритве Оккама». В качестве примера приведу один проект лизинговой компании, которой довелось управлять. Сам проект, конечно, был реализован ужасно, он вызывал настоящий ужас на страницах раздела каталога услуг.Каждый из пяти разделов имел свой макет, в котором как положение блоков на странице, так и наличие некоторых из них были разными. Причем для всех пяти страниц использовался один шаблон с кучей if-else, дублированием вызовов компонентов, подключением стилей и скриптов, которые к тому же периодически конфликтовали между собой. В итоге огромный файл, в котором разбираться «без полулитра» было похоже на смерть. Хотя, казалось бы, нельзя было сделать 5 разных шаблонов и не создать на ровном месте сложностей?

    Используйте API .Не изобретайте велосипеды там, где это не нужно. Используйте документацию — весь продукт достаточно хорошо описан, а также подробно каждую функцию можно посмотреть на bxapi.ru.

    Избегайте прямых запросов к базе данных . Это частный случай предыдущего пункта — используйте API. Грубые, незащищенные запросы могут привести к повреждению, потере или даже компрометации данных.

    Не используйте компоненты ЧПУ из корня сайта . Последствия обычно довольно печальны, потому что ЧПУ использует файл-обработчик адресов, пытаясь использовать его из корня, легко ломает адресацию других компонентов, а также 404 страницы.Ничего плохого не произойдет, если статьи, которые вы адресовали, относятся к папке / article /, а товары — относительно / catalog /.

    Соедините css и js с помощью API. До сих пор везде встречаю подключение скриптов и стилей с помощью html-тегов. Используйте объект класса \ Bitrix \ Main \ Page \ Asset и функции addJs () и addCss (). Это позволит объединить файлы и впоследствии кэшировать их одним щелчком флажка в настройках основного модуля.

    И, наконец, ошибка касается не только Битрикс, но слишком часто я начинал сталкиваться с проблемами, связанными с ней. Проверить наличие пустого массива с результатами выборки . Например, в последний раз я столкнулся с этой проблемой при работе с одним интернет-магазином. Жалоба: страницы иногда загружаются по 16 секунд. С чем связано — непонятно. Методом проб и ошибок выяснил, что неприлично долго загружаются страницы только тогда, когда корзина пуста. Казалось, с чего бы? Как оказалось, при наведении курсора в корзине появлялось всплывающее окно, в котором отображались изображения товаров, помещенных в корзину.Ну что сделал предыдущий разработчик? Я взял результат работы компонента «маленькая корзина» и в файле result_modifier.php сделал вызов GetList () товаров для отбора изображений фильтром из массива идентификаторов товаров, затем из результатов выбора, добавить изображение src в массив соответствующего товара. В результате, когда в корзине не было товаров, фильтр оставался пустым, и в выборку попал весь каталог товаров. Ну, тогда цикл для каждого и … у нас есть то, что есть.Понятно, что на этапе разработки с тестовыми 15 изделиями это было незаметно, а проблемы возникали уже в боевых условиях. Хотя, казалось бы, сколько стоит поставить чек на пустой ($ arResult [‘ITEMS’]) …

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

    FANUC будет официальным партнером ИННОПРОМ.МЕТАЛЛООБРАБОТКА в 2020

    ИННОПРОМ в четвертый раз включит в свои рамки специализированную выставку ИННОПРОМ.МЕТАЛЛООБРАБОТКА . Выставка разместится в Павильоне №2 Екатеринбург-ЭКСПО IEC и будет открыта для посещения 4 полных дня: 7-10 июля 2020 года. Официальным партнером выставки впервые станет мировой лидер. в области решений для промышленной автоматизации — FANUC Corporation of Japan.

    Павильон №2 площадью 9000 квадратных метров будет посвящен ознакомлению посетителей выставки с последними достижениями промышленной робототехники и новейшими решениями для модернизации производственных линий. ИННОПРОМ.МЕТАЛЛООБРАБОТКА продемонстрирует полноразмерные образцы продукции, станки, роботизированные системы, приборы, профессиональное программное обеспечение и многое другое.

    Участников выставки ИННОПРОМ.МЕТАЛЛООБРАБОТКА 2020:

    • FANUC
    • Робототехнические системы ABAGY
    • Dassault Systèmes
    • KUKA
    • HARTUNG
    • OKUMA
    • Пумори
    • TL Technology и др.

    Качество профессиональной аудитории, количество прототипов продукции робототехники и машиностроения, представленных на стендах выставки, с каждым годом растет.В 2019 году количество прототипов увеличилось на 30% по сравнению с 2018 годом. Если в 2018 году таких экспонатов было 813, то в 2019 году было выставлено около 1000 прототипов.

    Фотография оборудования FANUC на выставке 2019

    ИННОПРОМ.МЕТАЛЛООБРАБОТКА 2020 посетят профессионалы отрасли, руководители корпоративных департаментов, профессиональные байеры, руководители производственных подразделений промышленных компаний.Свое участие уже подтвердили более 20 делегаций, в том числе профессионалы и технологи. Как обычно, деловая программа ИННОПРОМ будет включать более 10 секций по отраслевым вопросам.

    Александр Яшкин, Генеральный директор FANUC в России:

    «FANUC — лидер в области промышленной автоматизации, пионер в разработке систем ЧПУ, глобальный промышленный партнер движения WorldSkills.Доля FANUC на мировом рынке систем ЧПУ составляет около 65%. Наша компания гордится тем, что является официальным партнером специализированной выставки ИННОПРОМ-2020 ИННОПРОМ.МЕТАЛЛООБРАБОТКА, так как понимает стратегическую важность этого мероприятия для развития промышленности России. Здесь представлены последние мировые разработки в области машиностроения, производства механических систем и разработка концепции Индустрии 4.0. На стенде FANUC будут представлены новейшие решения нашей компании, отражающие мировые тенденции отрасли, в том числе металлообрабатывающее оборудование FANUC.Главными звездами нашего стенда станут партнеры FANUC — российские компании-интеграторы, которые представят свои уникальные инженерные проекты. До встречи на выставке! »

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


    Битрикс получил статус сертифицированного партнера в партнерской программе Microsoft

    Битрикс, Inc. специализируется на разработке Системы управления контентом (CMS) и портальные решения становятся Microsoft Сертифицированный партнер.

    Александрия, Вирджиния — 4 апреля 2007 г. — Битрикс, Inc., специализирующаяся на разработке систем управления контентом (CMS) и Portal Solutions становится сертифицированным партнером Microsoft.

    Компания Bitrix, Inc. объявила о получении статуса Certified в Партнерской программе Microsoft с компетенцией в области ISV / программных решений, признание опыта и полного влияния Битрикс на рынке технологий. Как сертифицированный партнер Microsoft «Битрикс» доказал, что способен удовлетворить потребности клиентов, предлагая высококачественные решения для различных видов предприятия.

    Для получения статуса сертифицированного партнера Microsoft В рамках программы «Битрикс» получила квалификацию в категории «Программные решения независимых поставщиков программного обеспечения» с свое решение для управления веб-контентом — Bitrix Site Manager. Veritest, компания уполномочен Microsoft на проведение сертификации и проверки, провели тестирование программного обеспечения Битрикс.

    1С-Битрикс: Управление сайтом, комплексный контент решение для управления малым, средним и крупным бизнесом, обеспечивает поддержка Microsoft SQL Server и Microsoft SQL Server Express Edition, а также а также другие движки баз данных.

    Стать сертифицированным партнером — значит достичь Microsoft Компетенции, быть признанным надежным и опытным работником Технологии Microsoft, получите доступ ко многим ресурсам Microsoft.

    «Команда« Битрикс »очень рада получить Microsoft признание его знаний и опыта в веб-технологиях. У нас есть планируют выпустить новый продукт .NET в ближайшее время и готовы зарабатывать больше компетенций от Microsoft, чтобы предлагать более передовые решения одобрено Microsoft », — констатирует Сергей Рижиков, генеральный директор« Битрикс ».

    Партнерская программа Microsoft была запущена в декабре. 2003 г. и свидетельствует о неизменном стремлении Microsoft к успеху партнеров. по всему миру. Программа предлагает единую интегрированную структуру партнерства, которая признает опыт партнеров, вознаграждает за общее влияние, оказываемое партнерами в рынок технологий, и приносит больше пользы, помогая партнерам бизнес будет успешным.

    О Bitrix
    Bitrix, Inc.специализируется на разработке систем управления контентом (CMS) и портала решения для управления веб-проектами и многофункциональными информационными системами на интернет. Специалисты Битрикс, приложив немалые усилия и умение, разработала программу «Битрикс: Управление сайтом» — отдельное приложение, которое предоставляет комплексные веб-решения. Корпорация программных технологий была основана в 1998 году. группой IT-специалистов. Битрикс продолжает удерживать лидирующие позиции в рынок веб-разработки, всегда предлагая высококачественные решения для своих клиенты и партнеры.
    Подпишитесь на информационный бюллетень ITWIRE UPDATE здесь

    ТОРЖЕСТВЕННОЕ ОТКРЫТИЕ МАГАЗИНА ITWIRE

    Долгожданный магазин iTWire теперь открыт для наших читателей.

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

    PLUS К крупным брендам относятся: Apple, Lenovo, LG, Samsung, Sennheiser и многие другие.

    Товар доступен для любой страны.

    Мы надеемся, что вам понравится и вы найдете ценность в долгожданном магазине iTWire.

    ВОЙДИТЕ В МАГАЗИН СЕЙЧАС!

    ПРЕДСТАВЛЯЕМ ITWIRE TV

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

    Мы работаем с вами, чтобы разработать сообщение и провести интервью или обзор продукта безопасным и совместным способом.В отличие от других каналов Tech YouTube, мы создаем историю вокруг вашего сообщения и размещаем ее на главной странице ITWire со ссылкой на ваше сообщение.

    Кроме того, ваше сообщение интервью может отображаться на 7 различных экранах сообщений на нашем сайте iTWire.com для привлечения трафика и читателей к вашему видеоконтенту и загрузкам. Это может стать важной возможностью для вашего бизнеса по привлечению потенциальных клиентов.

    Мы также предоставляем 3 видео за одну запись / сеанс, если вам нужно, чтобы у вас была серия видеороликов для продвижения среди ваших клиентов.Ваш отдел продаж может добавлять ваши электронные письма к материалам о продажах и в нижний колонтитул своих торговых и маркетинговых писем.

    Следите за последними техническими новостями, обзорами, интервью, обзорами, рекламными акциями и событиями. Плюс забавные видео от наших читателей и клиентов.

    СМОТРЕТЬ ЧТО НА ITWIRE TV СЕЙЧАС!

    Все новости Bluffton Icon | The Bluffton Icon

    Все новости Bluffton Icon | Значок Блаффтона

    Именно здесь Блаффтон получает новости!

    Вы здесь

    Размещенно от админа 16 июля 2021 г. — 6:00

    Карен Киер
    Фармацевт от имени группы ONU HealthWise

    Что в выкройке? Есть ли в основе закономерностей наука? Раковина улитки — отличный пример того, как природа содержит закономерности, которые можно объяснить математикой.Паттерн, обнаруженный в раковине улитки, можно объяснить феноменом, известным как числа Фибоначчи. Кроме того, наш мозг естественным образом пытается объединить информацию, чтобы сформировать шаблоны для быстрого принятия решений. При многократном обращении к информации наш мозг пытается упростить решения, формируя шаблоны.

    Размещенно от админа 16 июля 2021 г. — 6:00

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

    Женщин приглашают на кружок в субботу , 31 июля с 10:00 до полудня в UCC Сент-Джонс в Блаффтоне, штат Огайо (223 W. College Avenue).

    Организаторами

    Circle являются Кэтрин Беккет и Корри Рид, выпускники программы Wellstreams по духовному формированию и искусству духовного руководства.

    Размещенно от админа 16 июля 2021 г. — 6:00

    48-летняя Чассити Линн Галлант из Таллахасси, Флорида, ранее проживавшая в Блаффтоне, неожиданно скончалась 8 июля 2021 года в своей резиденции.Чассити родился 16 сентября 1972 года в Лиме в семье Майкла и Робина (Уильямса) Ромика. 11 ноября 1995 года она вышла замуж за Денниса Галланта, который выжил.

    Чессити окончила среднюю школу Блаффтона, а затем получила степень бакалавра образования в колледже Блаффтон. Она была учителем первого класса в дневной школе Роберта Ф. Манро в Куинси, Флорида. Чассити любила читать, путешествовать и проводить время со своей семьей.

    Размещенно от админа 16 июля 2021 г. — 6:00 Торговцы и организации

    Bluffton проводят специальные «Дни открытий» в четвертую субботу месяца до сентября 2021 года.

    24 июля тема мероприятия — «Corn-a-thon». В участвующих местах покупатели могут заработать билеты для розыгрыша призов. Торговая палата района Блаффтон отметит торжественное открытие ресторана Bluffton Lantern Nutrition, 142 E. Jefferson (Tommy’s Plaza) церемонией перерезания ленточки в полдень. Компании и общественные группы также планируют семейные мероприятия в течение дня.

    Добавил админ 15 июля 2021 г. — 6:00 утра

    Торговая палата района Блаффтон встретит нового члена-инвестора Bluffton Lantern Nutrition церемонией перерезания ленточки в полдень в субботу, 24 июля.

    Новый магазин на Tommy’s Plaza, 142 E Jefferson, предлагает «лучшие на вкус здоровые смузи и здоровые фруктовые энергетические напитки». Владельцы Дженнифер и Джеффри Путман также проведут торжественное открытие с расширенным графиком работы с 9:00 до 15:00. в день перерезания ленты.

    За дополнительной информацией обращайтесь к Дженнифер и Джеффри Путман, facebook.com/blufftonlanternnutrition, (419) 236-5568.

    Добавил админ 15 июля 2021 г. — 6:00 утра

    Отзыв Роберта Маккула

    «Сюжет» (ISBN 978-1250790767) — все о смягчающих обстоятельствах рождения.

    Новый роман Джин Ханф Корелиц («Дьявол и Вебстер») — это книга в книге. Все дело в том, как матери и дочери начинают считаться друг с другом, когда девочка подрастает и хочет покинуть родительский дом. Все дело в обстоятельствах, в которых дети не хотели рождаться. Это резкое исследование жизненных потребностей матери и дочери и способов их удовлетворения.

    Страниц

    Дженна Эллис Биография, возраст, муж, религия, прокурор, Трамп 2020, CNN, Fox News

    Биография Дженны Эллис — Кто такая Дженна Эллис

    Дженна Эллис — поверенный по конституционному праву и старший советник по правовым вопросам кампании Трампа 2020.Она также является автором и юридическим аналитиком в эфире Moody Bible Institute Radio и участником конфиденциального блога Beltway на сайте Washington Examiner.

    Дженна Эллис Возраст

    Фактический возраст Эллис неизвестен.

    Дженна Эллис Религия

    Она христианка. Она пыталась внести свой вклад в библейское мировоззрение о праве, в частности о конституционном праве. В декабре 2015 года она опубликовала «Правовая основа моральной конституции: руководство для христиан по пониманию конституционного кризиса в Америке» (WestBow Press 2015).В ее книге приводится аргумент, основанный на Библии, в котором обсуждается, почему все законы изначально нравственны, а также юридические причины, по которым христиане могут защищать библейскую мораль в рамках конституционного права.

    Дженна Эллис Образование

    Имеет степень бакалавра гуманитарных наук в области технической журналистики и уголовного правосудия Университета штата Колорадо. Она получила степень доктора права в юридическом факультете Университета Ричмонда в 2011 году.

    Дженна Эллис Муж

    Эллис женат на Дэвиде Ривсе, он управляет сетью онлайн-вещания, посвященной продвижению креационизма, и часто вносит видеосюжеты в ультраправый заговор. сайт WorldNetDaily.Он также сторонник Трампа.

    Дженна Эллис Адвокат

    Дженна Эллис — адвокат по конституционному праву и старший юрисконсульт кампании Трампа 2020. Она бывший прокурор и адвокат по уголовным делам. Она имеет лицензию на ведение федеральной практики и участвовала в судебных процессах от имени Государственного департамента США и Министерства военно-морского флота.

    Она начала свою карьеру в офисе генерального прокурора Колорадо в качестве клерка. Позже она стала поверенным по контракту в U.С. Государственный департамент. В 2013 году она стала заместителем окружного прокурора Колорадо, где проработала год.

    Дженна Эллис Трамп Юрисконсульт

    В ноябре 2019 года президент Дональд Трамп назначил ее старшим юрисконсультом в кампании Трампа 2020.

    Утверждается, что Трамп начал искать ее адвоката по поводу своего импичмента после того, как увидел, как она защищала его в телепрограммах. Она даже посоветовала ему составить письмо против импичмента спикеру палаты Нэнси Пелоси.

    После того, как письмо было опубликовано, она сказала PJ Media; «Я просмотрел его вчера вечером, но это 100% он. Это идеально. Это все, что думают американцы об этой неконституционной афере с импичментом. Как сказал президент, очень важно зафиксировать правду, поскольку ему было отказано в значимом вкладе и надлежащей правовой процедуре в Палате представителей «.

    До того, как стать старшим юрисконсультом президента, она была членом консультативного совета Трампа по СМИ в 2020 году, группы теле- и радиосуррогатов президента и кампании, которую курировал Марк Серрано по связям с общественностью кампании Трампа.

    Дженна Эллис Критик Трампа

    До того, как присоединиться к команде юристов Трампа, Дженна не всегда поддерживала Трампа, поскольку в начале 2016 года она была одним из его самых жестких критиков и решительно выступала против его кандидатуры.

    Согласно обзору CNN KFile, она неоднократно называла тогдашнего кандидата Трампа «идиотом», который был «грубым и высокомерным», и «хулиганом», словам которого нельзя было доверять как фактическо точным. Она назвала его комментарии о женщинах «отвратительными» и предположила, что он не «настоящий христианин».»

    В марте 2016 года она разместила на Facebook; «Я мог бы работать полный рабочий день, просто отвечая на смехотворно нелогичные, непоследовательные и вопиюще глупые аргументы в пользу Трампа, но вот в чем дело: его сторонники НЕ ЗАБОТИТСЯ о фактах или логике. Они не ищут истины. Трамп, вероятно, мог бы застрелить кого-нибудь посреди Нью-Йорка и не потерять поддержку. И это совокупная причина того, почему эта нация находится в такой ужасной форме: у нас нет искателей истины; у нас есть нарциссы ».

    18 ноября 2020 года в заявлении для CNN она заявила, что с тех пор изменила свое мнение о Трампе, поскольку она узнала, что тогда она была совершенно не права насчет Трампа.

    «Ни для кого не секрет, что я не поддерживал Дональда Трампа в начале первичного процесса в 2015 году, как многие другие, кто его не знал, и я всегда был откровенен со своим мнением и всегда признавал, когда мое мнение изменения. Я рад узнать, что тогда я был полностью неправ насчет Трампа, и я говорил это снова и снова публично, поскольку я видел, как он сдерживал свои обещания, а затем, в конце концов, познакомился с ним лично.

    Я ценю KFILE, который ясно показывает через прошлые утверждения, что я думаю сам, и что мое мнение было изменено на основании фактов и личных знаний.Президент Трамп — искренний христианин, лучший президент в современной истории, он дал и сдержал свои обещания, данные американскому народу. Я горжусь тем, что поддерживаю его и его цели в отношении будущего этой страны и всех ее граждан ».

    В апреле 2016 года, выступая в радиоинтервью, она сказала: «Почему мы должны возложить нашу высшую должность в Америке на человека, который постоянно ходит туда-сюда и которому действительно нельзя доверять, чтобы он был последовательным или точным в чем-либо».

    Дженна Эллис Fox News

    Она регулярно работает на Fox News и Fox Business, участвует в Newsmax и пишет для Fox News, Washington Examiner и Daily Wire.

    Дженна Эллис Вашингтонский экзаменатор

    Эллис — участник конфиденциального блога Beltway на сайте Washington Examiner.

    Дженна Эллис ЛГБТ

    Дженна является анти-ЛГБТ-сообществом, ее книга «Правовая основа моральной конституции» жалуется, что Верховный суд «сказал ЛГБТ-сообществу, что их гомосексуальный образ жизни был не только законным в частном порядке, но и морально подтвержден открыто через государственное признание и общественное празднование и поэтому ценится так же, как и гетеросексуальные союзы.Это ответ на решение Верховного суда 2015 года по делу Обергефелл против Ходжеса, которое узаконило однополые браки по всей стране.

    В 2016 году после массового расстрела, в результате которого 49 человек погибли и 53 получили ранения, в ночном клубе для геев Pulse в Орландо она написала колонку, в которой осудила резню, но оплакивала, что ее использовали для достоинства гомосексуализма.

    «Я разочарован, что консерваторы соглашаются с программой ЛГБТ. Позвольте мне внести ясность — стрельба в Орландо была абсолютно ужасной и трагичной.Но в ответ на эту трагедию не должно быть охвата и защиты прав геев ». Статья называлась «Две ошибки не делают ЛГБТ правым».

    Брайан Стелтер Дженна Эллис — Дженна Эллис CNN

    14 июня 2020 года, когда она появлялась на CNN в интервью с Брайаном Брайаном Стелтером, ее спросили об иске кампании Трампа против CNN, письме о прекращении действия, подписанном Эллисом с требованием CNN отказывается и приносит свои извинения за опрос SSRS, показывающий, что Трамп отстает от демократа Джо Байдена на 14 пунктов, а также за субботний твит Трампа, призывающий подписчиков Comcast (Concast) сменить провайдера, потому что он владеет MSNBC и NBC News.

    Эллис утверждал, что твит Трампа Comcast был «мнением». «Он тоже гражданин. Нет, он первый, кто действительно использует свою платформу в качестве гражданина Америки, чтобы иметь возможность вызывать фальшивые новостные СМИ ». Стелтер вмешался: «Вы понимаете, что когда-нибудь пожалеете об этом, верно? Когда-нибудь вы пожалеете об этом, когда ваши дети и внуки оглянутся на это время, и вы будете использовать оскорбления и клеветы, такие как «фальшивые новости», чтобы навредить новостным агентствам ».

    Эллис сказала, что не пожалеет о своих комментариях, добавив: «Ты не пытаешься делать свою работу — ты не журналист, Брайан.Вы активист. Это проблема. У вас есть повестка дня, и ваша повестка дня — анти-Трамп. Американский народ видит это насквозь и очень благодарен за то, что этот президент, наконец, привлек к ответственности фейковые СМИ, потому что вы активисты. Вы не сообщаете факты и правду ».

    «Вы понимаете, что когда-нибудь пожалеете об этом, верно?» — Брайан Стелтер — юрисконсульту кампании Трампа Дженне Эллис pic.twitter.com/IRcKke3Qqu

    — Аарон Рупар (@atrupar) 14 июня 2020 г.

    Когда консервативный критик Трампа Том Николс процитировал часть интервью, в которой Стелтер сказал, что Эллис будет сожалею об этом, она обвинила его в поддержке «сексистской риторики» — любопытное обвинение, повторенное в заявлении кампании Трампа.Она также пыталась опровергнуть опрос CNN, сославшись на другой опрос.

    Есть спины, а затем пытаются опровергнуть национальный опрос, показывающий, что ваш босс опустился на 14 пунктов, указывая на опрос вашего босса и Байдена, статистически равный в Арканзасе. pic.twitter.com/9t2g4Y7g13

    — Сэм Штайн (@samstein) 14 июня 2020 г.

    Привет, @brianstelter … все еще хочешь поддержать ненужную науку CNN? Ни один из опросов, кроме вашего, не показывает таких ложных цифр.

    ПРИМЕЧАНИЕ: Раньше я твитнул другой опрос, чем то, что я цитировал сегодня на CNN.Обновлено. Потому что я исправляю вещи, в отличие от CNN. 😉 https://t.co/p7ks4zrqj8

    — Jenna Ellis (@JennaEllisEsq) 14 июня 2020 г.

    Jenna Ellis Twitter

    Твиты JennaEllisEsq

    ▷ Статистика и анализ трафика inkgraphtechno.Bitrix24.in Битрикс24

    Сводка имени хоста

    Домен bitrix24.in
    IP-адрес
    Расположение веб-сервера Индия
    Обновлено:

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *