1. Разработка расширения для Joomla! 3.0 – подготовка
Все статьи цикла:
- Текущая статья
- Разработка расширения для Joomla! 3.0 – начинаем разработку
- Разработка расширения для Joomla! 3.0 – создаем ядро
- Разработка расширения для Joomla! 3.0 – больше функционала
- Разработка расширения для Joomla! 3.0 – интерфейс администратора и доработка кода
Я (David Hurley) немного сомневался в необходимости написания этой статьи по разработке расширения, но, в конце концов решил, что это стоит того, чтобы опубликовать. Важно быть уверенным в том, что ты строишь надежный фундамент и существует несколько аспектов по написанию компонента для Joomla! 3.0, которые стоит запланировать заранее. Это первая статья из цикла статей по разработке расширения. И он не был бы полным без обсуждения первоначальных шагов планирования и корректной структуризации расширения. Вот те шаги, которые я считаю наиболее эффективными для начала успешного расширения Joomla!.
Шаг 1: Начните с желтого блокнота и ручки
Почти все наши проекты начинались с желтого блокнота. Вы можете предпочитать бумагу другого цвета, это полностью ваше предпочтение. Я рекомендую желтую по разным причинам, но это совсем необязательно. Я также рекомендую ручку вместо карандаша. Карандаши, как правило, размазывают, идеи теряются, строки становятся размытыми и дело здесь не в том, чтобы написать идеальный план, а устроить мозговой штурм, настрочить и просто перенести идеи на бумагу. Обычно в конце получается не очень красиво. Использование ручки поощряет вас думать так; в свою очередь карандаш поощряет стирание, переписывание и другие, идущие в разрез с мозговым штурмом вещи.
Шаг 2: Определите свои потребности, целевую аудиторию и проблемы, требующие решения
Ок, теперь вы сидите с вашим блокнотом и ручкой и готовы к следующему шагу. Начинайте записывать ваши идеи. Начните с проблемы, которую хотите решить, зачем вы пишите это расширение, на каких ключевых идеях вы сосредоточитесь и что должно делать ваше расширение. На этом шаге важно также провести исследование. Может компонент уже существует? Может кто-то уже выпустил похожий продукт, который можно рассматривать как конкуренцию вашему? Насколько большой является целевая аудитория компонента, который вы стремитесь написать? Это важно учитывать, и есть несколько мер предосторожности, на которые я хотел бы обратить ваше внимание.
Первое, не пытайтесь написать компонент а-ля «Властелин колец» (один компонент для управления всеми, один компонент для связи их…), определите основную проблему, которую желаете решить, и потом сосредоточьтесь, сосредоточьтесь, сосредоточьтесь. Таким образом, ваша жизнь станет проще, и маркетинг будет более плавным. Второе, убедитесь, что ваша целевая аудитория существует. Не думайте, что если ваш компонент нужен вам, то он обязательно нужен другим. Будьте реалистичны в своих ожиданиях, и вы станете более уверенным по мере своего прогресса.
Шаг 3: Опишите общий поток вашего приложения / расширения
Как только вы набросали ваши идеи, вашу целевую аудиторию и проблемы, которые желаете решить, следующим шагом будет описание общего потока вашего компонента. Более чем вероятно это будет сделано во время предыдущего шага, и пока вы пишете свои идеи, вы все больше будете замечать за собой начало описания этого процесса. Опишите необходимые контроллеры, модели и представления. Вероятно, это подходящее время для того, чтобы отклониться от темы и обсудить первую важную часть разработки компонента для Joomla! 3.0 – архитектуру Model-View-Controller (MVC) и Joomla!.
Joomla! реализует практически стандартную MVC структуру, однако стремится немного отличаться от MVC фреймворка, который используют другие платформы. Joomla! 3.0 рассматривает каждую задачу как контроллер. Это означает, что скорее всего у вас будет несколько контроллеров с именами "save", "add", "edit", "delete" и т.д. Каждый контроллер выполняет одну и только одну задачу (это отличается от Joomla! Platform 11.4, где один контроллер выполняет несколько задач. Примечание переводчика). Сначала кажется, что у вас будет большое количество файлов, но в конечном итоге это предоставляет интуитивно понятный поток вашего компонента, а также помогает в выстраивании цепочки из нескольких команд (я рассмотрю этот вопрос более подробно в следующих статьях, когда мы начнем написание файлов контроллера).
Модели в Joomla! обращаются с фактической манипуляцией данными. Вот где вы хотели бы поместить всю вашу логику и код. Обычно модели создаются для представления ключевых единиц или объектов вашего компонента (например, категория, элемент и т.п.). Внутри моделей имеется некоторое количество функций, относящихся к этому конкретному объекту (например, list, get, save и т.п.).
И наконец, представления. Joomla! включает в себя стандартную методологию по конструированию представлений, и снова мы рассмотрим этот момент более подробно в следующих статьях этого цикла. На данный момент достаточно сказать, что обычно представления следуют схожей с моделями структуре, при этом несколько представлений могут относиться к каждой ключевой единице или объекту вашего компонента.
Это дает вам краткий (хотя возможно и упрощенный) обзор структуры Joomla! MVC, но надеюсь, достаточный для того, чтобы дать вам идею для описания потока вашего компонента.
Шаг 4: Организуйте структуру данных и схему таблиц
В то время как существует множество подходов к первому шагу разработки расширения, мы считаем этот шаг наиболее логическим и понятным. Как только мы написали всю выше изложенную информацию, определили ключевые части нашего компонента и общий поток, мы переходим к следующему шагу и организуем структуру наших данных и схему таблиц.
На этом шаге мы начинаем разбивать наши модели (или ключевые области), которые мы определили ранее, и начинаем записывать каждое поле, которое мы планируем использовать в этой модели или таблице. Для всех компонентов вам понадобится таблица для связи с моделью для сохранения соответствующих данных. Существует несколько полей, которые считаются стандартными полями таблицы для использования при написании компонента Joomla!. Мы вернемся к ним позже, когда приступим к написанию кода. При написании структуры таблиц мы стараемся следовать некоторым стандартным соглашениям. Например, если мы планируем связать элемент с конкретной категорией, мы включаем category_id в нашу таблицу элементов, похожим образом мы включаем user_id, если мы планируем связать элементы с пользователем. Это помогает нам в дальнейшем, когда мы берем наши рукописные таблицы и начинаем вставлять их в наш SQL builder.
Шаг 5: Настройте метод для контроля версий (GitHub)
Этот шаг делать необязательно, но мы рекомендуем не пропускать его и настроить контроль версий. Мы предпочитаем GitHub по многим причинам. Если вы не знакомы с GitHub, то можете почитать о нем в сети, в частности на Википедия. Вкратце можно сказать, что он предоставляет возможность слежения за изменениями вашего кода и хранит защищенную копию ваших трудов. Ни говоря уже о возможности работы нескольких пользователей по написанию кода без страха случайно переписать код друг друга. Конечно, вы можете использовать не только GitHub. Главное найти что-то для резервного копирования, слежения и защиты вашего кода.
Шаг 6: Настройте ваше локальное окружение
Последним шагом в этой статье является настройка локального окружения. Здесь есть множество различных вариантов. Но вместо того, чтобы разъяснять различные методы, которые можно использовать для написания кода, я просто скажу, что это точка в процессе разработки, когда мы настраиваем наше окружение. Мы создадим локальную установку Joomla! 3, клонируем наш GitHub репозиторий, и создадим необходимые символические ссылки. Лично я использую Sublime Text 2 при написании кода, и встроенная поддержка Git меня полностью устраивает. Существует множество программ, которые вы можете использовать, но вместо того, чтобы искать минусы, я предлагаю вам самим найти ту, что больше подходит вашему рабочему процессу и стилю написания кода.