<?xml version="1.0" encoding="windows-1251"?>

<rss version="2.0">
 <channel>
	<title>Сообщения блогов сайта  "BEXX: Интернет-магазин" (bexx.ru)</title>
	<link>http://bexx.ru</link>
	<language>ru</language>
	<docs>http://backend.userland.com/rss2</docs>
	<pubDate>Sun, 20 May 2012 14:14:34 +0400</pubDate>

    <item>
      <title>Виталий Оборин: Грабим Яндекс.Маркет в Битрикс за 2 клика</title>
      <description><![CDATA[Как известно, лень двигатель прогресса. Когда каждый день появляется сотня-другая новых интернет-магазинов, они невольно приходят к вопросу наполнения его качественным контентом, чтобы и фотки были, и описание, и вообще характеристики товаров и поподробней. Для большинства недостижимым идеалом качества описания товаров является Яндекс.Маркет и очень часто приходится встречать предложения о написании грабберов - скрипты, которые сами собирают информацию с сайта и желательно, чтобы сразу по прайсу в 10 тысяч позиций, всё автоматом и за день-другой. К сожалению или даже к счастью, в Яндекс.Маркете с такими халявщиками борется, например, анализируя слишком частые запросы и вставляя CAPTCHA на страницу.<br /><br /><a href="http://bexx.ru/blog/main/19.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/19.html</link>
      <guid>http://bexx.ru/blog/main/19.html</guid>
      <pubDate>Sat, 31 Mar 2012 04:03:08 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Результаты использования управляемого кеширования</title>
      <description><![CDATA[Технология управляемого кеша в 1С-Битрикс хороша, но практическое применение ее показало плачевный результат.<br /><a href="http://bexx.ru/blog/main/18.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/18.html</link>
      <guid>http://bexx.ru/blog/main/18.html</guid>
      <pubDate>Sat, 03 Dec 2011 21:29:49 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Практики управляемого (тегированного) кеша </title>
      <description><![CDATA[Примерно год назад в 1С-Битрикс в тогда еще новой версии 9.1 появился функционал тегирования кеша. Функционал очень нужный и полезный, который оказался незаменим на высоконагруженных проектах для тонкой настройки сайта.<br /><a href="http://bexx.ru/blog/main/15.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/15.html</link>
      <guid>http://bexx.ru/blog/main/15.html</guid>
      <pubDate>Tue, 18 Oct 2011 16:26:05 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Как идеи воплощаются в жизнь</title>
      <description><![CDATA[Чуть больше двух лет назад в блогах на битриксе я <a href='http://dev.1c-bitrix.ru/community/webdev/user/3420/blog/1177/' target='_blank'>высказывал</a> идею по реализации рабочего стола в админке битрикса. Просто я пытался реализовать такую фичу, но понимал, что трудозатраты на ее реализацию будут впустую, ибо битрикс рано или поздно до этого допрет сам. Прошло 2 года - <a href='http://www.1c-bitrix.ru/about/life/news/344497/' target='_blank'>допер</a>.<br /><br />Кстати, если еще у кого есть какие идеи на тему развития битрикса, то вас обязательно выслушают на специализированном <a href='http://idea.1c-bitrix.ru' target='_blank'>сервисе</a>.<br /><a href="http://bexx.ru/blog/main/14.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/14.html</link>
      <guid>http://bexx.ru/blog/main/14.html</guid>
      <pubDate>Tue, 11 Oct 2011 20:03:33 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Архивы по разработке модуля</title>
      <description><![CDATA[Пока идет активная стадия разработки новой версии модуля, решил окунуться в историю, откопал архивы. Среди архивов нашел замечательный документ от начала августа 2009 года, в котором собраны некоторые идеи, которые приходили в процессе разработки нулевой и первой версии модуля. Из серии, как это было, под катом полный список первоначальных идей, что-то реализовано было тогда, что-то реализовано будет сейчас, но большая часть, конечно же, осталась на бумаге из-за трудоемкости, невостребованности. Но для 2009 года считаю все это было актуально.<br /><a href="http://bexx.ru/blog/main/13.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/13.html</link>
      <guid>http://bexx.ru/blog/main/13.html</guid>
      <pubDate>Sat, 27 Aug 2011 21:01:34 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Авторизация Facebook в битрикс</title>
      <description><![CDATA[Постановка задачи: необходимо сделать на сайте авторизацию через Facebook Connect. Для пользователя должно выглядеть как просто кнопка facebook "войти". Реализуем программный функционал.<br /><br />Я преднамеренно решил не использовать как отдельный компонент или тем более модуль. Просто дополнительный код в шаблон сайта - в рамках разрабатываемого проекта так проще.<br /><br />Краткое описание реализации. Мы размещаем на своей странице сайта код кнопки + подключаем JS + описываем поведение кнопки. В шаблоне сайта мы размещаем код, который будет проверять данные пользователя из Facebook и авторизовывать его, если он уже есть в системе, либо регистрировать и авторизовывать его, если он нам "не известен". То есть фактически мы регистрируем в битриксе нового пользователя и сопоставляем его с пользователем Facebook по id. По сути, вот и всё. Теперь собственно техническая реализация. На странице сайта (любой отдельной, либо на всех через шаблон сайта или включаемых областей) размещаем стандартный код вызова кнопки авторизации Facebook. Выглядит это так:<br /><br />====code====<br />&#60;?if ($USER-&#62;IsAuthorized()):?&#62;<br />&nbsp;&nbsp;&nbsp;Authorized<br />&#60;?else:?&#62;<br />&nbsp;&nbsp;&nbsp;&#60;fb:login-button perms="email,user_birthday"&#62;&#60;/fb:login-button&#62;<br />&nbsp;&nbsp;&nbsp;&#60;div id="fb-root"&#62;&#60;/div&#62;<br />&nbsp;&nbsp;&nbsp;&#60;script src="http://connect.facebook.net/ru_RU/all.js"&#62;&#60;/script&#62;<br />&nbsp;&nbsp;&nbsp;&#60;script&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FB.init({appId: '&#60;?= FACEBOOK_APP_ID ?&#62;', status: true, cookie: true, xfbml: true});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;?if ($_GET&#91;'logout'&#93;=="yes"):?&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FB.logout();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;?else:?&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FB.Event.subscribe('auth.login', function(response) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.reload();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;?endif;?&#62;<br />&nbsp;&nbsp;&nbsp;&#60;/script&#62;<br />&#60;?endif;?&#62;<br />=============<br /><br />Мы проверяем авторизацию пользователя в битриксе и показываем ему кнопку авторизации через Facebook, если авторизации нет. Если пользователь авторизован в битриксе, показываем ему текст "Authorized". Если пользователь на сайт уже заходил и был авторизован через Facebook, но его авторизация в битриксе кончилась, произойдет обновление страницы и пользователь авторизуется. Также обратите особое внимание, при выходе из авторизации битрикса ($_GET['logout']=="yes") необходимо осуществлять выход из авторизации Facebook на сайт. Выход не из самого Facebook, а только с нашего сайта - по сути стираем cookie. Если их не стереть, то при следующем обновлении страницы пользователь будет авторизован заново. На кнопке авторизации Facebook &lt;fb:login-button perms="<b>email,user_birthday</b>"&gt; мы в параметрах задаем, какие данные будем запрашивать, кроме минимальных. В данном случае мы хотели бы получить e-mail и дату рождения. <br /><br />А теперь внутренняя часть кода, которую необходимо разместить в шаблон сайта в файл header.php , она небольшая, но лучше <a href='http://bexx.ru/download/facebook.auth.txt' target='_blank'>просматривать отдельно</a>. Ключевые моменты:<br />Мы проверяем, что пользователь не авторизован и стоит cookie авторизации, при этом не выполняется процедура выхода.<br />Проверяем cookie и строим хэш из его параметров. Если хэш совпадает с подписью, то проверяем дальше. Ну а дальше в общем-то всё просто - у нас два варианта: либо пользователь новый, либо старый. Соответственно если новый - регистрируем в битриксе по данным из Facebook, генерируем ему пароль. А если старый, то просто авторизуем его. Для всех пользователей задействовано поле в таблице пользователей битрикса EXTERNAL_AUTH_ID - в нем хранится id пользователя в Facebook с префиксом "fb".<br /><br />Данный функционал в принципе можно развивать до бесконечности, используя API Facebook'а. Можно практически всё.<br /><a href="http://bexx.ru/blog/main/12.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/12.html</link>
      <guid>http://bexx.ru/blog/main/12.html</guid>
      <pubDate>Wed, 17 Nov 2010 23:11:16 +0300</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Платежные документы в формате Excel</title>
      <description><![CDATA[Иногда так бывает, что заказчику надо обязательно, чтобы документы заказа из интернет-магазина выводились не как HTML-страничка, а как Excel-документ. Он так привык, ему так удобнее, привычнее и спокойнее. Возможность для этого существует, ниже описывается как это сделать. Информация для разработчиков.<br /><br />Начнем с того, что напомню, где происходит печать документов заказа. В каждом заказе есть кнопка "Печать документов", при нажатии на нее переходим на вот такую страницу.<br /><img src="/upload/blog/6f5/6f500289a9f7d4257b8330138d341fbd.png" title="" alt="" width="553" height="477" /><br /><br />Не все знают, что распечатывать можно сразу несколько документов, выделяя их в списке, удерживая ctrl. Так вот, наша задача сводится к тому, чтобы распечатываемый документ был в формате Excel, а не HTML, как это предлагается в стандартной реализации 1С-Битрикс.<br /><br />Системные шаблоны печатных документов в битриксе расположены в папке /bitrix/modules/sale/reports/ (файлы инклюдят документы из /bitrix/modules/sale/ru/reports/), а пользовательские (дополнительные) размещаются в папке /bitrix/admin/reports/. Для эксперимента можете скопировать системный шаблон документа в пользовательскую папку, изменить его. В принципе, там в шаблонах всё понятно, документация на эту тему есть. В системных шаблонах factura.php и invoice.php (счет) в комментариях описаны используемые переменные. Как раз в качестве примера для изменения как раз и возьмем счет, был HTML, станет Excel, да еще в привычном формате как бы из 1С:Предприятие.<br /><br />Очевидно, что для генерации документов Excel нам понадобится некая библиотека PHP, я использовал для этого <a href='http://phpexcel.codeplex.com/' target='_blank'>PHPExcel</a> - достаточно функциональная и с большим запасом на будущее. В моем проекте эта библиотека была размещена в /bitrix/php_interface/include/.<br /><br />Кратко поясню как будут генерироваться документы теперь. Шаблон документа - это обычный PHP-скрипт, мы в нем сразу получаем переменные заказа и можем с ними оперировать как угодно, можно получить из базы дополнительные данные, например, некие свойства элементов ИБ. Затем берем существующий файл Excel с шаблоном документа и специальными маркерами, заменяем маркеры на нужные переменные и отдаем пользователю получившийся Excel-документ. В качестве маркеров я использовал простые конструкции #FIELD#, заменяются они простым str_replace. Но есть строки, которые одной переменной не опишешь, например, список товаров - там множество строк, их придется вставлять программно. Когда Excel-файл сгенерирован, отдаем его прямо скриптом, при этом заменяем заголовки страницы. В итоге пользователь получает Excel-файл на скачивание примерно вот такого вида:<br /><img src="/upload/blog/02c/02c23f5f1a60e289f94a3680a68c5dae.png" title="" alt="" width="546" height="600" /><br /><br />Исходные коды можно скачать <a href='/download/excel_reports.zip' target='_blank'>здесь</a>. В архиве 2 файла: invoice.php и invoice.xls - их надо распаковать в /bitrix/admin/reports/ (создать папку, если нет). В файле invoice.php укажите свой путь до PHPExcel, если отличается. Отредактируйте invoice.xls как вам надо, замените реквизиты на свои, можете вставить любые другие данные, картинки в качестве логотипа.<br /><br />Важное замечание - библиотека PHPExcel не работает при установленной настройке PHP mbstring.func_overload = 2 (должно быть значение 0).<br /><a href="http://bexx.ru/blog/main/11.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/11.html</link>
      <guid>http://bexx.ru/blog/main/11.html</guid>
      <pubDate>Wed, 20 Oct 2010 23:21:50 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Экспериментальный модуль &quot;Нормальные шаблоны&quot;</title>
      <description><![CDATA[В настоящее время в модуле bexx.shop используется компоновка шаблонов целым файлом template.php, при этом header.php и footer.php используются для перехвата данных страниц с помощью буферизации PHP. Метод имеет массу недостатков, среди которых главный - необходимость использования подмены константы define("BX_BUFFER_USED", false); Буйным цветом недостатки всплыли при переходе на 1С-Битрикс версии 9.5.х, где появились новые рюшечки в панели администрирования. Собственно, после обновления системы, либо не показывается вообще ничего, либо панель показывается криво. Явно метод устарел, в этой связи были потрачены несколько драгоценных минут на создание более продвинутого костыля.<br /><br />Новый костыль пока на этапе <span style="color:#FF0000">эксперимента</span> и предлагается в виде отдельного модуля <b>bexx.normal_template</b>. Модуль крайне простой, логика работы примитивна. За основу был взят модуль компрессии 1С-Битрикс. В начале работы битрикса модуль начинает буферизацию, вконце модуль заканчивает буферизацию. В итоге имеем контент страницы. Далее просто вставляем контент в шаблон template.php, если он есть. Стандартные файлы header.php и footer.php необходимо оставить и сделать их пустыми. Ну или в header.php можно записать используемые функции для шаблона, например, генерация заголовка страницы или генерация каких-то html-блоков. Разумеется, модуль работает только для публичной части, отключается для AJAX-запросов. Так что нормально работает и AJAX с системными компонентами, с компонентами bexx.shop, корректно показывает отладочную информацию по компонентам и т.д. Скачать модуль можно <a href='http://bexx.ru/download/bexx.normal_template.zip' target='_blank'>здесь</a>. Установка стандартная - распаковываем в /bitrix/modules/, устанавливаем через админку. Буду рад любому фидбэку от испытателей.<br /><br /><span style="color:#FF0000">Важные замечания</span>: в шаблоне template.php не будут работать отложенные функции, вместо них надо использвать нормальные. <br />вместо $APPLICATION-&gt;ShowMeta() следует использовать $APPLICATION-&gt;GetMeta()<br />вместо $APPLICATION-&gt;ShowPanel() следует использовать $APPLICATION-&gt;GetPanel();<br />и т.д.<br />Отложенные функции также могут использоваться в системных компнентах, например, bitrix:breadcrumb. Следует исключить этот компонент из шаблонов.<br /><br />Модуль совместим с текущими шаблонами модуля bexx.shop. Не забудьте удалить define("BX_BUFFER_USED", false); из файла /bitrix/php_interface/dbconn.php, а также удалить буферизацию из header.php / footer.php, в них надо оставить только свои функции, если есть.<br /><br /><b>Модуль не совместим с модулем компрессии!</b><br /><a href="http://bexx.ru/blog/main/10.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/10.html</link>
      <guid>http://bexx.ru/blog/main/10.html</guid>
      <pubDate>Sat, 09 Oct 2010 02:13:57 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Roadmap по состоянию на август 2010</title>
      <description><![CDATA[Хочу поделиться со всеми планами по развитию модуля на ближайшие полгода. Развиваться есть куда, планов куча, а времени как обычно мало, поэтому приходится постоянно выбирать между хотелками и возможностями. Просьба всем заинтересованным пользователям оставить свое мнение, что реально необходимо вот сейчас и всем, а что можно отложить в долгий ящик.<br /><a href="http://bexx.ru/blog/main/9.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/9.html</link>
      <guid>http://bexx.ru/blog/main/9.html</guid>
      <pubDate>Tue, 24 Aug 2010 01:26:15 +0400</pubDate>
    </item>

    <item>
      <title>Виталий Оборин: Переезд на новый хостинг</title>
      <description><![CDATA[Наконец-то руки дошли до смены хостера. Был Ру-Центр, теперь ТаймВеб. Причин для переезда несколько, главная из них - нехватка места и замороченность с покупкой нового. В Ру-Центре всего 3 тарифных плана, отличающихся по сути только используемым местом. Был тарифный план за 510 рублей/месяц, по нему предоставлялось 3 Гб места. Когда место кончилось, пришлось покупать такой же хостинг за те же 510 рублей с теми же 3 Гб места и объединять их, перераспределяя дисковое пространство - маразм какой-то. В итоге имеем 6 Гб за 1020 рублей в месяц. Теперь и 6 Гб кончилось, покупать третий хостинг уже как-то накладно, за 1530 рублей можно взять очень много разных других хостингов, где места будет куда больше 9 Гб. В общем, пришлось переехать на ТаймВеб - 825 рублей за 10 Гб - вполне сносно. Да, конечно если поискать, попробовать, можно найти и получше и подешевле и места побольше. Но не до поисков сейчас. По производительности серверов и качеству обслуживания примерно одинаково.<br /><br />Ну и пользуясь случаем, не могу не упомянуть немецкий хостинг - hetzner.de, очень меня радуют их тарифы, например аренда выделенного сервера Intel® Core™ i7-920 Quadcore с 8 Гб памяти и 2х750 Гб дисками на борту всего за 50 евро в месяц, правда там еще установка +150 евро единоразово. До такого хостинга я со своими мелкими проектами еще не дорос, но всё впереди. Размещаем у них один очень большой проект клиента уже полгода, всем довольны, никаких сбоев и нареканий. Так что если у кого-то большие проекты, лучше туда, там цивилизация.<br /><a href="http://bexx.ru/blog/main/8.html">Подробнее...</a>]]></description>
      <link>http://bexx.ru/blog/main/8.html</link>
      <guid>http://bexx.ru/blog/main/8.html</guid>
      <pubDate>Fri, 20 Aug 2010 17:46:17 +0400</pubDate>
    </item>

  </channel>
</rss>
