Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
21 Апрель 2021

Не работают Cookie на ядре D7 Битрикс

Писать совсем некогда! Работа в веб-студии это прям тема — времени нет ни на что 🙂
Но всё же этот пост не могу не опубликовать, если бы мне такое попалось — экономия 1-2 часа 🙂
(да, да — именно столько я не мог «воткнуть» почему не работают примеры из документации)

Сегодня чуть мозг себе не взорвал, пока пытался понять, почему не работает механизм куков на ядре D7 Битрикс.
Всё делаю как в примерах — не пашет!
https://dev.1c-bitrix.ru/api_d7/bitrix/main/web/cookie/index.php
https://estrin.pw/bitrix-d7-snippets/s/cookie/
https://www.intervolga.ru/blog/projects/d7-analogi-lyubimykh-funktsiy-v-1s-bitriks/#section12
и только в блоге Антона К. дошел до истины!

ВНИМАНИЕ на странице обязательно должен быть подключен
require($_SERVER[‘DOCUMENT_ROOT’] . ‘/bitrix/footer.php’);
или
require($_SERVER[«DOCUMENT_ROOT»].BX_ROOT.»/modules/main/include/epilog_after.php»);
т.к. куки d7 добавляются именно в эпилоге.
(там вызывается метод Bitrix\Main\HttpResponse::flush() )

рубрики: Bitrix, Битрикс D7 | Комментарии (0)

6 Апрель 2021

Битрикс D7 — cоздание своего модуля

От слов к делу — начнём потихоньку заполнять пробелы в необходимых знаниях по Битрикс программированию …

На последнем моём собеседовании с веб студией Слон один из вопросов технического директора компании ко мне был — есть ли у Вас опыт по разработке модулей в Битриксе?
К сожалению тут я немного присел в лужу, т.к оного у меня не было.

Для освоения ядра D7 знакомство с модулями я начну стразу, собственно используя стиль программирования нового ядра.

Подход к всему новому у меня всегда один — от простого к сложному. Для начала я решил найти самый простой шаблон модуля, просто чтобы запустить своими руками без какой либо конкретной задачи — обозначить пространство для вставки полезного кода в шаблоне, так же освежил знания из курса Разработчик Bitrix Framework и вооружился официальной документацией по D7

За основу я взял статейку с сайта веб студии BRAINKIT 1С:Битрикс пример создания модуля D7

Всё бы ничего, но видимо никто из компании не удосужился проверить работоспособность выложенного на гите модуля (и хорошо — хоть поковырялся, так сказать минизадача по правке работоспособности модуля).
Итак, прочитав статью, я сразу пошел по ссылке в гит, клонировал проект bitrix-d7-module и закинул его в ./local/modules/ файловой структуры сайта.

Далее интересней — идём в Доступные решения для установки модуля — там пусто!

Пора и заглянуть в код 🙂
Читать полностью »

рубрики: Bitrix | Комментарии (0)

15 Март 2021

Битрикс — как получить ссылки на изменение элемента

Продолжаем работу с сайтом по производству фотообоев в Новосибирске — решил добавить в свой компонент ссылки на редактирование элемента.

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

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

Готово!

рубрики: Bitrix | Комментарии (0)

2 Февраль 2021

Битрикс — постраничная навигации в своей компоненте без PAGEN_1

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

Какие задачи ставились для пагинации
1. ЧПУ ссылки вида https://dekorimage.ru/3D-foto-oboi/stereoskopicheskie/page5/ без стандартного битриксовского ?PAGEN_1=5
2. AJAX обновление пагинации — при нажатии «показать ещё» страничка в пагинации так же должна перескакивать на следующую страничку

Первое реализуется с помощью буферизации вывода компонента bitrix:system.pagenavigation (за основу взял шаблон round) и замены ссылок формата PAGEN_1 на нужные нам ЧПУ ссылки

Для реализации второго — параметры $total $per_page и $page передаются в такой же скрипт но уже AJAX запросом.
Для обработки AJAX запроса в компонент я добавил полную очистку буфера вывода

В принципе из интересного всё — остальное дело техники.

И ещё момент — чтобы AJAX скрипт формировал правильный адрес, в компонент я передаю BASE_LINK

рубрики: Bitrix | Комментарии (0)

13 Январь 2021

Битрикс — динамическая проверка логина и email при регистрации

