Заметка по CMS Joomla
июня 26, 2010 CMS, PHP, Программирование, Работа
Добрый вечер!
Совсем не давно по работе столкнулся с такой проблемой: необходимо в CMS Joomla сделать возможность редактирования TITLE тега, так как данная CMS изначально не дает такой возможности.
Писать сложные компоненты или еще что либо подобное было лень, так как не было такой необходимости. В общем был нужен любой способ решения, как Вы наверное понимаете, необходимо это было для оптимизации страниц под поисковые системы.
Сразу хочу сказать, что полно готовых модулей для этих целей, но опять таки они мне не подходили по ряду причин и поэтому было принято решение редактировать функции Joomla.
Для решения данной задачи, необходимо открыть вот этот файл:
\libraries\joomla\document\html\renderer\head.php
Находим 53 строку, в которой объявляется функция fetchHead(). Далее в 77 строку вставляем вот такой вот нехитрый код: Читать полностью… »
Метки: CMS, CMS Joomla, PHP
Усовершенствованный компонент 1С-Битрикс bitrix:menu
Апр 25, 2010 1С-Битрикс, CMS, JavaScript, PHP, Программирование, Работа
Добрый день, дорогие читатели!
Если Вы следите за моим twitter‘ом, то наверное, читали твит анонс, в котором я говорил про пост о 1С-Битрикс и jQuery меню. В данный момент, решил не много отдохнуть от работы и диплома, поэтому выкладываю пост.
Как видно из названия, в данном посте пойдет речь о стандартном компоненте 2.0 CMS 1С-Битрикс, который я немного усовершенствовал под свои нужды. Начну из далека, по работе дали задание, в котором требуется реализовать раскрывающиеся меню с сохранением раскрытых пунктов при переходе и реализовать все это на файлах меню (.left.menu.php). Как только я получил данное задание, задумался о том, как же реализовать меню на файлах? До этого я сталкивался только с меню строящимся из информационных блоков. Сразу бросается в глаза, что можно использовать стандартный компонент bitrix:menu, в котором есть все необходимые настройки, кроме одной: вывод полного меню на любой странице, даже после перехода.
Формулировка задачи
Во-первых, необходимо доработать компонент bitrix:menu и научить его всегда выводить выбранное меню (left) от корня сайта. Во-вторых, привязать меню на jQuery с плагином jQuery.cookie. Со вторым пунктом все намного проще, так как наработки в данном направлении уже имеются и о них я писал на блоге (пост “Меню на jQuery“). С первым в общем-то тоже проблем не было, нужно было только придумать как все красиво подправить, чтобы это работало, было удобно и можно было использовать в других проектах. С постановкой задачи мы определились, пора приступать к реализации. Читать полностью… »
Метки: 1С-Битрикс, JQuery, Компонент 2.0, Пример, программирование
Шаблон проектирования Singleton
Апр 20, 2010 PHP, Программирование
Добрый вечер!
Сегодня хотелось бы “пролить свет” на такую особенность создания крупных приложений, как Web направленности, так и оффлайн программ – как проектирование. Под проектированием системы понимается создание проекта программного обеспечения, на выходе мы должны иметь технический проект. Грамотное проектирование позволяет избежать многих проблем в будущем, связанных с расширением программы и доработками.
При проектировании программного обеспечения используют паттерны. Паттерн – это шаблон, т.е. готовое решение какой-либо задачи разработки ПО. При правильном подходе к проектированию и использованию шаблонов проектирования, мы получим мощный, гибкий, легко расширяемый и изменяемый программный код или продукт. Согласитесь это очень полезно, особенно тогда, когда проект разрастается до внушительных размеров.
Сегодня я попытаюсь рассказать о шаблоне проектирования Singleton.
Метки: PHP 5, Singleton, ООП, Паттерн, программирование, Проектирование, Шаблон проектирования
Интересный вопрос по PHP
марта 17, 2010 PHP
Доброго времени суток!
Да давненько я ничего не писал, но я думаю все прекрасно понимают, что совмещая работу и учебу, остается очень мало времени на личные дела. Но данная заметка не об этом. Сегодня хотел бы показать Вам очень интересный вопрос из тестирования по PHP 5, вопрос больше на внимательность и знание синтаксиса языка.
Вопрос такой: Какой результат выполнения данного программного кода?
Программный код:
$arParams = array("Первый параметр","Второй параметр","Третий параметр"); $count = count($arParams); if($count = 0) echo 0; else echo "Количество параметров: ".$count;
Варианты ответа:
- 0
- Количество параметров: 3
- Количество параметров: 0
Многие будут говорить, что задача элементарная, с этим я конечно спорить не стану, но до чего же красивая и логичная. А еще мне она очень понравилась тем, что сразу показывает врубается ли человек в синтаксис PHP и тем, что это просто хорошая задача на внимательность.
А Вы знаете какие-нибудь, интересные задачки из этой же серии? Было бы очень интересно почитать!
С уважением, Главный Лаборант!
Интересные решения на PHP
марта 5, 2010 PHP, Интересности, Программирование
Добрый день!
Сегодня, как видно из названия поста, я бы хотел поделиться интересными способами решения задач (определенных), на языке программирования PHP. Хотелось бы показать интересный способ работы с ассоциативным массивом, на примере решения задачи: “нахождение коэффициентов”, интересный способ получения переданных переменных ($_POST[], $_GET[]). Данные способы не претендуют на оригинальность, но они по-своему красивы, вот это я сейчас и попытаюсь Вам показать.
Первое решение, связанно с лабораторной работой, которую я недавно делал студенту программисту. Лучше всего сразу рассказать об области применения, так я думаю и реализация станет намного понятнее. Данный метод применяется в функции, основной задачей которой является нахождение коэффициентов и присваивание полученных коэффициентов – ассоциации. Под ассоциацией я понимаю слово (символ) ключ. Сразу же уточню, что данный метод не просто вносит в массив пару ключ – значение, а сразу проверяет, есть ли такая ассоциация (ключ) и если есть, то заново пересчитывает коэффициент. Ну я думаю хватит теории и разговоров, пора демонстрировать.
//Вычисляем знак if($i == ($count_param-1)){ $minus = -1; }else{$minus = 1;} foreach($word as $pos => $letter) { //Цель данной функции привести такой пример: A+AC=AD к //1*A+10*A+1*C=10*A+1*D //С учетом знаков при переносе $coefficient[$letter] += $minus * pow(10, count($word) - ($pos + 1)); }
Что есть что? Знак, как видно из комментария, относиться к упрощению, т.е. когда упрощаем уравнения такого вида 1*A + 10*A + 1*C = 10 *A + 1*D, приводим к 1*A + 10*A + 1*C – 10 *A – 1*D = 0, тут все понятно. Массив $word, содержит слово, $pos – его позиция (от 0 до $count_param-1), $letter – символ. Теперь еще не много объясню, что мы тут сделали такого хитрого. В массив coefficient, мы заносим каждую букву слова, а значение – это ее коэффициент, получается $coefficient['A'] = 1, это при занесении первой буквы, заносим дальше: $coefficient['A'] = 11, а самую последнюю вычитаем, получаем в итоге: $coefficient['A'] = 1. Вот в этом то и есть “крутость” метода, нам ничего не надо считать самим, все это сделает PHP, при заносе повторного элемента.
Метки: PHP, Оптимизация, программирование, Решения
Плагин WP ToDoList для WordPress!
Фев 5, 2010 PHP, WordPress, Программирование
Добрый день!
Начну с того, что так как я являюсь программистом, то рано или поздно меня должно было заинтересовать написание плагинов под всеми любимый WP…и это свершилось
Сегодня хочу представить мой первый плагин с говорящим названием WP ToDoList! В данном посте я хочу рассказать о применении, назначении, функционале и просто об этом плагине. Надеюсь, что мой плагин заинтересует множество блоггеров и самое главное найдет свое применение!
Первая мысль о написании данного плагина мне пришла в тот момент, когда я сидел и смотрел в админку своего блога и меня осенила идея…а вот записать ее было не куда
Так и родилась мысль о плагине WP ToDoList. Данный плагин предназначен для записи идей, заданий, важных дел и все это с возможностью показа пользователям, т.е. точно так же можно писать анонсы на посты!
Плагин WP ToDoList на сегодняшний момент имеет версию 0.9.5 Beta, в данную версию включен такой функционал: добавление простой записи или задания, редактирование или удаление записей и заданий, просмотр всех записей и заданий, настройка плагина. Теперь подробно о каждой функции. Начнем с добавления простой записи или задания.
В плагине WP ToDoList предусмотрено два вида записей: простая запись и задание. Простая запись отличается от задания, тем что не содержит даты начала и даты окончания, в остальном все одинаково.

