header

content

Отключить управление активностью разделов при обмене с 1С
Отключить управление активностью разделов при обмене с 1С
в файл init.php
AddEventHandler("iblock", "OnBeforeIBlockSectionUpdate", "skipSectionActivity_If1C");

// не управляем активностью раздела при обмене товарами с 1С
function skipSectionActivity_If1C(&$arParams){
    
    if( $_SERVER["SCRIPT_NAME"] == '/bitrix/admin/1c_exchange.php')
    unset($arParams["ACTIVE"]);

}
Плавная прокрутка к якорю
Плавная прокрутка к якорю
$("body").on('click', '[href*="#"]', function(e){
    var fixed_offset = 100;
    $('html,body').stop().animate({ scrollTop: $(this.hash).offset().top - fixed_offset }, 1000);
    e.preventDefault();
});
Заголовки в компоненте NEWS
Заголовки в компоненте NEWS
1. В шаблоне:
<?$APPLICATION->ShowTitle();?>
bitrix:news.list:
"SET_TITLE" => "N" - Заголовок из свойств страницы
"SET_TITLE" => "Y" - Заголовок из свойств страницы

bitrix:news.detail:
"SET_TITLE" => "N" - Заголовок из свойств страницы
"SET_TITLE" => "Y" - Заголовок из свойств страницы


2. В шаблоне:
<?$APPLICATION->ShowTitle(false);?>
bitrix:news.list:
"SET_TITLE" => "N" - Заголовок из свойств страницы
"SET_TITLE" => "Y" - Заголовок из названия инфоблока

bitrix:news.detail:
"SET_TITLE" => "N" - Заголовок из свойств страницы
"SET_TITLE" => "Y" - Заголовок из названия элемента


Как средствами php удалить внутреннюю ссылку VK
vk (vk)
Как средствами php удалить внутреннюю ссылку VK

Подскажите как удалить и из текста:

"Какой то текст [club112773578|+ Подпишись] далее еще текст какой-то..."

средствами php [club112773578|+ Подпишись] вот эту ссылку? от [ и до ] включительно

************************************************************************************************************
Используйте регулярные выражения:
$text = "Какой то текст [club112773578|+ Подпишись] далее еще текст какой-то...";
$text = preg_replace('/\[(club|public|id)\d*\|.*\]/', '', $text);
//Удалить все в квадратных скобках:
//$text = preg_replace('/\[.*\]/', '', $text); 
echo $text; // Какой то текст далее еще текст какой-то...
************************************************************************************************************
там может быть club, public, id вот именно удаление начинается с [ заканчивается ]
************************************************************************************************************ 
$text = "Какой то текст [club112773578|+ Подпишись] далее еще текст какой-то...";
$text = preg_replace('/\[.*\|.*\]/', '', $text);
echo $text; // Какой то текст далее еще текст какой-то...
************************************************************************************************************ 
Удалить все ссылки с club, public, id:
$text = preg_replace('/\[(club|public|id)\d*\|.*\]/', '', $text);

Удалить весь текст в квадратных скобках:
$text = preg_replace('/\[.*\]/', '', $text);
Сделать картинки ссылками
Сделать картинки ссылками
Берутся все изображения с классом "foto", размещенные внутри блока с классом "contentblock". 
.contentblock ограничивает использование только вложенных в него изображений, отсеивая элементы оформления сайта и из других блоков.
.foto - класс, назначаемый фотографиям при загрузке, для фильтрации. Можно убрать из скрипта, если среди фотографий нет лишних графических элементов.