При регистрации на сайте Вы вводите логин или электронную почту, и Вам тут же сообщается, занят ли он.
Так по идее должно быть! Но, к сожалению, стандартный компонент Битрикс system.auth.registration так не умееет 🙁
Если на сайте очень много пользователей зачастую короткие логины заняты, приходится по несколько раз заполнять логин, вводить заново капчу — очень неудобно.

Решение — кастомизация стандартного шаблона компонента system.auth.registration.

На сайте уже должна быть подключена библиотека jQuery — если нет, подключаем.

1. Копируем /bitrix/components/bitrix/system.auth.registration/templates/.default/ в /bitrix/templates/< ВАШ ШАБЛОН САЙТА>/components/bitrix/system.auth.registration/ и редактируем файл template.php внутри папки .default. Если шаблон уже кастомизирован — находим его и так же правим template.php

в самом начале добавим подключение css и js файлов

2. Находим текстовое поле USER_LOGIN и вставляем туда «id=gt_login» и чуть выше блока form-input добавляем ещё один пустой div класс gt-reg-login
должно получиться, что-то вроде
Читать полностью »

рубрики: Bitrix | Комментарии (0)

6 Ноябрь 2020

Bitriv VM — Unable to load dynamic library ‘pdo_sqlite’

Для одного из проектов на виртуальной машине 1С Битрик понадобилось включить расширение pdo_sqlite
Как обычно — залез в /etc/php.d/ нашел нужный мне файл 30-pdo_sqlite.ini и переименовал 30-pdo_sqlite.ini.disabled в 30-pdo_sqlite.ini

Расширение не включилось — посмотрел phpinfo() — сам файл 30-pdo_sqlite.ini подцепляется, но сама информация по pdo_sqlite не подключилась
php —ini так же подтвердило подключение модуля

далее решил глянуть инфу с консоли
php -i | grep mysql

тут то в самом начале и обнаружилась проблема