Метки: WordPress, WP ToDoList, Блогосфера, плагин, программирование
Работа. Опять 1С-Битрикс
Янв 25, 2010 1С-Битрикс, CMS, PHP, Программирование, Работа
«Пишите код так, как будто сопровождать его будет
склонный к насилию психопат, который знает, где вы живете». (с)
С. Макконелл
Как я уже писал работаю я сейчас с CMS 1С-Битрикс и опять таки, как я уже говорил система имеет свои плюсы и минусы. В данный момент у меня задание: реализация добавления опроса зарегистрированным пользователем. Задача не скажу что совсем уж сложная, необходимо написать компонент 2.0 с определенными настройками и в общем то все. Но как говорится не бывает все так просто…

Основная проблема заключается в том, что по умолчанию в редакции “Стандарт” возможно добавлять опросы только администратору и продвинутым юзверям, нас это не устраивает и мы реализуем компонент. С реализацией проблем не возникло, в данный момент компонент написан и запросто выполняет следующие действия:
- настройка и добавление опроса;
- настройка и добавление любого количества вопросов;
Я радостный сообщил о том, что разработка данного компонента закончена, но вскоре обнаружил, что оказывается не один опрос, созданный через мой компонент, не активирован. Ну тут все понятно, необходимо просто поставить вместо значения “N” параметра ACTIVE – “Y”, но не тут то было…После установки параметра “Y”, т.е. мы явно указываем, что необходимо сразу активировать наш опрос, получаем ошибку о невозможности записи опроса в базу данных…и что бы я не пробовал и передача из формы, и установка checkbox’a, как в админке – всюду эта ошибка. Единственное что запросто “съедала” функция – это TRUE, но при этом в базу записывалось значение “N”…
В общем после 3 часов секса с данной проблемой, я решил применить более грубую силу и воспользовался, так скажем хаком, т.е. я обновил запись опроса не через методы класса, предназначенного для этого, а на прямую, через класс CDatabase. В общем все работает, а данный хак, оказался даже более предпочтительным, так как теперь опрос становится активным только после добавления вопросов.
Но Вы не думайте, что на этом мои приключения кончились, после я нашел пару ошибок в компоненте рандома опросов, который тоже написал до этого
За что себя люблю, ни когда не дам себе скучать
Всегда есть пропущенные и не пофиксиные ошибки
Но как говорится все мы человеки и все мы ошибаемся
В настоящее время данные компоненты функционируют, но работа над ними еще не окончена. И что то мне подсказывает, что это не конец…
С уважением, Главный Лаборант!
Метки: 1С-Битрикс, Компоненты 2.0, программирование, Работа
Работа -> трабл() или хитрый Битрикс
Янв 11, 2010 1С-Битрикс, CMS, PHP, Программирование, Работа
Всем привет!
Сейчас, я думаю, все программисты меня поймут! В общем дело такое, пишу по работе класс для системы 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(), который просто ничего не клонирует. И вот как быть? В общем надо колдовать…или поспать…
Метки: 1С-Битрикс, CMS, PHP, ООП, программирование, Работа
Дописал поздравлялку :)
Янв 8, 2010 PHP, Блог, Программирование
Поздравлялка – это то что Вы видите сверху моего блога. Сейчас там будут выводится различные поздравления и просто какая – либо информация, касающаяся календаря (допустим как сегодня – Пятница).
Метки: календарь, плагин, праздники, программирование
Введение в Компоненты 2.0 1С-Битрикс. Часть 2
Янв 7, 2010 1С-Битрикс, CMS, PHP, Программирование
Не знаю долгожданное или нет, но все же продолжение статьи о написании компонента 2.0 для системы 1С-Битрикс (Введение в Компоненты 2.0 1С-Битрикс. Часть 1). Во второй части мы поговорим о написании простого шаблона для нашего компонента.
Постановка задачи: создать простейший стандартный шаблон.
Так с задачей вроде все понятно, теперь давайте вспомним, что у нас вообще есть? У нас написан файл описания (.description.php) и написан файл перевода (.description.php), созданы папки /images/, /lang/ru/.
Еще в самом конце я говорил про файл component.php – этот файл и есть наш компонент, точнее та его часть которая отвечает за обработку чего – либо, т.е. программный код. В нашем случаи данный файл будет обрабатывать введенные пользователем данные, т.е. логин, пароль и остальное.
И так приступим! Читать полностью… »
Метки: 1С-Битрикс, Компонент 2.0, программирование



