Категории: PHP

Yii PHP framework: создаём игровой сайт. Часть 6. Формируем страницы игр и жанров.

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

yii_game_site_mvc

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

Напомню, на чём мы остановились в прошлый раз. У нас создан контроллер для работы с играми GamesController, модель Games и стандартные представления (находятся в папке views/games). Кроме того, мы написали метод импорта игр actionImport.

Раз импортировать игры в базу мы можем, напишем методы для их отображения на сайте. Всего нам нужно создать три типа страниц:

1) с общим перечнем игр (главная);

2) с перечнем игр определенного жанра;

3) с выбранной игрой.

Первые два типа страниц мы реализуем с помощью одного метода — actionList. Дело в том, что страница с играми определенного жанра ничем не отличается от страницы с общим перечнем игр. Просто при поиске игр в базе мы используем один дополнительный параметр – код жанра.

Теперь взгляните на сам метод.
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 5. Импорт игр.

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

import games

Сегодня мы продолжим создание игрового сайта с помощью Yii PHP framework. Наши задачи: заполнить базу данных информацией об играх (её мы берем из партнерки GameBoss) и, заодно, немного разобраться с библиотекой Yii для работы с базой данных.

Алгоритм импорта довольно прост.

1) Читаем из базы список жанров. Они должны быть созданы заранее, иначе мы не сможем правильно создать записи в таблице ygs_games_types.

2) Получаем список игр, которые уже сохранены в БД (нам нужны их id).

3) Получаем данные от GameBoss. Они приходят в xml формате.

4) Для каждой игры, полученной от GameBoss, проверяем, существует ли она в базе, и, если нет, сохраняем.

5) Создаём записи в связанных таблицах ygs_games_types и ygs_screenshots.

6) Показываем страницу с кнопкой «Импрорт».

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

>> yiic shell
model Games ygs_games
crud Games

Теперь можно добавить метод actionImport в контроллер GamesController.
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 4. Работа с жанрами игр.

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

yii game site

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

Но вначале два небольших объявления.

1) Я как-то упустил, что есть русский перевод документации Yii, причём очень качественный.

2) Я решил выложить весь исходный код этого сайта, думаю так будет проще экспериментировать. Все-таки копировать куски кода из блога неудобно.

Source

Инструкция по установке.

1) В архиве находятся: папка public_html (в ней только исходные файлы сайта, без самого фреймворка), файл dump.sql (с дампом базы) и файл с инструкциями.

2) Распакуйте папку public_html так, чтобы DOCUMENT_ROOT вашего сервера указывал на ее содержимое (при желании, саму папку можно переименовать).

3) Откройте файл index.php и укажите путь к фреймворку Yii (строка 4).

4) Откройте файл \protected\config\main.php и укажите параметры подключения к базе данных (строки 45-47).

5) Импортируйте базу данных (файл dump.sql), например, с помощью phpMyAdmin.

6) Можно работать 🙂

7) Адрес входа в админку http://sitename.local/index.php?r=dashboard

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

Возвращаемся к жанрам.

Открываем окно консоли и выполняем команды
Читать дальше

Yii PHP framework: создаём игровой сайт. Часть 3. Аутентификация.

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

yii_game_site_auth

Приветствую всех! Эта статья – продолжение цикла о создании игрового сайта с использованием PHP фреймворка Yii.

Сегодня мы займемся ограничением доступа к административной части сайта. У вас может возникнуть вполне закономерный вопрос: «Почему именно ею? Ведь в предыдущих частях мы только создали базу данных, на сайте нет ни одной рабочей страницы.»

Всё правильно, но Yii имеет некоторые особенности. Код, который генерирует консольная утилита при создании контроллеров, автоматически использует встроенную библиотеку авторизации. Кроме того, в стандартном приложении, которое мы в прошлый раз создали командой yiic webapp есть все необходимые компоненты для аутентификации и авторизации пользователей.

От нас требуется только связать этот код с нашей базой данных. Т.е. кода нам нужно написать совсем немного.
Читать дальше

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 я начал работать совсем недавно. И, честно говоря, это можно считать первый сайт, который я делаю с использованием этого фреймворка. Поэтому, возможно, некоторые вещи будут сделаны не лучшим образом, и я буду рад любым замечаниям.

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

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, т.к. следующие запросы нужно отправлять с ними.
Читать дальше

Заполнение форм с помощью PHP и cURL

Владимир | | PHP.

Я думаю, найдутся люди, которые, прочитав заголовок, решать что в статье речь пойдет о создании какой-нибудь спамилки (бота) для форумов или социальных сетей. По большому счету так и есть 🙂 , но с некоторыми оговорками.

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

Тем не менее, примеров работы с конкретными сайтами здесь не будет, только описание принципа работы и нужных функций.

Итак, у нас есть инструмент (cURL), который делает большую часть работы за нас. И для работы с ним существует ряд библиотек в том числе и для PHP.

Рассмотрим самый простой пример – получение страницы.
Читать дальше

Управление 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

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