iЛаборатория » Работа

Заметка по CMS Joomla

Добрый вечер!

Совсем не давно по работе столкнулся с такой проблемой: необходимо в CMS Joomla сделать возможность редактирования TITLE тега, так как данная CMS изначально не дает такой возможности.

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

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

Для решения данной задачи, необходимо открыть вот этот файл:

\libraries\joomla\document\html\renderer\head.php

Находим 53 строку, в которой объявляется функция fetchHead(). Далее в 77 строку вставляем вот такой вот нехитрый код:

Читать полностью… »

Усовершенствованный компонент 1С-Битрикс bitrix:menu

Добрый день, дорогие читатели!

Если Вы следите за моим  twitter‘ом, то наверное, читали твит анонс, в котором я говорил про пост о 1С-Битрикс и jQuery меню. В данный момент, решил не много отдохнуть от работы и диплома, поэтому выкладываю пост.

Как видно из названия, в данном посте пойдет речь о стандартном компоненте 2.0 CMS 1С-Битрикс, который я немного усовершенствовал под свои нужды. Начну из далека, по работе дали задание, в котором требуется реализовать раскрывающиеся меню с сохранением раскрытых пунктов при переходе и реализовать все это на файлах меню (.left.menu.php). Как только я получил данное задание, задумался о том, как же реализовать меню на файлах? До этого я сталкивался только с меню строящимся из информационных блоков. Сразу бросается в глаза, что можно использовать стандартный компонент bitrix:menu, в котором есть все необходимые настройки, кроме одной: вывод полного меню на любой странице, даже после перехода.

Формулировка задачи

Во-первых, необходимо доработать компонент bitrix:menu и научить его всегда выводить выбранное меню (left) от корня сайта. Во-вторых, привязать меню на jQuery с плагином jQuery.cookie. Со вторым пунктом все намного проще, так как наработки в данном направлении уже имеются и о них я писал на блоге (пост “Меню на jQuery“). С первым в общем-то тоже проблем не было, нужно было только придумать как все красиво подправить, чтобы это работало, было удобно и можно было использовать в других проектах. С постановкой задачи мы определились, пора приступать к реализации.

Читать полностью… »

Работа, работа и еще раз работа

Всем привет!

Извиняюсь, что так долго не писал, просто было очень много работы, да и учеба уже началась, поэтому времени крайне мало…ну и конечно же надо еще и отдыхать от компьютера ;) Сейчас кратко расскажу о том, чем занимался все это время, начну конечно же с работы.

Сегодня ровно 2 месяца, как я устроился программистом, что же было за эти два месяца? За такое не большое количество времени я получил очень большой опыт работы с CMS 1С-Битрикс, научился писать компоненты, настраивать сайт и портал, разобрался с довольно большим количеством модулей данной CMS, сдал 10 курсов по сертификации и многое многое другое! Остановлюсь подробнее на заданиях, которые мне дают, во-первых, написал много компонентов, таких как авторизация, восстановление, добавление статей пользователями, отправка сообщений тех.поддержке с разными шаблонами для зарегистрированного и незарегистрированного пользователя и другие. Очень понравилось заниматься интеграцией дизайна, хоть и сложно достаточно, но все же… Работая с модулями, нашел несколько недочетов разработчиков – в общем работал достаточно продуктивно!

Попутно разработке, сдавал тесты сертификации разработчиков, все нормально, кроме нескольких курсов, которые пока не могу сдать, так как много не однозначных вопросов. Вообще все эти курсы достаточно странная штука, много информации и естественно по ней вопрос, которая программистам, т.е. разработчикам, вообще не нужна, но сдавать приходится. Одно точно знаю, плюсов от получения таких сертификатов, намного больше! Как пример, много раз встречал, просматривая вакансии php-программиста, требование – наличие всех сертификатов разработчика CMS 1C-Битрикс  и опыт работы с данной системой.

По учебе тоже скоро начнется завал, так как в данном семестре у меня диплом бакалавра, главное уже выбрал тему, осталось только переговорить с куратором и можно приступать, реализовывать думаю буду на C#. В продолжение темы учебы, в этом семестре один курсовой проект по экономике предприятия и курсовая работа по социологии. Кстати, по социологии хапнул очень интересную тему, ну лично мне, так что думаю напишу достаточно быстро и главное с интересом. Так же в данном семестре новый предмет “Искусственный интеллект систем управления” – думаю предмет интересный, но на первой лекции так и не побывал – проспал…Но наверстаем.