Скрипт под fancybox. Атрибут "title" фотографии используется для описания. Класс "fancy_image" добавлен для возможности визуального оформления миниатюр на странице.
jQuery(document).ready(function($){
    $(".contentblock img.foto").each(function() {
        var item_image_title = $(this).attr('title');
        $(this).wrap('<a href="' + this.src + '" data-fancybox="group" data-caption="' + item_image_title + '" class="fancy_image"></a>');
    });
});
Иконка WhatsApp (svg)
Иконка WhatsApp (svg)
<svg x="0px" y="0px" width="30" height="30" viewBox="0 0 172 172"
style=" fill:#339900;"><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,172v-172h172v172z" fill="none"></path><g fill="#2ecc71"><path d="M86,6.88c-43.62608,0 -79.12,35.49392 -79.12,79.12c0,13.6224 3.51912,27.01776 10.19272,38.8376l-10.06544,35.9136c-0.33024,1.17992 -0.01032,2.44584 0.8428,3.32304c0.65704,0.67768 1.55144,1.04576 2.46992,1.04576c0.2752,0 0.55384,-0.0344 0.8256,-0.09976l37.48224,-9.28456c11.44488,6.14384 24.33456,9.38432 37.37216,9.38432c43.62608,0 79.12,-35.49392 79.12,-79.12c0,-43.62608 -35.49392,-79.12 -79.12,-79.12zM125.8008,113.91904c-1.69248,4.68528 -9.81088,8.9612 -13.71184,9.53568c-3.50192,0.51256 -7.93264,0.73272 -12.7968,-0.79464c-2.94808,-0.9288 -6.73208,-2.16032 -11.57904,-4.22776c-20.37512,-8.68944 -33.68104,-28.9476 -34.69928,-30.28576c-1.0148,-1.33816 -8.29384,-10.87384 -8.29384,-20.7432c0,-9.86936 5.246,-14.7232 7.11048,-16.73216c1.86448,-2.00896 4.06264,-2.5112 5.418,-2.5112c1.35536,0 2.70728,0.0172 3.89408,0.07224c1.24872,0.06192 2.924,-0.47128 4.57176,3.44344c1.69248,4.01792 5.75512,13.88728 6.25736,14.8952c0.50912,1.00448 0.84624,2.17752 0.172,3.51568c-0.67424,1.33816 -1.01136,2.17408 -2.0296,3.34712c-1.01824,1.17304 -2.1328,2.6144 -3.04784,3.51568c-1.01824,1.00104 -2.07432,2.08464 -0.89096,4.0936c1.18336,2.00896 5.25976,8.57592 11.3004,13.89416c7.7572,6.83184 14.30352,8.95088 16.33312,9.95536c2.0296,1.00448 3.2164,0.83592 4.39976,-0.50224c1.18336,-1.3416 5.07744,-5.85832 6.42936,-7.86384c1.35192,-2.00552 2.70728,-1.67528 4.57176,-1.00448c1.86448,0.66736 11.8508,5.51776 13.8804,6.52224c2.0296,1.00448 3.38496,1.50672 3.89408,2.34264c0.50912,0.83248 0.50912,4.8504 -1.18336,9.53224z"></path></g></g></svg>
Ссылки с сайта
Ссылки с сайта

Открыть чат, работает только по имени пользователя:

<a href="tg://resolve?domain=имя_пользователя">Telegram</a>

или

<a href="https://t.me/имя_пользователя">Telegram</a>

Приглашение в групповой чат по инвайту:

<a href="tg://join?invite=id_группы">Telegram</a>
Ссылки с сайта
Ссылки с сайта

Открыть чат с номером:

<a href="whatsapp://send?phone=+7903xxxxxxx">WhatsApp</a>

или

<a target="_blank" href="https://wa.me/+7903xxxxxxx">WhatsApp</a>

Открыть чат с номером и написать сообщение:

<a href="whatsapp://send?phone=+7903xxxxxxx&text=Hello world!">WhatsApp</a>

Поделится текстом, в приложение откроется список контактов для отправки:

<a href="whatsapp://send?text=Hello world!">WhatsApp</a>
Warning: Trying to access array offset on value of type bool
Warning: Trying to access array offset on value of type bool
$id_block_projects = $el["IBLOCK_ID"];

изменить на:

$id_block_projects = (is_array($el) ? $el["IBLOCK_ID"] : NULL);
[Error] Call to undefined function each() (0) /***/bitrix/modules/statistic/classes/general/statistic.php:782
[Error] Call to undefined function each() (0) /***/bitrix/modules/statistic/classes/general/statistic.php:782
При обновлении не обновился системный модуль "statistic".

В указанном файле 782-ю строку:

list(,$value) = each($arrADV);

заменить на:

$value = reset($arrADV);
call_user_func_array(): Argument #1 ($function) must be a valid callback, non-static method НазваниеМодуля::МетодКласса() cannot be called statically (0)
call_user_func_array(): Argument #1 ($function) must be a valid callback, non-static method НазваниеМодуля::МетодКласса() cannot be called statically (0)
Необходимо найти код данного модуля по следующему пути (/bitrix/modules/название.модуля), определиться с классом в котором возникает данная ошибка и к данному классу приписать служебное слово static, примерно так:

static function МетодКласса()
[Ux11] Ошибка описания модуля "название.модуля"
[Ux11] Ошибка описания модуля "название.модуля"
Не установлено соединение с сервером обновлений. [Ux11] Ошибка описания модуля "название.модуля"

При возникновении данной ошибки нужно либо обновить модуль до последней версии, либо в файле /bitrix/modules/название.модуля/install/index.php заменить название функции function название_модуля() на function __construct() После этого ошибка должна уйти
Argument #1 ($value) must be of type Countable|array, null given (0)
Argument #1 ($value) must be of type Countable|array, null given (0)
Данная ошибка характерна, например, для функций count(), sort(), ksort() и подобных.

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

if (count($arResult["ITEMS"]) > 0) {}
или
if (count($arResult["ITEMS"])) {}

Ранее данная конструкция нам возвращала false и в случае если $arResult["ITEMS"] === Array(), и в случае если $arResult["ITEMS"] неопределен. Теперь же возникнет ошибка, если $arResult["ITEMS"] не определен или его значение не может быть "посчитано", например если значение типа Integer

Быстро исправить данную ошибку можно следующим образом:

if (is_countable($arResult["ITEMS"]) && count($arResult["ITEMS"]) > 0)
Или
if (is_array($arResult["ITEMS"]) && count($arResult["ITEMS"]) > 0)

Главная суть в том, что переменная, передаваемая в функцию count() должна существовать, быть определена и иметь тип, который может быть "посчитан", например Array

Для быстрого решения этой ошибки в функциях сортировки sort(), ksort() и т.д. можно использовать следующий код:

if (is_array($arResult["ITEMS"])) sort($arResult["ITEMS"]);

А так же возможен вариант явного приведения переменной к необходимому типу:

$arResult["ITEMS"] = (array)$arResult["ITEMS"];
Или
sort((array)$arResult["ITEMS"]);


Но в данном случае нужно понимать, что изначальное значение типа null, boolean, integer будет приведено к типу Array, что не всегда правильно для дальнейшего выполнения кода
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
возникает в среде PHP 8 и выше из-за изменения синтаксиса доступа к элементам массива. Теперь для этого допускается использовать только квадратные скобки.

Чтобы исправить ошибку, нужно заменить фигурные скобки { } на квадратные скобки [ ] в коде, где используется доступ к массиву с помощью фигурных скобок.

Например:

$string = $chars{rand(0, $chars_length)};

изменить:

$string = $chars[rand(0, $chars_length)];


//////////////////////////////
Другой вариант:

Array and string offset access syntax with curly braces is no longer supported

$url{0}

изменить:

substr($url, 0, 1)
Unknown collation: 'utf8mb4_0900_ai_ci'
Unknown collation: 'utf8mb4_0900_ai_ci'

Некоторые причины возникновения ошибки:

  • Использование устаревшей версии MySQL. Сортировка utf8mb4_0900_ai_ci была введена в MySQL 8.0, более ранние версии её не поддерживают.
  • Импорт базы данных. Если пытаться импортировать базу данных, созданную в MySQL 8.0, в более раннюю версию, возникнет эта ошибка.
  • Неверные настройки хостинга. Некоторые хостинг-провайдеры могут использовать старые версии MySQL или неправильно настроить сервер.
Решение проблемы:

Если вы используете SQL-запросы, убедитесь, что не задействуете utf8mb4_0900_ai_ci. Замените её на utf8mb4_general_ci или utf8mb4_unicode_ci.
Правится заменой в текстовом редакторе.

*****************************************************

Далее может появиться другая ошибка:
#1071 - Указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт

Замечено при экспорте базы данных Битрикса после изменения utf8mb4_0900_ai_ci на utf8mb4_general_ci.
Помогла замена всех вхождений utf8mb4 на utf8
Размещение отдельной записи
Размещение отдельной записи
<?php
$args = array(
    'p' => 59, // ID нужной записи
    'post_type' => 'post', // Тип записи
    'post_status' => 'publish' // Статус
);
$query = new WP_Query($args);
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        the_content();
    }
    wp_reset_postdata();
}                
?>
Размещение записей из рубрики
Размещение записей из рубрики
<?php
    $id=4; // Идентификатор нужной рубрики
    $n=8;  // Количество выводимых записей
    $orderby = 'id'; // Индекс сортировки
    $order = 'ASC'; // Порядок сортировки
      
    $recent = new WP_Query("cat=$id&showposts=$n&orderby=$orderby&order=$order"); //Запрашиваем нужные записи
    while($recent->have_posts()) : $recent->the_post(); //Если они есть, то выводим в цикле
