Категории: Web разработка

Yii PHP framework: создаём игровой сайт. Часть 2. База данных и установка фреймворка.

Владимир | | PHP, Web разработка, Yii.

yii game site db

Как и обещал, продолжаю цикл статей о создании сайта на базе фреймворка Yii. Сегодня мы поговорим об архитектуре базы данных и разберем установку фреймворка.

Начнем с базы данных.

Как вы, наверное, помните наш сайт будет использовать данные из игровой партнерки GameBoss.ru. Эти данные можно получить несколькими способами, но в нашем случае удобнее всего XML фид.

Естественно, просто скопировать данные из фида не получится (позже мы напишем специальный метод для этой цели), а сейчас нам нужно разработать структуру базы.

Получить XML фид можно по адресу

http://gameboss.ru/x2.php?partner=38370&limit=1000&genre=127&short=1&full=1&image=1

где partner=ваш_партнерский_id (его вы получаете при регистрации в партнерке)

Взгляните на скриншот фида.
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 1. Постановка задачи.

Владимир | | PHP, Web разработка, Yii.

yii game site

Прежде всего, поздравляю всех с наступившим Новым Годом!

И этот год хочу начать с нового цикла статей об использовании PHP фреймворка под названием Yii.

В качестве примера я решил сделать игровой сайт, точнее сайт под партнерскую программу GameBoss. Для тех, кто первый раз слышит о GameBoss — это интернет магазин казуальных игр. Он предоставляет информацию об играх в XML формате, т.е. проблем с контентом у нас не будет 😉

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

Чтобы вы лучше представляли конечный результат, я нарисовал несколько эскизов.
Читать дальше

JavaScript без задержек

Владимир | | Ajax, JavaScript, Web разработка.

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

Я как-то путано рассказываю 🙂 , на самом деле все довольно просто.

Недавно на почтовом сервере ukr.net (в web интерфейсе) я заметил довольно неприятный баг. Загружается web интерфейс, я кликаю по письму и вместо сообщения «Загрузка данных…» вижу «Для просмотра письма включите поддержку JavaScript в браузере и перезагрузите страницу».

Естественно, я точно знаю, что JavaScript у меня включен и перезагружать ничего не стал. Через две-три секунды сообщение исчезло и на его месте появилось письмо.

Работу скриптов ukr.net я анализировать не стал, но в общем-то о причине можно догадаться. Скорее всего, возникла задержка при загрузке JS файла со скриптом, который должен изменять «Включите JS…» на «Загрузка данных..».

Раньше я этот момент не замечал, но у меня нет ограничений по скорости на UA-IX трафик, да и сам ukr.net стабильно работает.

Тем не менее, проблема со скоростью загрузки существует и касается всех, а не только крупных порталов.

Рассмотрим реальную ситуацию.
Читать дальше

WordPress: создаем виджет для показа картинок с Flickr

Владимир | | HTML, PHP, Web разработка, WordPress.

Сегодня я расскажу о создании виджета для одной из самых популярных на сегодняшний день CMS – WordPress.

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

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

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

Единственное условие – тема должна быть «widget ready», т.е. поддерживать виджеты. Но добавить эту поддержку несложно. Подробная инструкция находится здесь. Чтобы не усложнять пример, я буду считать, что используется дефолтная тема.

Сформулируем задачу.

Допустим, нам нужен виджет, который будет находить по заданным тегам на сервесе flickr картинки и показывать их. При этом администратор должен иметь возможность задать теги, количество картинок и их размер.
Читать дальше

Получение данных из Google Reader с помощью cURL

Владимир | | PHP, Web разработка.

В этой статье я продолжу тему использования cURL. Мы попробуем с помощью этой утилиты войти (аутентифицироваться) и получить список тегов из Google Reader.

Сразу объясню, в чем сложность работы с этим сервисом. Дело в том, что он использует немного необычный способ передачи cookie файлов и из-за этого усложняется аутентификация.

