Деякі прийоми роботи в бітрікс на sql і bash

Деякі прийоми роботи в Бітрікс на SQL і BASH -1

  • 03.03.17 11:42 •
  • parserme •
  • # 323152 •
  • Хабрахабр •
  • 9 •
  • 1800

- такий же як Forbes, тільки краще.

Я продовжую писати про Бітрікс в контексті обмінів, Mysql і командного рядка Linux.

У статті розглядаються досить приватні питання, які не виникають щодня. Звичайно, ви можете використовувати ці матеріали за їх прямим призначенням, але головна мета статті не в цьому. Я починаю розкривати «чорний ящик» під назвою «структура бази даних бітрікс», і показувати, що ці знання можуть стати в нагоді для підвищення рівня володіння як системою, так і базовими технологіями (SQL, linux shell), що, звичайно, допомагає вирішувати нові, складні, цікаві, різноманітні завдання.

Сторінка, з якої можна робити SQL запити в базу, або mysql web клієнт бітрікс, знаходиться в панелі управління Бітрікс по шляху: «Настройки> Інструменти-> SQL запит».

Також, звичайно, можна робити запити з командного рядка операційної системи, для чого можу запропонувати вам нескладну операцію вилучення логіна і пароля прямо з налаштувань Бітрікс:


- таким чином можна отримати логін і пароль до бази даних Mysql Bitrix з командного рядка linux на bash. Шляхи, звичайно ж, замінюйте на ваші власні. У варіанті, що надається віртаульной машиною Бітрікс, DOCUMENT_ROOT виглядає як / home / bitrix / www /.

1. Налагодження «Вибраного» для всіх користувачів панелі управління Bitrix відразу.


Коли вводиться новий сайт, розробнику не хочеться пояснювати кожному, хто додає новини або редагує сторінки, що потрібно натиснути, щоб потрапити в новини або каталог товарів. Краще вивести посилання прямо на стартову сторінку панелі управління бітрікс, тим більше, що у Бітрікс «робочий стіл» в адмінці для цього і призначений.

Якщо настройки так званого «робочого столу» можна поширити на всіх, хто зайде в адмінку Бітрікс, то колонку «Вибране» користувач заповнює тільки для себе. Це логічно, але зазвичай користувачі нехтують такою можливістю, тому зробимо цю роботу за них.

До того ж, не все можна помістити на «Робочий стіл», а в «Вибране» можна додати все, що завгодно, навіть посилання на сторонній ресурс, наприклад, на пошту або тікети служби техпідтримки іншої системи.

Заповнити блок «Вибране» в адмінці Бітрікс саме для всіх контент-менеджерів панель управління не дозволяє: немає такої кнопочки. Тому, спочатку додамо потрібні посилання в блок «Вибране» для себе.

Дізнайтеся ваш ID користувача. Якщо ви під адміністратором (admin) в панелі управління, то ваш ID користувача = 1.

Очевидно, ці дані відносяться до користувача, і перший погляд кидається на таблиці, що починаються з b_user_, яких в базі Бітрікс з десяток. Однак, потрібна нам таблиця не має такого префікса і називається b_favorites.

Ця таблиця містить поле COMMON, яке для всіх записів має значення 'N'. Як виявляється, функція показу обраного для всіх користувачів є, і поле COMMON в таблиці b_favorites повністю виправдовує свою назву.


Нам навіть не потрібно дублювати записи адміністратора для всіх користувачів (а як тоді було б з знову заводяться адміністраторами сайту. Робити mysql тригер. Заводити подія.). Тепер всі користувачі адмінки Bitrix бачать ті ж самі «Вибрані», що і ви. Завдання вирішена.

2. Як змінити логін і пароль користувача бітрікс через базу даних. Як скинути пароль адміністратора Bitrix.


Якщо ви не можете зайти в панель управління Бітрікс, але база доступна, ви можете або встановити свій власний пароль для користувача, або зробити його таким же, як у якогось іншого користувача, пароль якого ви знаєте.

Основні дані всіх користувачів зберігаються в таблиці b_user. Вам потрібно знати ID користувача в системі Бітрікс.

Установка власного логіна і пароля Bitrix засобами Mysql


Пароль зберігається у базі у вигляді:

Кажуть, вони щось ще змінили, але якщо ви зробите так, то воно буде працювати.


де
su - новий логін користувача
12345678 - сіль
stupidpassword - новий пароль користувача
id = 8 - id користувача (якщо admin, то = 1)
Пароль бітрікс скинутий, задача вирішена. Заодно, ви можете змінити і логін.


І другий, дуже простий, спосіб скидання пароля в бітрікс.

На цей раз, нам потрібно просто перенести хеш пароля від одного користувача до іншого. Звичайно, потрібно знати ID обох користувачів в bitrix, в даному випадку користувачеві з ID = 36 ми встановлюємо пароль від користувача з ID = 895.