?>

        <?php the_title(); // Заголовок записи ?>
        <?php the_post_thumbnail(); // Изображение записи ?>

<?php endwhile; //Конец цикла вывода ?>
Размещение меню в файл шаблона
Размещение меню в файл шаблона
<?php $args = array('menu'  => '1',); // 1 - id меню ?>
<?php wp_nav_menu( $args ); ?>
Автопостинг в ВК в 2025 году. 3.Применение токенов
vk (vk)
Автопостинг в ВК в 2025 году. 3.Применение токенов
1. Создать текстовый файл для временного хранения получаемых от ВК данных в папке с исполняемыми скриптами автопостинга. К примеру vk_tmp.txt

2. При первом запуске выдаст ошибку о несовпадении ip-адреса, используемого при получении токена с текущим.
Необходимо выполнить рефреш и получить новый токен. Создать php файл следующего содержания:

<?php
$url = 'https://id.vk.com/oauth2/auth';
$data = [
'grant_type' => 'refresh_token',
'refresh_token' => 'vk2.много букв и цифр',
'client_id' => '11111111',
'device_id' => 'много букв и цифр',
'state' => 'XXXRandomZZZ1111111111111111XXXRandomZZZ',
'scope' => 'vkid.personal_info photos wall offline'
];

// Prepare POST data
$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query($data),
    ],
];

// Create stream context
$context  = stream_context_create($options);

// Perform POST request
$response = file_get_contents($url, false, $context);

file_put_contents(__DIR__ . '/vk_tmp.txt', print_r($response, true));
// Display the response
echo $response;
echo '<br>';
$array = json_decode($response, true);
print_r($array);
?>

Для формирования массива исходящих данных использовать параметры, полученные в результате curl-запроса при получении токена.
В результате получим обновленные токены с записью результата в созданный файл.

В дальнейшем перед запуском скрипта автопубликации с сайта в ВК будем брать информацию о рефреш-токене из временного файла, с его помощью получать новые актуальные токены, перезаписывать их во временный файл, полученный access_token использовать в скрипте.

<?
$tmp_access_data = file_get_contents(__DIR__ . '/vk_tmp.txt');

// json to array
$array_access_data = json_decode($tmp_access_data, true);

$refresh_token = $array_access_data['refresh_token'];

// Define the URL and data
$url = 'https://id.vk.com/oauth2/auth';
$data = [
'grant_type' => 'refresh_token',
'refresh_token' => $refresh_token,
'client_id' => '11111111',
'device_id' => 'много букв и цифр',
'state' => 'XXXRandomZZZ1111111111111111XXXRandomZZZ',
'scope' => 'vkid.personal_info photos wall offline'
];

// Prepare POST data
$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query($data),
    ],
];

// Create stream context
$context  = stream_context_create($options);

// Perform POST request
$response = file_get_contents($url, false, $context);

file_put_contents(__DIR__ . '/vk_tmp.txt', print_r($response, true));

// json to array
$array_access_data_new = json_decode($response, true);

$access_token = $array_access_data_new['access_token'];
?>

Автопостинг в ВК в 2025 году. 2.Получение токенов
vk (vk)
Автопостинг в ВК в 2025 году. 2.Получение токенов

1. Подготовка. На сервисе https://tonyxu-io.github.io/pkce-generator/ в первом окне сгенерировать Code Verifier по кнопке "Generate Code Verifier". На его основе создать Code Challenge во втором окне, нажав кнопку "Generate Code Challenge".
Сохранить оба кода для дальнейшего использования при получении токенов.

Снимок1.JPG
2. Подготовить параметры для авторизации:
https://id.vk.com/authorize?
response_type=code
&client_id=11111111
&scope=offline%20wall%20photos
&redirect_uri=https://site.ru
&state=XXXRandomZZZ1111111111111111XXXRandomZZZ
&code_challenge=6c7ZD9kujPJSeTMQ8LKzER1LUI1P6DFNHkINCJCtGrA
&code_challenge_method=S256

