Вывод в bitrix:catalog товаров из нескольких инфоблоков

Имеется тип инфоблока 1c_catalog, а в нем несколько инфоблоков с товарами выгружаемых из разных 1С. Нам нужно вывести все эти товары из всех инфобоков в комплексном компоненте bitrix:catalog. Как не печально, но я не нашел решения этой задачи без кастомизации. Ну и вот, что у меня получилось читайте далее…

Read More

Убираем всплывающее окно popup в битрикс при добавлении товара в корзину

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

1. После добавления товара в корзину перенаправляет в корзину на оформление товара
2. Всплывающее окно говорящее об успешном добавлении товара в корзину

Но нам не нужно это всплывающее окно и тем более мы не хотим после добавления товара переходить в корзину. Что делать? Читаем дальше…

Read More

Делаем ajax формы в битрикс на страницах и в всплывающих окнах

Рано или поздно, разработчик 1с-битрикс, задается вопросом: а как же мне сделать аякс форму в битриксе?
Не секрет, что в 1с-битрис «режим AJAX» можно включить практически в каждом компоненте в его настройках, но есть и такие компоненты в которых по каким то причинам нет этой настройки.
Попробуем разобраться как это делается на примере компонента «Добавление элементов инфоблока». Читаем дальше…

Read More

Базовые функции pymongo (MongoDB для python)

import pymongo

from pymongo import Connection
connection = Connection()

# Удаляем базу данных, если она существует
connection.drop_database("my_database")

# Выбираем базу данных
db = connection.test_database
# или так
db = connection["my_database"]

# Удалить коллекцию
db.drop_collection('users')

# Добавление документов в колекцию 'users'
db.users.save( { 'name':'user 1', 'level':1 } )
db.users.save( { 'name':'user 2', 'level':2 } )
db.users.insert( { 'name':'user 3', 'level':3 } )

# Узнаем полное имя коллекции
print db.users.full_name

# Получаем все документы в коллекции
for user in db.users.find():
    print user

# Выбрать конкретные атрибуты
users = db.users.find({},{ 'login':1, 'name':1 })

# Получить один документ по условию
user = db.users.find_one({'name':'user 1'})

# Получить/установить значение
print user['level']
user['level'] = 7

# Сохранить документ
db.users.save(user)

# Удалить документ
db.users.remove(user)

# Установить значение в документе
db.users.update({ 'name':'user 2' }, { "$set": { 'level':5 } })

# Кол-во документов
print 'Count',db.users.count()
print 'Count lvl=2',db.users.find({'level':2}).count()

# Сортировка
for user in db.users.find().sort('level'):
    print user
# в обратном порядке: .sort('level',pymongo.DESCENDING)
# Сортировка по нескольким атрибутам
    db.users.find({}).sort( [('status',1),('level',-1)] )

# Ограничение выборки, пропустить один документ и выбрать не более двух
for user in db.users.find().skip(1).limit(2):
    print user

# Условия
for user in db.users.find().where('this.name == "user 2" || this.level>3'):
    print user

# Выбрать неповторяющиеся записи
for user in db.users.distinct('level'):
    print user

# Поиск регулярным выражением
import re
regex = re.compile('^us', re.I | re.U) 
result = db.collection.find({ 'name':regex })

Bitrix: вывод не активного элемента в публичной части

Так завелось, что при неактивном элементе, когда снята галочка «Активность» у элемента, то возникает сложность вывести его в публичной части сайта. Для этого забираем компонент в папку с вашими компонентами. Например: копируем /bitrix/components/bitrix/news.detail/ в /bitrix/components/ak/news.detail/
Далее в файле component.php ищем строки

$arFilter = array(
    "IBLOCK_LID" => SITE_ID,
    "IBLOCK_ACTIVE" => "Y",
    "ACTIVE" => "Y",
    "CHECK_PERMISSIONS" => "Y",
    "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    "SHOW_HISTORY" => $arParams["SHOW_WORKFLOW"]? "Y": "N",
);

и необходимо за комментировать или убрать строку «ACTIVE» => «Y»,

$arFilter = array(
    "IBLOCK_LID" => SITE_ID,
    "IBLOCK_ACTIVE" => "Y",
    "CHECK_PERMISSIONS" => "Y",
    "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    "SHOW_HISTORY" => $arParams["SHOW_WORKFLOW"]? "Y": "N",
);

Вот и все. Теперь на вашем сайте можно вывести не активный элемент.

Виджет календаря для поля инпут в Битрикс

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

<input type="text" value="03.02.2015" name="date" onclick="BX.calendar({node: this, field: this, bTime: false});">

Вот офф. апи https://dev.1c-bitrix.ru/api_help/main/js_lib/data/calendar.php

tar разбить архив на несколько частей и собрать обратно

Разбить архив на несколько частей можно следующим способом:

split -b 1000m namefile.tar namefile.new.tar

В итоге мы получаем несколько архивом

namefile.new.taraa
namefile.new.tarab
namefile.new.tarai

100m означает 100 мегабайт. Можете написать 100k — это будет 100 киллобайт.
Собрать обратно их можно вот так:

cat namefile.new.tar* | tar zxvf -

Warning the user/local/mysql/data directory is not owned by the mysql user

Получил на маке данную ошибку говорящую о том, что мускуль не владелец директории mysql, нам надо выставить права:

$ sudo chown -RL root:mysql /usr/local/mysql
$ sudo chown -RL root:mysql /usr/local/mysql
$ sudo /usr/local/mysql/support-files/mysql.server start

Ошибка Ruby (kernel_require.rb:55:in `require’) при использовании brew на mac os

Получил вот такую ошибку:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/brew.rb:16:in `<main>'

Лечим в консоли:

$ sudo chown -R $(whoami):admin /usr/local
$ cd /usr/local  
$ git reset --hard  
$ git clean -df
$ brew update