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

3 января, 2010
yii game site

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

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

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

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

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

Главная страница сайта

sketch main yii game site

Страница с описанием конкретной игры.
Просмотр полноразмерных скриншотов будет с использованием Lightbox

sketch yii game site 2

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

И, конечно, будет панель управления.

Рассмотрим требования к ней.

1) Импорт игр. Данные мы получаем от GameBoss в виде XML фида, т.е. нам необходимо их разобрать и сохранить в базе.

2) Редактирование и удаление игр. Возможность создания игр по-идее не нужна, т.к. все необходимые данные мы получим из XML фида. Кроме того, фид содержит ссылки на игры с партнерским id и создавать их вручную не очень удобно.

Со скриншотами ситуация немного сложнее. Фид содержит ссылки, на скриншоты, размещенные на сервере GameBoss, поэтому редактировать и удалять их мы не можем. В принципе, можно было бы добавить возможность закачивать свои собственные скриншоты, но чтобы не усложнять код я пока решил от неё отказаться. К тому же я совсем не уверен, что в реальной жизни кто-то будет этим заниматься. Изменять описания игр – другое дело.

3) Редактирование, удаление и создание жанров. Тут всё просто. В XML фиде партнерки жанры игр указаны в закодированной форме. Поэтому перед импортом необходимо вручную создать все жанры.

4) Редактирование данных администратора. К этим данным относятся: адрес XML фида (включает партнерский id), логин, пароль.

Возможность создания нескольких пользователей, на мой взгляд, смысла не имеет. Т.к. в этом случае может получиться, что часть игр будет импортирована с одним партнерским id, а часть – с другим, со всеми вытекающими отсюда последствиями :)
Хотя, если кому-то понадобиться – не проблема. В дистрибутиве Yii есть скрипт, который генерирует код для CRUD операций. Т.е. писать код для создания новых пользователей не нужно, мы просто отключим его.

Думаю, на этом с постановкой задачи можно заканчивать. Если есть вопросы или предложения, пишите.

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

Все разделы цикла.

  1. Yii PHP framework: создаём игровой сайт. Часть 1. Постановка задачи.
  2. Yii PHP framework: создаём игровой сайт. Часть 2. База данных и установка фреймворка.
  3. Yii PHP framework: создаём игровой сайт. Часть 3. Аутентификация.
  4. Yii PHP framework: создаём игровой сайт. Часть 4. Работа с жанрами игр.
  5. Yii PHP framework: создаём игровой сайт. Часть 5. Импорт игр.
  6. Yii PHP framework: создаём игровой сайт. Часть 6. Формируем страницы игр и жанров.
  7. Yii PHP framework: создаём игровой сайт. Часть 7. Работа с JavaScript и страницы игр.
  8. Yii PHP framework: создаём игровой сайт. Часть 8. Создаём виджеты.
  9. Yii PHP framework: создаём игровой сайт. Часть 9. Поиск ошибок.
  10. Yii PHP framework: создаём игровой сайт. Часть 10. Панель управления.
  11. Yii PHP framework: создаём игровой сайт. Часть 11. Человекопонятные URL.
  12. Архив с исходниками

Интересно почитать

Дизайн сайтов. Тенденции веб-дизайна

Качественные услуги по восстановлению бухучета, адекватные цены

Понравилась статья? Подписывайтесь на продолжение rss link !

Или на мой твиттер twitter link

]]>

Добавьте эту страницу в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

]]>

Опубликовано в PHP, Web разработка, Yii Комментарии (48) »

]]>