client_id - id приложения, полученный при его создании.
scope - разрешения для приложения. В примере из документации в качестве разделителя используется последовательность "%20"
redirect_uri - свой сайт, указанный в настройках приложения
state - Строка состояния в виде случайной строки, состоящей из символов: a-z, A-Z, 0-9, _, -, длиной не менее 32 символа.
code_challenge - полученная в первом пункте последовательность символов.

Собрать все это в одну строку и вставить в адресную строку браузера. Убедиться, что пользователь авторизован как администратор приложения в ВК. Отправить запрос.

3. Произойдет переход на ваш сайт с формированием в адресной строке ссылки такого содержания:
https://site.ru/?
code=vk2.много букв и цифр
&expires_in=600
&device_id=много букв и цифр
&state=XXXRandomZZZ1111111111111111XXXRandomZZZ
&ext_id=много букв и цифр
&type=code_v2

4. Получение Access Token
Формируем curl-запрос:

curl "https://id.vk.com/oauth2/auth" -d "
client_id=11111111
&grant_type=authorization_code
&code_verifier=S7yz7Uw_d4B68xGmpVLNqKSCHvGDL9YXuq6Nf1rEi4w
&device_id=много букв и цифр
&code=vk2.много букв и цифр
&redirect_uri=https://site.ru
&state=XXXRandomZZZ1111111111111111XXXRandomZZZ
"