Когда вы заполняете форму входа и отправляете запрос, на большинстве сайтов они в ответ передают страницу и в заголовках cookie файлы. Эти файлы автоматически сохраняются (cURL'ом или браузером) и вы можете использовать их в дальнейших запросах.

Но аутентификация на Google выполняется иначе.

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

jqGrid, форма с автозавершением и поиск

Владимир | | Ajax, JavaScript, Web разработка.

Сегодня будет еще один небольшой пример работы с jqGrid. Я покажу каким образом можно заполнить форму поиска значениями по-умолчанию.

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

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

Поэтому мы немного усовершенствуем пример. После выбора значения в поле с автозаполнением мы откроем форму поиска и в неё вставим выбранное значение. Таким образом, если пользователю будет нужно добавить другие условия, он сможет это сделать.
Читать дальше

Управление jqGrid с помощью поля с автозавершением

Владимир | | Ajax, HTML, JavaScript, MySQL, PHP, Web разработка.

Сегодня я продолжу рассказывать о плагине jqGrid и покажу еще один пример его использования.

Если не ошибаюсь, это уже 5-ый пост об этом плагине, поэтому я не буду останавливаться на его установке и настройке. Лучше приведу ссылки на предыдущие части:

1) Query Grid Plugin – «продвинутое» решение для создания таблиц

2) jqGrid: редактирование табличных данных с помощью inline редакторов

3) jqGrid – создание дополнительных кнопок

4) jqGrid – поиск данных

Но для тех, кто их не читал, кратко поясню, о чем вообще речь.

jqGrid – это плагин для библиотеки jQuery, предназначенный для работы с табличными данными. Он поддерживает кучу полезных возможностей вроде разбивки данных на страницы, поиска, добавления, удаления, редактирования записей и т.п.

Естественно, у плагина очень много настроек и вариантов использования, но это не означает, что их хватит на все случаи жизни 😉

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

Как это работает, вы можете посмотреть на демо-страничке

Demo

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

Source

Реализовать такую систему не сложно.
Читать дальше

XML-RPC, CodeIgniter, LiveJournal и куча проблем :)

Владимир | | CodeIgniter, PHP, Web разработка.

Недавно ко мне обратился читатель с просьбой помочь отправить сообщение в LiveJournal через XML-RPC протокол. При этом использовать нужно было библиотеку фреймворка CodeIgniter.

Честно говоря, когда я вижу такие вопросы, то сразу пробую найти готовое решение. Этот случай исключением не был и подходящая инструкция быстро нашлась. XML-RPC и кросспостинг в ЖЖ. Константин Лихачев в ней подробно рассказывает об отправке сообщений, единственное но – используется Incutio XML-RPC Library, а не встроенная библиотека CI.

Раз работает код с использованием Incutio XML-RPC, то сервис 100% рабочий и нужно просто правильно передать параметры в библиотеке CodeIgniter'а.

Думаю: «Почему бы не помочь человеку? Опыт работы с CI у меня есть, с документацией JiveJournal разбираться не нужно, т.к. список всех нужных параметров есть в статье Константина. Минут за 20 сделаю…» 🙂

Мне пора бы привыкнуть, что когда я так думаю, эти 20 минут часто превращаются в 2-3 часа. 🙂
Читать дальше

Создание слайдшоу на JavaScript и несколько особенностей анимации

Владимир | | HTML, JavaScript, Web разработка.

jquery_panel_gallery

Приветствую всех!

На днях я экспериментировал с плагином jQuery Panel Gallery и хочу поделиться впечатлениями, а заодно рассказать, как с ним работать. Кроме того, использование подобных плагинов имеет некоторые особенности, которые касаются не их самих, а JavaScript анимации вообще.

Итак, начнем с плагина.

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

Как это выглядит можно посмотреть на демонстрационной страничке.

Demo

И, конечно, вы можете скачать архив с примером.

Source
Читать дальше

960 Grid System: зачем нужны CSS фреймворки

Владимир | | CSS, HTML, Web разработка.

Что-то давно я ничего не писал о CSS, а ведь использовать эту технологию приходится практически постоянно.

Кроме того, последнее время я начинаю замечать, что все чаще использую CSS фреймворки. Поэтому сегодня речь пойдет именно о них. А точнее, об одном из них, под названием 960 Grid System.

Почему именно о нем? Тут все очень просто. Я более-менее плотно работал с двумя фреймворками: Blueprint и 960 grid. При этом, на мой взгляд, разработчикам 960 grid system удалось добиться очень хорошего отношения возможности/размер фреймворка.

Рассмотрим его подробнее.

Начнем с недостатков.

Если вы хоть немного интересовались темой, то, конечно, знаете, что есть много возражений против применении CSS фреймворков как таковых.

Основные возражения такие.
Читать дальше