Вы можете оставить комментарий. Трекбеки закрыты.

  • http://deer.org.ua/ deerua

    Интересно, продолжай

  • http://deer.org.ua deerua

    Интересно, продолжай

  • http://dotplant.ru/ Bethrezen

    Надеюсь часть 2 будет скоро

  • http://dotplant.ru Bethrezen

    Надеюсь часть 2 будет скоро

  • http://be3.name/ be3

    Вова, молодец как всегда +) С нетерпением жду следующих частей.

  • http://be3.name be3

    Вова, молодец как всегда +) С нетерпением жду следующих частей.

  • http://www.web-junior.net/ web-junior

    А вот мне интересно: делали ли вы анализ и если делали, то какую документацию составляли (Vision, SRS и т.д.)? Если составляли, то интересны приемы составления аналитической документации и выявления требований.

    • http://www.simplecoding.org/ Владимир

      Нет, документацию я не составлял.
      Дело в том, что у меня стоит задача не создать сайт, а поработать с фреймворком, выяснить насколько им удобно пользоваться.

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

      Например, слайдшоу (lightbox) я добавил потому что yii имеет встроенную поддержку jQuery. Тоже самое касается и выбора партнерки. Мне нужна была готовая база данных минимум с несколькими таблицами, чтобы можно было поработь со всеми типами отношений.

      Ну и, конечно, сыграло роль, что продажа казуальных игр в общем-то прибыльное дело :) Но, если я буду открывать партнерский сайт, то начну с анализа рынка, т.е. с интересов покупателей (ведь в этом случае цель будет не создание сайта, а продажи). И у меня есть подозрение, что результат такого анализа может оказаться самым неожиданным. Может быть окажется выгоднее сделать блог на WP об играх с неявной рекламой (партнерскими ссылками в тексте), чем просто делать очередной каталог игр…. а может быть и нет ;)

      Но, в любом случае у меня уже написана большая часть кода, и в общем-то понятно почему я слышал столько хороших отзывов о yii. Даже без использования кеширования сайт работает довольно быстро (во всяком случае по сравнению с распространенными CMS разница ощутимая).

      P.S. Эскизы нарисованы в основном исходя из данных, которые можно получить из XML фида партнерки.

      P.P.S. Если есть предложения, я буду рад их обсудить. Тема составления документации очень интересная.

      • http://www.web-junior.net/ web-junior

        Спасибо за столь развернутый ответ, не ожидал столько прочитать на свой небольшой вопрос ;)
        Я просто полюбопытствовал, поскольку сам очень интересуюсь анализом.
        Эта тема действительно очень интересная, а вот внятных и понятных руководств нет. Есть пара книг, но они как и вся аналитика иногда вгоняют в сон :)

        • http://www.simplecoding.org/ Владимир

          Тут вы правы :) Есть очень много хороших книг об основах языков программирования (для начинающих), гораздо меньше об архитектуре софта и еще меньше об управлении разработкой и анализе требований.
          Причем часто в них рассматривают какой-то упрощенный пример, а на практике не понятно как все это использовать :) Может быть потому, что для всех более-менее сложных задач нужен индивидуальный подход?

        • http://www.web-junior.net/ web-junior

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

  • http://www.web-junior.net web-junior

    А вот мне интересно: делали ли вы анализ и если делали, то какую документацию составляли (Vision, SRS и т.д.)? Если составляли, то интересны приемы составления аналитической документации и выявления требований.

    • http://www.simplecoding.org/ Владимир

      Нет, документацию я не составлял.
      Дело в том, что у меня стоит задача не создать сайт, а поработать с фреймворком, выяснить насколько им удобно пользоваться.

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

      Например, слайдшоу (lightbox) я добавил потому что yii имеет встроенную поддержку jQuery. Тоже самое касается и выбора партнерки. Мне нужна была готовая база данных минимум с несколькими таблицами, чтобы можно было поработь со всеми типами отношений.

      Ну и, конечно, сыграло роль, что продажа казуальных игр в общем-то прибыльное дело :) Но, если я буду открывать партнерский сайт, то начну с анализа рынка, т.е. с интересов покупателей (ведь в этом случае цель будет не создание сайта, а продажи). И у меня есть подозрение, что результат такого анализа может оказаться самым неожиданным. Может быть окажется выгоднее сделать блог на WP об играх с неявной рекламой (партнерскими ссылками в тексте), чем просто делать очередной каталог игр…. а может быть и нет ;)

      Но, в любом случае у меня уже написана большая часть кода, и в общем-то понятно почему я слышал столько хороших отзывов о yii. Даже без использования кеширования сайт работает довольно быстро (во всяком случае по сравнению с распространенными CMS разница ощутимая).

      P.S. Эскизы нарисованы в основном исходя из данных, которые можно получить из XML фида партнерки.

      P.P.S. Если есть предложения, я буду рад их обсудить. Тема составления документации очень интересная.

      • http://www.web-junior.net web-junior

        Спасибо за столь развернутый ответ, не ожидал столько прочитать на свой небольшой вопрос ;)
        Я просто полюбопытствовал, поскольку сам очень интересуюсь анализом.
        Эта тема действительно очень интересная, а вот внятных и понятных руководств нет. Есть пара книг, но они как и вся аналитика иногда вгоняют в сон :)

        • http://www.simplecoding.org/ Владимир

          Тут вы правы :) Есть очень много хороших книг об основах языков программирования (для начинающих), гораздо меньше об архитектуре софта и еще меньше об управлении разработкой и анализе требований.
          Причем часто в них рассматривают какой-то упрощенный пример, а на практике не понятно как все это использовать :) Может быть потому, что для всех более-менее сложных задач нужен индивидуальный подход?

        • http://www.web-junior.net web-junior

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

  • http://snowcore.net/ Snowcore

    Будем следить!

  • http://snowcore.net Snowcore

    Будем следить!

  • Nulpatrol

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

  • Nulpatrol

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

  • http://andipas.blogspot.com/ Andipas

    Да про yii уже много чего писали, что он быстрее всех фреймворков и пр. ништяки. Но допустим для его развертывания в инструкции приводятся UNIX команды, если не ошибаюсь =) Будем ставить Linux или под Win-ом это все решаемо?
    В любом случае, автору респект за отличные статьи!

    p.s. кстати, наброски интерфейса, можно, легко рисовать в сервисе iplotz.com, хотя сделанные в фотошопе смотрятся оригинальнее.

    • http://www.simplecoding.org/ Владимир

      Нет, ставить линукс не обязательно. Все работает и под Win. Точнее, скрипты, которые генерируют код, написаны на php, поэтому работают на всех платформах.

      За ссылку на iplotz большое спасибо, я люблю экспериментировать с такими сервисами :)

      • http://andipas.blogspot.com/ Andipas

        Я имел ввиду вот это:
        "
        Запускаем yiic в консоли со следующими параметрами:

        % YiiRoot/framework/yiic webapp WebRoot/testdrive
        "
        http://yiiframework.ru/doc/guide/ru/quickstart.first-app

        Видимо чего то я не так делаю:

        C:>v:homeyiiwwwframeworkyiic webapp WebRoottestdrive
        "php.exe" не является внутренней или внешней
        командой, исполняемой программой или пакетным файлом.

        В любом случае надеюсь получить ответ в следующей статье про yii =)

        • http://www.simplecoding.org/ Владимир

          Следующую часть я опубликовал :)
          Судя по описанию ошибки, вам нужно добавить папку в которой находится php.exe в переменную PATH.

        • haiflive

          У тебя наверное денвер стоит?.
          В твоём случае нужно так:
          v:usrbinphp.exe v:homeyiiwwwframeworkyiic.php webapp v:homeyiiwwwtestdrive

          Или вообще просто скопируй всю от сюда v:homeyiiwwwframeworkcliviewswebapp в нужную тебе папку

        • Xurshid Djurayev

          Спасибо!

  • http://andipas.blogspot.com Andipas

    Да про yii уже много чего писали, что он быстрее всех фреймворков и пр. ништяки. Но допустим для его развертывания в инструкции приводятся UNIX команды, если не ошибаюсь =) Будем ставить Linux или под Win-ом это все решаемо?
    В любом случае, автору респект за отличные статьи!

    p.s. кстати, наброски интерфейса, можно, легко рисовать в сервисе iplotz.com, хотя сделанные в фотошопе смотрятся оригинальнее.

    • http://www.simplecoding.org/ Владимир

      Нет, ставить линукс не обязательно. Все работает и под Win. Точнее, скрипты, которые генерируют код, написаны на php, поэтому работают на всех платформах.

      За ссылку на iplotz большое спасибо, я люблю экспериментировать с такими сервисами :)

      • http://andipas.blogspot.com Andipas

        Я имел ввиду вот это:
        "
        Запускаем yiic в консоли со следующими параметрами:

        % YiiRoot/framework/yiic webapp WebRoot/testdrive
        "
        http://yiiframework.ru/doc/guide/ru/quickstart.first-app

        Видимо чего то я не так делаю:

        C:\>v:\home\yii\www\framework\yiic webapp WebRoot\testdrive
        "php.exe" не является внутренней или внешней
        командой, исполняемой программой или пакетным файлом.

        В любом случае надеюсь получить ответ в следующей статье про yii =)

        • http://www.simplecoding.org/ Владимир

          Следующую часть я опубликовал :)
          Судя по описанию ошибки, вам нужно добавить папку в которой находится php.exe в переменную PATH.

        • haiflive

          У тебя наверное денвер стоит?.
          В твоём случае нужно так:
          v:\usr\bin\php.exe v:\home\yii\www\framework\yiic.php webapp v:\home\yii\www\testdrive

          Или вообще просто скопируй всю от сюда v:\home\yii\www\framework\cli\views\webapp в нужную тебе папку

  • aza

    Раздел Хит сезона

    Веб-страница недоступна.

    Веб-страница по адресу http://rotator.gameboss.ru/engine2/?sizetype=544×300&advert=30000&url=, возможно, временно недоступна или постоянно перемещена по новому адресу.

    • http://www.simplecoding.org/ Владимир

      Этот сервер нам не нужен :) Картинки находятся на images.nevosoft.ru, а партнерская программа – partner.gameboss.ru

  • aza

    Раздел Хит сезона

    Веб-страница недоступна.

    Веб-страница по адресу http://rotator.gameboss.ru/engine2/?sizetype=544×300&advert=30000&url=, возможно, временно недоступна или постоянно перемещена по новому адресу.

    • http://www.simplecoding.org/ Владимир

      Этот сервер нам не нужен :) Картинки находятся на images.nevosoft.ru, а партнерская программа – partner.gameboss.ru

  • http://seo-touareg.ru/ seotouareg

    отлично! не помешает узнать и об этом фреймворке, т.к. много о нем слышал. сейчас использую только CodeIgniter, поэтому с нетерпением жду ваших остальных частей!

  • http://seo-touareg.ru seotouareg

    отлично! не помешает узнать и об этом фреймворке, т.к. много о нем слышал. сейчас использую только CodeIgniter, поэтому с нетерпением жду ваших остальных частей!

  • http://rmcreative.ru/ Sam

    Замечательно. Полноценных туториалов от и до по Yii пока не очень много.

    • http://www.simplecoding.org/ Владимир

      На полноту я не претендую :) , но о необходимом минимуме постараюсь рассказать :)

  • http://rmcreative.ru/ Sam

    Замечательно. Полноценных туториалов от и до по Yii пока не очень много.

    • http://www.simplecoding.org/ Владимир

      На полноту я не претендую :) , но о необходимом минимуме постараюсь рассказать :)

  • http://www.x0.org.ua/ dima

    сейчас популярные самые: ZEND и Symfony…

    в будущих статьях хотелось бы услышать про сравнение фремворков, просто зачем использовать мало извесный фрейворк, если он очень замечательный ZEND и Symfony?

    • http://www.simplecoding.org/ Владимир

      Я не против ZEND'а и Symfony. Просто каждый новый фреймворк создаётся с учётом каких-то недостатков предыдущих. Это не означает, что он будет лучше, но в каких-то ситуациях сможет упростить работу. Описание Yii мне понравилось и я решил попробовать сделать сайт, а заодно и в блоге об этом написать ;)

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

  • http://www.x0.org.ua dima

    сейчас популярные самые: ZEND и Symfony…

    в будущих статьях хотелось бы услышать про сравнение фремворков, просто зачем использовать мало извесный фрейворк, если он очень замечательный ZEND и Symfony?

    • http://www.simplecoding.org/ Владимир

      Я не против ZEND'а и Symfony. Просто каждый новый фреймворк создаётся с учётом каких-то недостатков предыдущих. Это не означает, что он будет лучше, но в каких-то ситуациях сможет упростить работу. Описание Yii мне понравилось и я решил попробовать сделать сайт, а заодно и в блоге об этом написать ;)

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

  • http://profiles.google.com/ptz2007 Юрий Гуляев

    Очень полезный урок. Я поставил сразу на работающий хост http://99fps.ru  вместе с последней на данный момент версией yii-1.1.8.r3324. После добавления папок runtime и assets сайт запустился. Долго не мог попасть в админку, пока не поменял DashboardMenu.php  на  dashboardMenu.php.  Есть пара вопросов, авторизация предусмотрена только для админа я правильно понял да? И еще контактная форма… куда и как отправляется информация введенная посетителем через форму обратной связи? Что то я не вкурил насчет этого. А так пример отличный, для изучения yii самое оно, автору спасибо огромное. 

    • http://www.simplecoding.org Владимир

      Аутентификация.
      Да, здесь использован самый простой вариант. Пользователей может быть много, но все они админы.

      Контактная форма.
      Сообщения должны отправляться на email администратора. Если отправка почты нормально работает.

  • Владимир Дроменко

    Лучше про yii framework нам на парах рассказывали, а не про маткад :)
    Классная инфа, буду читать. По работе требуются знания по yii.

]]>
Tweet