3. Застосування настройки полів в редагуванні замовлення в Bitrix адмінки для всіх користувачів.


В якійсь доменній зоні другого рівня, на деякому сайті, в адміністративній панелі системи управління Бітрікс розташовується сторінка редагування замовлення інтернет-магазину, в заголовку таблиці товарів якої є кнопка настройки у вигляді шестерінки, і буває ця кнопка то синя, сіра ...

Натиснувши на цю кнопку, можна задавати поля замовлення, які будуть виводитися в таблиці, в тому числі і призначені для користувача властивості замовлення. Але при цьому, задається це тільки для одного користувача.

Щоб застосувати ці налаштування до всіх користувачів панелі управління Бітрікс, а не пояснювати кожному, «натисніть маленьку кнопочку в заголовку таблиці з товарами, бачите список властивостей ... Виберіть потрібні вам. », Виставимо налаштування через базу.

Ці настройки зберігаються в таблиці b_user_option, які зіставлені певного користувачеві за допомогою поля user_id. Але є одна особливість: якщо user_id = 0, то властивість - глобальне, і застосовується для всіх користувачів.


де user_id = 1 - ID користувача, під яким ви налаштовували таблицю товарів. Якщо це admin, то ID = 1.

Завдання вирішена: Тепер ваші налаштування таблиці товарів працюють у всіх відразу.

4. Сортування результатів пошуку в бітрікс за власним алгоритмом.


Якщо мова йде про пошук по сайту, основною таблицею для модулів пошуку в Бітрікс є b_search_content.

Цікаві поля таблиці b_search_content:

custom_rank - поле, по якому сортування працює ще до всіх інших полів
param1 - код Інфоблоки
param2 - номер Інфоблоки
module_id - = 'iblock'
item_id - id елемента або розділу
- для пошуку в Інфоблоки.

Перш за все нас цікавить поле custom_rank.

Якщо в попередніх випадках ми користувалися передбаченими, але нереалізованими можливостями Бітрікс, то для цього поля в панелі управління спеціальна «галочка» є. Але виставляється вона окремо для кожного елемента, і зазвичай цією можливістю не користуються.

Це поле до речі виявляється числовим, так і заповнимо його на свій розсуд, тим самим задаючи власні правила сортування результатів пошуку. За замовчуванням, для всіх елементів його значення дорівнює нулю.

У моєму випадку, при пошуку товарів в каталозі інтернет-магазину, реалізованому на вирішенні розробника romza, потрібно було спочатку виводити ті товари, у яких була встановлена ​​якась спеціальна галочка, яка була «властивістю», відповідним наявності товару в певній торговій точці. Прилітало все це добро з інкрементальною завантаженням з 1С, а тому цей SQL запит був повішений на подія закінчення обміну з 1С.


У налаштуванні Інфоблоки має бути зазначено «Значення властивостей зберігаються: в загальній таблиці (за замовчуванням)», а не в окремій таблиці, інакше запит буде виглядати дещо по-іншому.

Зараз же, за рахунок того, що запит йде спочатку по таблиці b_iblock_element_property, а не b_iblock_element, яка є основною для зберігання елементів Інфоблоки, ми відбираємо тільки ті елементи, у яких потрібне властивість взагалі є, і якщо воно дорівнює потрібному значенню, то піднімається custom_rank , в іншому випадку, він скидається в нуль.

У моєму випадку задача вирішена, а для вас є повний простір для реалізації своєї власної логіки сортування результатів пошуку. А якщо вам не зовсім знайомі ці назви таблиць, то вже в наступній статті я розкрию їх призначення більш докладно.

Як швидко почистити кеш в бітрікс.


«І на footer.php»: Очищення кеша в бітрікс через панель управління відбувається дуже повільно. Насправді, йде всього лише видалення файлів в певних директоріях, просто це робиться повільними засобами. Зробимо спеціальний файл для очищення кеша в бітрікс в командному рядку linux.


Тепер ви можете запустити ./clearcache.sh, і кеш Бітрікс очиститься практично миттєво.

Скрипт цей повинен лежати на одну директорію вище, ніж DOCUMENT_ROOT вашого сайту. Хоча, ви можете змінити як місце його знаходження, так і код, суть в тому, що ми повинні видалити всі файли з директорій:

cache
managed_cache
stack_cache - раніше була ще ця директорія, але в останніх версіях я її не спостерігаю, тому зараз без неї.

Насправді, якщо видалити і самі директорії, нічого не трапиться, вони пересоздадут. Але більш правильно їх залишати.

У віртаульной машині Бітрікс DOCUMENT_ROOT дорівнює / home / bitrix / www /, якщо ж у вас сайт встановлений в іншу директорію, скоректуйте скрипт згідно вашим шляхах.

Ви можете допомогти і перевести трохи коштів на розвиток сайту

Схожі статті