PHP Warning: PHP Startup: Unable to load dynamic library ‘pdo_sqlite’ (tried: /usr/lib64/php/modules/pdo_sqlite (/usr/lib64/php/modules/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/pdo_sqlite.so (/usr/lib64/php/modules/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0

посмотрел — всё Ок, файл /usr/lib64/php/modules/pdo_sqlite присутствует!

В общем не буду томить, решение оказалось очень простым — включение модуля 30-pdo.ini необходимого уже для дальнейшей работы других pdo_*** модулей

рубрики: Bitrix, NIX, PHP, Администрирование | Комментарии (0)

3 Ноябрь 2020

Битрикс — запуск агентов и большой размер таблицы b_stat_path_cache

Разбирался с проблемой на одном сайте клиента — при резервном копировании, обнаружили что размер файла базы данных просто ужасно огромен.
Как выяснилось, размер некоторых таблиц (например b_stat_path_cache) переваливал за гигабайт.

Вообще, именно за размер этой таблицы отвечают настройки времени хранения в модуле ВЕБ аналитики, конкретно тут:
Админка — Настройки — Настройки продукта — Настройки модулей — Веб-аналитика — закладки «Настройка данных» и «Время хранения».

Но проблема в данном случае оказалась не в этом.
В Битриксе подчищение всего лишнего (и не только!) занимаются так называемые АГЕНТЫ, список которых и статистику из запуска можно посмотреть тут
Админка — Настройки — Настройки продукта — Агенты

Оказалось, на сайте агенты не запускались уже несколько лет, соответственно статистику просто некому было чистить!

ОБЯЗАТЕЛЬНО проверяйте выполнение агентов на сайте под управлением Битрикс CMS

В данном случае, выполнение агентов было настроено на CRON, а сама задача по крону не была настроена
(тут для проверки нужно смотреть логи выполнения crontab в системе, или для начала просто скрипты поставленные на крон)
посмотреть как настроен запуск агентов в Битриксе можно в файле /bitrix/php_interface/dbconn.php
Если перевести выполнение агентов на хиты — нужно убрать константы define(‘BX_CRONTAB_SUPPORT’, true);

Собственно, я так и сделал, после чего обновил главную страницу сайта, после чего обновил страницу с Агентами в админке, и вуаля — в колонке последнего запуска агентов увидел текущую дату.
После чего заглянул в PHPMyAdmin — таблицы почистились!

Задача решена!

рубрики: Bitrix | Комментарии (0)

13 Октябрь 2020

Битрикс меню — структура файла и дополнительные параметры


То ли я читать не умею, что ли что — но в официальной документации я не увидел той информации, которую всё таки нашел в сети и решил оставить себе в блоге в виде справочного поста.
Итак, три статьи, которые мне «зашли» — первая, собственно вводная — тоже что в документации, только более понятно — структура файла меню
Вторая и третья статьи уже собственно затрагивают дополнительные параметры четвёртого параметра

Таким образом, приведу пример файла из второй статьи со структурой меню, которой в структуре может вообще не быть — то есть подпункты, можно добавить.

Я воспользовался этим приёмом для того, чтобы сделать верхний пункт меню некликабельным («Аэропорты Москвы»), а пункты подменю остались кликабельными.
Пример на сайте reklamy.ru — главное меню, раздел Реклама в аэропортах.
Так же мне нужно было, чтобы подпункты не были по структуре внутри верхнего пункта (т.к. он вообще не имеет своего адреса).

Свой файл выкладывать не буду — смысла нет, там всё по аналогии с файлом из первой статьи, который я себе сохраню
Читать полностью »

рубрики: Bitrix | Комментарии (0)

13 Октябрь 2020

Установка и настройка Сбербанк Эквайринг на 1С Битрикс

Поставили задачу — прикрутить к сайту на 1С Битрикс приём оплаты через Сбербанк Эквайринг.
Собственно, особо никаких проблем не возникло, просто по одноименному запросу в Яше ничего подобного не нашел, вот и решил накарябать пару строк 🙂

Итак, после регистрации приходит письмо, где указаны ссылки на сам модуль к Битриксу, данные доступа в личный кабинет https://3dsec.sberbank.ru/mportal3/, а так же необходимые настройки.

Ставим модуль, вводим в настройке логин, пароль а так же не забываем поставить галку «тестовый режим».
Подробнее где чего настраивать в Битриксе тут

Может понадобится информация о кодах ошибок — её смотрим в ЛК раздел Справка — Способы подключения — Коды ответа операций
Далее для тестирования обязательно подадобятся тестовые карты, их берём тоже в ЛК в разделе Справка — Способы подключения — Тестовые карты

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

Ну и напоследок — в техподдержке адекватные ребята! Набрал разок — всё доходчиво объяснили, доволен.

PS
Как в боевой режим перейдём — отпишу как полёт проходит.

рубрики: Bitrix | Комментарии (0)

8 Сентябрь 2020

Отправка почты с Битрикс CMS через Яндекс

Итак, на новом проекте — интернет магазин по продаже фотообоев даже после всех настроек почты, опубликованных ранее (пост 1, пост 2) почта на GMail, полученная с сайта всё равно улетала в спам 🙁

Я попробовал отправить с этого же сайта почту скриптом через Яндекс (домен уже был привязан через pdd.yandex.ru к Яндексу, MX запись так же была настроена) — и о чудо, сообщение без проблем пришло во входящее!

Далее стандартную функцию по отправке почты Битрикса я подменил на новую (путём объявления функции custom_mail в /bitrix/php_interfaces/init.php) и вуаля — теперь вся почта отправленная с Битрикса теперь отправляется через Яндекс Почту и не падает в спам!

Ссылочка на готовое решение — функция по отправке почты Битрикс через Яндекс
Готовое решение не моё — вот исходник, но сразу скажу, что там допущены две ошибки которые я пофиксил в своём варианте.

Отдельно о моментах, которые пришлось решать попутно

* Пришлось ставить composer, в связи с чем потребовалось включить php расширение phar — решение mv /etc/php.d/20-phar.ini.disabled /etc/php.d/20-phar.ini и рестарт браузера

wget https://getcomposer.org/composer.phar
chmod +x composer.phar
Далее, что бы Composer был доступен не только из папки, но и глобально в системе перемещаем его в папку /usr/local/bin/ командой mv
mv composer.phar /usr/local/bin/composer

* Для работы скрипта использовал скрипт PHPMailer + хорошая статья по данному скрипту
* Для работы imap_mime_header_decode используемой в скрипте потребовалось установить (именно установить а не включить) расширение php_imap (на centos команда yum install php_imap отработала корректно)

рубрики: Bitrix, PHP, Программирование | Комментарии (0)