client_id - id приложения, полученный при его создании. 
code_verifier - сгенерированная в первом пункте последовательность символов (не путать с code_challenge, используемым ранее.
device_id - параметр, полученный в пункте 3.
code - параметр, полученный в пункте 3.
state - параметр, полученный в пункте 3.

Объединить все в одну строку:
curl "https://id.vk.com/oauth2/auth" -d "client_id=11111111&grant_type=authorization_code&code_verifier=S7yz7Uw_d4B68xGmpVLNqKSCHvGDL9YXuq6Nf1rEi4w&device_id=много букв и цифр&code=vk2.много букв и цифр&redirect_uri=https://site.ru&state=XXXRandomZZZ1111111111111111XXXRandomZZZ"

и, используя командную строку Windows, отправить запрос.

Снимок1.JPG

В результате получим: 
access_token - персональный токен для работы с API.
refresh_token - для обновления access_token, после окончания срока его жизни.
expires_in:3600 - время жизни access_token
и другую полезную информацию
Автопостинг в ВК в 2025 году. 1.Создание приложения
vk (vk)
Автопостинг в ВК в 2025 году. 1.Создание приложения
1. Зарегистрироваться в сервисе https://id.vk.com/about/business/go. Подтвердить персональные данные. Получить права на управление доступами приложения.

2. Создать новое приложение.
Во вкладке "Приложение" указать базовый домен (site.ru) и Доверенный Redirect URL (https://site.ru). site.ru - свой сайт - источник экспортируемых статей.
Для дальнейшей интеграции потребуются id созданного приложения и Доверенный Redirect URL.

3. Во вкладке "Доступы" после подтверждения персональных данных необходимо выставить разрешения. Для новостей: стена, фотографии. Дальше на свое усмотрение.
Снимок1.JPG
Вкладка Modes (Place Actors) в UE5
Вкладка Modes (Place Actors) в UE5 Вкладка Modes (Place Actors) в UE5

Вызов окна Place Actors через пункт меню Window
Modes (UE4) -> Place Actors (UE5)
Trigger Volume (UE4) -> Trigger Box (UE5)
Скрытие части текста фоновым градиентом
Скрытие части текста фоновым градиентом

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

.div_text{position:relative;height:150px;width:100%;overflow:hidden;}
.div_text:after{position:absolute;height:120px;left:0;right:0;bottom:0;width:100%;z-index:2;content:'';background-image: linear-gradient(transparent, white);}
Убрать эмодзи из текста
php (php)
Убрать эмодзи из текста
$text = preg_replace('~[\x{10000}-\x{10FFFF}]~u', '', $text);
Добавить номер страницы в заголовки страниц при постраничной навигации (другой вариант)
Добавить номер страницы в заголовки страниц при постраничной навигации (другой вариант)
Данные - из настроек физических разделов и страниц или прописать прямым текстом в component_epilog.php. Компонент "Список новостей". 

Если значения get-параметра PAGEN_1 не совпадают с нумерацией страниц в меню постраничной навигации
В шаблоне компонента в файле result_modifier.php получаем данные по навигации из общего массива данных.
Вычисляем порядковый номер страницы.
Пишем его в один из элементов массива, передаваемых в component_epilog.php.
В component_epilog.php формируем шаблон для заголовков страниц.

Если в PAGEN_1 и в меню постраничной навигации одно и то же число
Работаем сразу с component_epilog.php и формируем шаблон для заголовков страниц, используя PAGEN_1
result_modifier.php
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if(isset($_GET['PAGEN_1']) && $_GET['PAGEN_1']){
    $arNav = $arResult['NAV_RESULT'];
    $arNav = get_object_vars($arNav);
    $nav_count = (int)$arNav['NavPageCount'];
    $nav_page = (int)$arNav['NavPageNomer'];
    $current_page = $nav_count - $nav_page +1;
// допишем свои данные в $arResult['NAV_CACHED_DATA']
    $arResult['NAV_CACHED_DATA']['current_page'] = $current_page;
}
?>


component_epilog.php
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;

if(isset($_GET['PAGEN_1']) && $_GET['PAGEN_1']){

    $current_page = $_GET['PAGEN_1'];

    if(isset($arResult['NAV_CACHED_DATA']['current_page']) && $arResult['NAV_CACHED_DATA']['current_page']){
        $current_page = $arResult['NAV_CACHED_DATA']['current_page'];
    }

$APPLICATION->SetPageProperty("title", 'Тайтл страницы - Страница ' . $current_page);
$APPLICATION->SetPageProperty("description", 'Описание страницы - Страница ' . $current_page);
}
?>
Добавить номер страницы в заголовки страниц при постраничной навигации (для разделов инфоблока)
Добавить номер страницы в заголовки страниц при постраничной навигации (для разделов инфоблока)
Данные - из настроек раздела (вкладка "SEO")
Компонент "Список новостей". В шаблоне создать (если отсутствует) файл result_modifier.php.
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if(isset($_GET['PAGEN_1']) && $_GET['PAGEN_1']){

    $arNav = $arResult['NAV_RESULT'];
    $arNav = get_object_vars($arNav);
    $nav_count = (int)$arNav['NavPageCount'];
    $nav_page = (int)$arNav['NavPageNomer'];
    $current_page = $nav_count - $nav_page +1;

    $meta_title = $arResult['IPROPERTY_VALUES']['SECTION_META_TITLE'];
    $arResult['IPROPERTY_VALUES']['SECTION_META_TITLE'] = $meta_title . ' - Страница ' . $current_page;
    $meta_description = $arResult['IPROPERTY_VALUES']['SECTION_META_DESCRIPTION'];
    $arResult['IPROPERTY_VALUES']['SECTION_META_DESCRIPTION'] = $meta_description . ' - Страница ' . $current_page;
    //$page_title = $arResult['IPROPERTY_VALUES']['SECTION_PAGE_TITLE'];
    //$arResult['IPROPERTY_VALUES']['SECTION_PAGE_TITLE'] = $page_title . ' - Страница ' . $current_page;
}

?>
Перевести текст в транслит
php (php)
Перевести текст в транслит
$text = 'бла-бла-бла :)';

$tr = array(
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
        "Е"=>"E","Ё"=>"YO","Ж"=>"J","З"=>"Z","И"=>"I",
        "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
        "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
        "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"C","Ч"=>"CH",
        "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
        "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
    );
$text_tmp = strtr($text,$tr); // в транслит
$text_tmp = preg_replace('/[^A-Za-z0-9_\-]/', '', $text_tmp); // удаляем мусор
$text = strtolower(trim($text_tmp, '-')); // преобразуем в нижний регистр

echo $text;
Обрезать строку по словам
php (php)
Обрезать строку по словам
/**
* Обрезает строку до определённого количества символов не разбивая слова.
* Поддерживает многобайтовые кодировки.
* @param string $str строка
* @param int $length длина, до скольки символов обрезать
* @param string $postfix постфикс, который добавляется к строке
* @param string $encoding кодировка, по-умолчанию 'UTF-8'
* @return string обрезанная строка
*/
function mbCutString($str, $length, $postfix='...', $encoding='UTF-8')
{
    if (mb_strlen($str, $encoding) <= $length) {
        return $str;
    }
  
    $tmp = mb_substr($str, 0, $length, $encoding);
    return mb_substr($tmp, 0, mb_strripos($tmp, ' ', 0, $encoding), $encoding) . $postfix;
}

Новости 1 - 30 из 39
Начало | Пред. | 1 2 | След. | Конец