Про свой проект плагина для WordPress’a тоже помню, скоро надеюсь найду время и напишу некоторый важный функционал, такой как виджет в сайтбар. Из своих глобальных проектов, есть еще один очень интересный, но о нем в будущем напишу, так как проект только начал реализовывать, а так большая часть только на бумаге. Скажу одно, что при помощи данного ПО, надеюсь получить инвайт на Хабр, так как ему и будет посвящена программа.

В общем планов море, а времени как то не очень, но надеюсь все и везде успевать, так что думаю скоро буду интересные посты, программы и так далее!

С уважением, Главный Лаборант!

Я сейчас работаю над…

Добрый вечер!

Хотелось бы рассказать над чем я сейчас работаю! Как Вы знаете, я работаю программистом в одной фирме, а так же работаю ИП’ником, ну и конечно же поддерживаю себя в форме и для себя пишу программки и реализую свои проекты. В последние дни за работай и своими проектами провожу очень много времени и вот, чем я занимался сейчас расскажу.

Начну со своей работы программистом в фирме, тут все очень даже…плохо :( С одним заданием уже сижу немерено времени, а все из-за того, что много трудностей в готовых компонентах Битрикса :( Например, сейчас вообще в тупике с компонентом вывода результатов и формы голосования, в общем тут все движется, но, увы, совсем не спеша. Остается только надеяться, что сегодня решу все возникшие проблемы и доделаю…

С ИП, относительно предыдущего – все более менее. Завтра или послезавтра буду подписывать договор на поддержку сайта на год, а в общем поддерживать тот сайт буду уже 3 год – постоянство радует :) Правда обновлений там совсем не много и следовательно и денег тоже не много на этом зарабатываю, но это лучше, чем совсем ничего ;) Хотелось бы конечно найти заказ на сайт, но пока, что то никто не обращается, а жаль…

И последним пунктом будут мои проекты. В данный момент изучаю тему написания плагинов на WordPress. Уже начал писать свой плагин, аналогов, лично я не видел, так что думаю будет востребован. Вот по своим проектам много, чего могу рассказать, но так как все они в стадии глубокой альфы – не буду. Скажу только, что первый плагин должен будет выйти в течении недели, а вот второй намного дольше.

