Задача в общих чертах: создать раздел с конкурсом, разбитый по регионам, с возможностью добавления работ зарегистрированными участниками, голосованием раз в сутки за каждую работу и подсчетом рейтинга, защитой голосования от накруток, комментированием работ, автоматическим определением финалистов каждую неделю. Теперь по подробней
Механизм голосования: каждый пользователь, как зарегистрированный, так и анонимный, может проголосовать за каждую работу не более одного раза в сутки, поставив баллы от 1 до 5. Рейтинг рассчитывается суммированием баллов. Отключение голосования за работы финалистов.
Вот и все. На редакции "Малый Бизнес" 11.0.4 все работает. По аналогии можно сделать и с компонентом "bitrix:sale.order.full". Если вы используете модуль "Расширенные уведомления о заказах", то править придется /bitrix/modules/bestrank.salemail/include.php, надеюсь ребята не обидятся, что я влез в их код
Срочно требуется программист с хорошими навыками разработки на Битрикс. Только PHP, никакой верстки!
Создание новых проектов
Доработка существующих крупных проектов
Для уточнения, открыто две вакансии. Вилка З/П 25 - 55 т.р. - в зависимости от уровня кандидата.
Если вы живете в Санкт-Петербруге (или планируете переезд), у вас хорошие навыки PHP и вы готовы работать в офисе - жду ваших резюме на work [a] eldario.ru
Опыт работы с joomla‚ netcat‚ bitrix, umicms, yii и т.д. будет плюсом;
Навыки HTML‚ CSS;
Умение разбираться в чужом коде;
Аккуратность и способность быстро обучаться.
Обязанности:
Разработка проектов (PHP5/MySQL/JavaScript);
Доработка существующих проектов (PHP4/PHP5/MySQL/JavaScript);
Доработка и разработка проектов на коммерческих CMS.
Условия:
Пятидневная рабочая неделя;
Режим работы с 10 до 19;
Работа в центре города (м. Садовая / м. Сенная);
Возможность самореализации и карьерного роста;
Размер заработной платы определяется после собеседования;
Испытательный срок от 1 до 2 месяцев.
P.S. Если Вы не живете в Санкт-Петербурге, не планируете переезд, а так же ваши зарплатные ожидание гораздо выше заявленных в вакансии и, быть может, вы не готовы работать в офисе - с удовольствием прочитаю ваши комментарии к данному посту. Буду только благодарен, если ваши комментарии поспособствуют улучшению описания данной вакансии и помогут найти специалистов.
- обновлен CentOS 6 до текущего состояния - включена возможность управления виртуальной машиной через VMWare GUI интерфейс () - обновлен rpm пакет BitrixEnv3 до текущего состояния (исправлены мастера создания кластера, скрипт настройки msmtp)
Сегодня описывал техподдержке один нетривиальный баг в работе компонентов в режиме ajax, да столько понаписал, что появилось желание посвятить этому багу пост во блоге.
Итак. Как известно, любой компонент битрикса гипотетически может работать в режиме ajax — для этого лишь надо в параметрах подключения компонента указать AJAX_MODE => Y. При наличии этой опции система сама подменяет нужные ссылки и сабмиты форм на js-вызовы ().
При клике по ссылке, ведущей на этот же компонент, серверу отправляется асинхронный запрос через XHR. При отправке же данных из формы передача данных происходит через скрытый iframe. Результат запроса в обоих случаях вставляется через innerHTML и, как следствие, js-скрипты при такой вставке не исполняются. Для обхода этого ограничения в битриксе были разработаны специальные методы для отработки javascript в контексте страницы.
Возвращаемся к проблеме. В 10 версии продукта сабмиты форм отлавливались путём добавления атрибута onsubmit к форме (bitrix/modules/main/ajax_tools.php):
function GetFormEvent($container_id)
{
return 'onsubmit="BX.ajax.submitComponentForm(this, \''.htmlspecialchars(CUtil::JSEscape($container_id)).'\') ; "' ;
}
И всё было прекрасно вне зависимости от набора данных, возвращаемых аякс-запросом.
В 11 версии обработчик на сабмит стал вешаться не через атрибут onsubmit, а байндингом с помощью addEventListener, т.е. подписка на событие происходит путем вызова js-кода. Вроде бы всё ок и в преобладающем большинстве случаев оно работает. Однако, из-за особенностей реализации выполнения js-кода, передаваемого компонентом в ответе, возможна ситуация, когда байндинг не будет происходить после получения ajax-ответа и всё будет ломаться. Вот в такой ситуации и оказались читатели одного интернет-СМИ.
Пользователь открывает страницу, на которой размещён компонент с формой и включенным аяксом. Система генерирует js-код, который навешивает обработчик сабмита формы:
Код выполняется, обработчик навешивается. Пользователь нажимает кнопку «Отправить» в форме. Обработчик перехватывает этот вызов, создаёт скрытый ифрэйм, в который сабмитится форма. В этот же момент к ифрэйму добавляется обработчик на событие onload — замена текущего вывода компонента новым html-кодом, пришедшим в качестве ответа:
Таким образом, при получении результата аякс-запроса мы имеем два асинхронных потока выполнения: первый поток в событии load ифрэйма, второй - в самом ифрейме (назовём его ready аналогично jQuery):
ready выполняется, когда html-код (именно код, не ресурсы) страницы полностью загружен в ифрэйм
load выполняется, когда все ресурсы (стили, картинки, т.п.) загрузились. Т.е. фактически, когда вся страница готова к просмотру.
Если в ответе приходит html-код, не обременённый большим количеством ресурсов, всё работает замечательно. Однако, если в теле ответа на ajax-запрос присутствует, например, тяжёлая/долго отдаваемая картинка, происходит нештатная для текущего алгоритма ситуация: отложенный js-код начинает исполняться, а DOM ещё прежний — не произошла подмена старой области вывода компонента новой. Конкретно — не происходит байндинг события на форму, потому что формы с таким ID ещё не существует. Мы натолкнулись на эту проблему при использовании iblock.element.add.form с аяксом, в котором включена капча - если оная не успевается сгенерироваться и отдаться за ~300 миллисекунд, байндинг сабмита не происходит и следующий сабмит формы идёт уже не аяксом, а обычной перезагрузкой страницы, в итоге пользователь видит вывод компонента на пустой странице (т.к. AJAX_CALL=Y).
По этой проблеме был создан тикет, но был получен отлуп — «У компонента iblock.element.add.form нет ajax режима работы». Формально всё верно, т.к. галочки соответствующей у компонента действительно нет.
Однако, есть документация по работе компонентов в режиме ajax, которая регламентирует аякс-режим работы любого правильно сделанного компонента. Что ж, не будем ничего доказывать, копаем сами. Возникновения подобной проблемы можно добиться на любом стандартном компоненте с долго отдаваемой фотографией. Сделать это очень просто — втыкаем на страницу комплексный компонент catalog со включённым компонентом фильтра. В шаблон каталога производим вставку картинки:
<img src="/formtest_delay.php"/>
Содержимое скрипта-«картинки»:
<?php
delay(2);
?>
Отключаем временно показ этой картинки. Открываем каталог (ссылка вырезана цензурой:-)), нажимаем кнопку «Сбросить» в фильтре — каталог нормально отображается. Нажимаем ещё раз — всё ок.
Теперь подключаем картинку, проводим те же самые манипуляции. Нажимаем первый раз «Сбросить» — каталог прогрузился, однако, выскочила js-ошибка вида (копипаст из firebug):
top.BX("bxajaxid_9a85781ad70d7286c61a136298f44d6e_693") is null
[Break On This Error] <meta name="keywords" content="1С-Битр...rix, система управления контентом" />
При повторном нажатии на «Сбросить» страница уже перегружается и на ней отображается вывод компонента без шаблона сайта. Как раз то, что нужно — неведомый баг, который я отлавливал на протяжении полутора дней. Просто, быстро, но печально.
Стабильная повторяемость бага достигнута, теперь бы надо его пофиксить. Часик поразмышляв над нарисованными в тетради схемами вызовов всех функций, приводящих к багу, родилось два вариант Из очевидных решений на ум пришло два:
1. Реализация deferred-обработчиков load+ready для ифрэйма с костылем под обычный xhr.
2. Двухстрочный файлов ядра, позволящий сделать исполнение js-кода, выводимого компонентов, всегда после замены вывода компонента, тем самым решая проблема с асинхронностью. Сурово, но иначе никак. Без копания в ядре нижеприведённый патч вам ничего не скажет, но разобрать проблему и не показать решение было бы подло:-)
Как ни странно, столь развёрнутый разбор проблемы не вызвал никаких возражений со стороны саппорта, поэтому тикет погулял по нескольким ответственным и направился в отдел разработки. Бага признана незначительной, однако надеюсь, что фикс выйдет действительно в ближайших обновлениях системы, а не в далёком и туманном будущем
Доброго времени суток. С момента выхода модуля "Веб кластер" стала актуальна задача выноса таблиц произвольного модуля в отдельную базу данных. Делается это по разным причинам, главные из которых повышение производительности и стабильности проекта в целом.
Опубликовал у себя 2 статьи, посвящённые некоторым интересным (на мой взгляд) графикам, иллюстрирующим партнёрство с 1С-Битрикс:
Отдельное спасибо Роману Забродину за его статью про выступление на конференции. Только прочитав такой материал, не относящийся напрямую к разработке я решил, что возможно мой опыт и мои мысли кому-то могут быть интересны.
Напомню небольшую предысторию:
я являюсь партнёром 1С-Битрикс с 23.03.2009
первые баллы получил за заполнение партнёрской анкеты
первые настоящие баллы получил 2.10.2009
25.09.2010 стал Сертифицированным
09.09.2011 стал Золотым (и примерно в то же время потерял сооснователя и "треть" команды)
14.10.2011 мы вошли в ТОП100 партнёров (публичной части рейтинга)
Ранее была написана подробная статья-отчёт о том .
В двух данных статьях я пытаюсь проанализировать просто ли это чреда случайностей, снежный ком или есть какая-то иная закономерность в достижении наших результатов.
С детства боюсь публичных выступлений -- начинаю волноваться, нервничать, заикаться, становлюсь рассеянным. По этому, всю жизнь избегал выступлений на публике, особенно в институте (последний опыт -- чтение стихотворения в 11 классе на уроке литературы.) Причем, с 1-3 представителями заказчика общаюсь нормально.
Всегда с огромным восхищением наблюдаю за тем, как спокойно и уверено общаются с аудиторией: Рыжиков, Сидоренко, Михаил Токовинин, Роман Петров и вот тоже решил все таки хоть немного начать прокачивать себя в этом направлении.
Сейчас для того, чтобы информировать пользователей моего решения "Калькулятор услуг" () мне приходится это писать прямо в отзывы, что по смыслу с моей стороны - не правильно.
Предлагаю обратиться к Битриксу с просьбой интегрировать блоги разработчиков с отзывами на странице продукта в Marketplace - следующим образом:
1. Блог разработчика (если разработчик использует его для сопровождения продукта) выводится на странице модуля после закладки "Установка" с надписью "Блог разработчика" или "Поддержка в блоге".
2. Фамилии людей в отзывах являются ссылками по которым можно отправить личное сообщение с информированием о решении проблемы.
3. Пункт 2 можно сделать на множестве записей пользователей, выбрав их чекбоксами.
4. Сообщение, отправленное в п. 2-3, по желанию разработчика может появляться как комментарий к отзыву, причем, в случае множественной отправки, полный текст сообщения приводится только для самого свежего по дате отзыва, а в остальных дается только ссылка на этот текст.
5. Для блогов "завести" разделы, чтобы в случае поддержки нескольких модулей - каждая поддержка осуществлялась в своей ветке.
Тесты — это хорошо, а когда есть готовая платформа для тестирования с интерфейсом и корпоратичный чеклист, каждый пункт которого содержит до двух литров крови программиста или менеджера, то почему бы не попробовать сделать свои автоматические тесты качества?
Часто размышляю на тему, что будет дальше. Ну вот сейчас мне 27, последние 5 лет программирую под битрикс и в общем-то считаюсь в своей компании ценным специалистом на хорошей зарплате. Но скоро пенсия, что будет дальше? Когда мне будет через 10 лет 37 лет, неужели я по-прежнему должен буду сидеть и ваять сайтики для непонятных клиентов? При этом многие клиенты уже сейчас моего возраста, а то и моложе. А рынок развивается не качественно и по ценам вверх, а исключительно вширь. Если 5 лет назад днем с огнем не сыскать нормального программиста под 1С-Битрикс, то сейчас раз в 100 стало больше таких специалистов и компаний, при этом они предлагают цены ну просто неадекватно смешные. Сегодня я не возьмусь за сайт с ценой работы меньше 1000 евро, но клиент всегда может найти тех, кто заявит, что сделает ту же работу за 100-200 евро. Понятное дело (для меня, по крайней мере), что клиент начинает сильно рисковать, выбирая такого исполнителя, но зачастую жадность сильнее здравого смысла. И вот к чему мы стремимся-то в итоге, что мы будем делать через те же самые 10 лет? Я уверен, что и через 10 лет будет существовать битрикс и также по-прежнему на него будут востребованы качественные специалисты. Я уверен, что на рынке не может быть масса дорогих специалистов и компаний, как QSoft, например, все рынки всегда делятся на ценовые ниши. Получается, что мне, хорошему специалисту, попасть в поток дорогих проектов через 5-10 лет в общем-то невозможно? Ну или "очень трудно". Да и в общем-то - это не успех, а просто качественное развитие нынешней ступени. Лично я не вижу себя программистом под 1С-Битрикс лет через 10, сижу такой в свитере и пишу код для какого-нить малолетнего чувака, который решил открыть очередной портал для сёрферов.
Мне интересно, а чем вы собираетесь заниматься через 10 лет? К примеру, 50% американских подростков убеждены, что в 40 лет они станут миллионерами. Я прикидывал несколько вариантов, как можно развиваться, но все они мутные, нет простого и понятного развития для "работника". То есть по сути у меня, как и у многих из вас, нет карьерной лестницы. Развитие по карьере дальше возможно только непрограммистом, а каким-нибудь менджером, начальником, руководителем проекта и т.д. - это не относится к программированию и к битриксу в частности. Так получается, что программист под 1С-Битрикс - это просто промежуточная станция по пути к успеху?
Вот удивительный пример сейчас видел.Главная страница вся из себя навороченная, слайдеры, крутилки и последние просмотренные твоары, текст, полезные ссылки...
А в html коде куча вложенных друг в друга div'ов с классами типа area1, area2, area3, и тд и тп. Нет, компоненты конечно тоже вызываются - до прямого PHP кода люди не опустились. Но в целом подобное конструирование страниц кажется вам приемлемым?
Наконец-то удалось перевести сайт на Битрикс и осуществить переезд на новый домен, в следствие чего значительно упала посещаемость, но это я уверен дело времени.
Сайт полностью написан на API битрикс, из стандартных компонентов только редактирование профиля пользователя и авторизация, за авторизацию в соц сетях отдельное спасибо разработчикам.
Сайт получился довольно симпатичный и шустрый, не смотря на объем информации и, что удивительно работает на простом хостинге и на простом тарифе, что подтверждает, что Битрикс может и в таких условиях вполне не плохо ужиться. Вот собственно и ссылка , ,
P.S. Сайт не коммерческий, в свое удовольствие так сказать..
Все знают чудесное событие из названия поста, OnBeforeBasketAdd, которое позволяет перед добавлением товара в корзину внедрить свою логику.Но все ли знают, что сами поля обработчик этого события изменить не может?
Очень скоро выходит 11 версия Битрикса. В нем по идее должны появится примеры создания нативных приложений для мобильных платформ. Данным постом я хочу продемонстрировать как создать заготовку для таких приложений. Будут рассмотрены вопросы: 1/ технологии 2/ как создавать приложение 3/ динамическое создание структуры
Вопрос синхронизации данных с Битриксом оставим для следующего топика (появится после выхода обновления)
Платформа: Android. (для остальных платформ ситуация аналогичная)