Еще в последнее время заинтересовала разработка под ОС Android, вот хожу пускаю слюни на коммуникаторы – денег нет :( (( Но я надеюсь, что я найду их и куплю себе все таки Android’a, так как разработка программного обеспечения под данную ОС в данный момент очень востребована, да и лично мне очень интересна.

Ну, а Вам советую, подписываться на RSS ленту, чтобы не пропустить выход плагинов и других программ от меня ;)

С уважением, Главный Лаборант!

Работа. Опять 1С-Битрикс

«Пишите код так, как будто сопровождать его будет

склонный к насилию психопат, который знает, где вы живете». (с)

С. Макконелл

Как я уже писал работаю я сейчас с CMS 1С-Битрикс и опять таки, как я уже говорил система имеет свои плюсы и минусы. В данный момент у меня задание: реализация добавления опроса зарегистрированным пользователем. Задача не скажу что совсем уж сложная, необходимо написать компонент 2.0 с определенными настройками и в общем то все. Но как говорится не бывает все так просто…



Основная проблема заключается в том, что по умолчанию в редакции “Стандарт” возможно добавлять опросы только администратору и продвинутым юзверям, нас это не устраивает и мы реализуем компонент. С реализацией проблем не возникло, в данный момент компонент написан и запросто выполняет следующие действия:

  • настройка и добавление опроса;
  • настройка и добавление любого количества вопросов;

Я радостный сообщил о том, что разработка данного компонента закончена, но вскоре обнаружил, что оказывается не один опрос, созданный через мой компонент, не активирован. Ну тут все понятно, необходимо просто поставить вместо значения “N” параметра ACTIVE – “Y”, но не тут то было…После установки параметра “Y”, т.е. мы явно указываем, что необходимо сразу активировать наш опрос, получаем ошибку о невозможности записи опроса в базу данных…и что бы я не пробовал и передача из формы, и установка checkbox’a, как в админке – всюду эта ошибка. Единственное что запросто “съедала” функция – это TRUE, но при этом в базу записывалось значение “N”…

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

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

В настоящее время данные компоненты функционируют, но работа над ними еще не окончена. И что то мне подсказывает, что это не конец…

С уважением, Главный Лаборант!

Удаленная работа – мысли вслух

Добрый день!

Извиняюсь, что давно ничего не писал, как Вы наверное догадываетесь во всем виновата сессия, да и работал до этого. Данный пост в общем то как раз о работе. Захотелось поделится своими мыслями по поводу работы во время учебы.

Удаленная работа - все плюсы и минусы

В данный момент я работаю php программистом в одной Питерской фирме, работаю удаленно, т.е. мне присылают задание и я выполняю его дома за своим ноутбуком. Данный вид работы я считаю самым оптимальным и выгодным для одной и другой стороны. Сейчас попробую объяснить почему я так считаю.

Читать полностью… »

Эстафета #1. Идеальное место для работы.

Добрый вечер!

Это моя первая эстафета, так что строго не судите :) Суть эстафеты поделится своими мыслями насчет идеального рабочего места. Начну само собой я, сразу хочу предупредить у меня будет достаточно много фоток, так что знайте!

Теперь не много информации об эстафете, я смог (почти) воссоздать свое идеальное рабочее место, т.е. я смог сделать фотографии. Во всяком случае по фотографиям, хотя бы наглядно будет видно, что я имею ввиду. Если не получается с фотками, то и ладно, хотя бы просто опишите, мне будет очень интересно почитать, надеюсь как и другим!

Читать полностью… »

Работа -> трабл() или хитрый Битрикс

Всем привет!

Сейчас, я думаю, все программисты меня поймут! В общем дело такое, пишу по работе класс для системы CMS 1С-Битрикс, с заданием все понятно, единственная проблема была это использование связки PHP (само сабой) + MySQL + AJAX.

А программисты поймут меня в том, что: когда придумываешь как красиво все исполнить и это не получается – это очень обидно…

Мускул мы используем для хранения данных, аяксом их оттуда вытаскиваем или наоборот записываем. Конечно же есть какие то данные, но в данном контексте не суть какие. Самое трудное это использовать встроенный класс для работы с базой данных, так как писать отдельный нет ни какого желания.

Придумал выход. Выход такой: объявляем статическую переменную в классе с именем $_DBs, объявляем и пишем статический класс, вот листинг:

1
2
3
4
5
6
        //Статический метод - через него получаем объект 
	//класса CDatabase для работы с базой данных
	public static function _setDBStatic(CDatabase $db)
	{
		Rating::$_DBs = $db;
	}

Перед созданием объекта нашего класса мы вызываем данный статический метод и по идее у нас для всех классов должен существовать статический объект класса CDatabase, что уже хорошо, но не совсем нас устраивает. Не устраивает нас тем, что работать с базой данных через него очень опасно, так как он один на все объекты, в итоге пишем открытый метод который просто копирует данный объект в закрытый объект каждого экземпляра нашего класса, вот листинг:

1
2
3
4
        public function _setDBObject()
	{
		$this->_DB = Rating::$_DBs;
	}

По идее данный класс должен без проблем перекочевать в закрытую переменную с именем $DB и далее в классе мы можем спокойно к нему обращаться, но выскакивает ошибка:

Fatal error: Call to a member function Query() on a non-object in {...}/class.Rating.php on line 140

Как видно из описания ошибки – нет объекта. И вот что я думаю, либо я на ночь глядя не соображаю, либо хитрые разработчики 1С-Битрикса прописали волшебный метод __clone(), который просто ничего не клонирует. И вот как быть? В общем надо колдовать…или поспать…

Путь Джедая – от граблей к опыту

Доброй ночи, а кому то уже и утра :)

Этот пост о наболевшем :) По моему плану, сегодня должен был выйти пост о компонентах, но в связи с событиями сегодняшней ночи – он откладывается.

Читать полностью… »