Joomla 1.6 beta 7
10.08.2010 →Вышел очередной релиз Joomla 1.6 (Скачать).
В этом релизе было исправлено 85 ошибок, подробнее смотрите файл CHANGELOG в папке installation.
Следующий релиз Joomla 1.6 beta 8 запланирован на 23 августа 2010г.
Этот релиз выпущен для ознакомления.
SM FAQ - расширение для организации FAQ
10.08.2010 →
SM FAQ - компонент для Joomla 1.5 предназначенный для организации "вопроса-ответа" на сайте.
26.08.2010 - новая версия компонента 1.3
27.08.2010 - релиз безопасности 1.3.1
02.09.2010 - добавлен модуль 1.0
27.01.2011 - релиз 1.3.2
- Исправлена ошибка, связанная с датой ответа
- Исправлена ошибка, связанная с зарегистрированными пользователями
20.02.2012 - релиз 1.3.3
- Исправлена ошибка, связанная с реагированием антивируса на JS файл компонента (JS/Kryptik.IL)
Рейтинг используемых браузеров по июль 2010г.
09.08.2010 →Статистика используемых браузеров по данным сайта w3schools.com с января по июль 2010 года.
Браузер | январь 2010 |
июль 2010 |
IE 6 | 10.2% | 7.2% |
IE 7 | 11.7% | 7.6% |
IE 8 | 14.3% | 15.6% |
Firefox | 46.3% | 46.4% |
Chrome | 10.8% | 16.7% |
Safari | 3.7% | 3.4% |
Opera | 2.2% | 2.3% |
Чаcть 2 - Модель и Вид (Представление)
22.06.2010 →Здесь я буду использовать компонент с прошлой части. Немного добавим в него функциональности, за счет подключения Вида, Модели и Контроллера. Все манипуляции будут касаться только сайта, административная панель Joomla практически не будет затрагивать, ну за исключением того, что можно будет создать в ней пункт меню ссылающийся на компонент.
Начинаем с точки входа
site/hello.php
<?php
// Защита от прямого доступа к файлу
defined('_JEXEC') or die('Restricted access');
// Подключаем библеотеку контроллера Joomla
jimport('joomla.application.component.controller');
// Получаем экземпляр класса контроллера с префиксом Hello
$controller = JController::getInstance('Hello');
// Обрабатываем запрос (task)
$controller->execute(JRequest::getCmd('task'));
// Переадресуем, если установлено контроллером
$controller->redirect();
Как видно здесь подключается контроллер, нужно его создать.
site/controller.php
Контроллер пока будет пустой. Если никакой задачи (task) не будет в переменной запроса, то по умолчанию будет отображаться вид (представление) с именем Hello. Будет использоваться метод display основного класса JController.
Создание Вида
site/views/hello/view.html.php
<?php
// Защита от прямого доступа к файлу
defined('_JEXEC') or die('Restricted access');
// Подключаем библиотеку представления Joomla
jimport('joomla.application.component.view');
// Создаем свой класс, расширяя JView
class HelloViewHello extends JView {
protected $msg=null;
// Перезаписуем метод display класса JView
function display($tpl = null) {
// Добавляем данные в Представление
$this->msg = $this->get('Msg');
// Отображаем представление
parent::display($tpl);
}
}
Вид в свою очередь будет брать данные из модели ($this->get('Msg')) и передавать их в шаблон (размету). По умолчанию в Joomla разметка или шаблон (дальше я буду называть шаблон) будет отображать, используя файл tmpl/default.php. Модель я опишу чуть позже.
Шаблон
site/views/helloworld/tmpl/default.php
В этой же папке создадим файл XML, который будет описанием к данному шаблону. Так же этот файл нужен для того что бы в Менеджере Меню (Menu Manager) в соответствующем меню можно было создать пункт, ссылающийся на компонент.
site/views/hello/tmpl/default.xml
<?xml version="1.0" encoding="utf-8" ?>
<metadata>
<layout title="Вывод компонента Hello">
<message>Это всплывающая подсказка</message>
</layout>
<fields name="request">
<fieldset name="request">
<field
id="id"
name="id"
type="list"
label="Выберите значение"
description="Здесь можно поместить описание"
default="1"
>
<option value="1">Привет!</option>
<option value="2">Пока!</option>
</field>
</fieldset>
</fields>
</metadata>
При создании пункта меню в нем можно будет выбирать два значения "Привет" или "Пока", эти значения будут обрабатываться в модели и дальше передавать в Вид соответствующее сообщение (msg)
Модель
site/models/hello.php
<?php
// Защита от прямого доступа к файлу
defined('_JEXEC') or die('Restricted access');
// подключаем библеотеку modelitem Joomla
jimport('joomla.application.component.modelitem');
// Создаем класс модели
class HelloModelHello extends JModelItem
{
/**
* @var string msg
*/
protected $msg;
/**
* Get the message
* @return string The message to be displayed to the user
*/
public function getMsg()
{
if (!isset($this->msg))
{
$id = JRequest::getInt('id');
switch ($id)
{
case 2:
$this->msg = 'Вы выбрали "Пока"!';
break;
default:
case 1:
$this->msg = 'Вы выбрали "Привет"';
break;
}
}
return $this->msg;
}
}
Как видно в ней обрабатывается переменная $id и в зависимости от нее выводиться сообщение. Эту переменную соответственно можно будет менять в пункте меню административной панели Joomla.
Осталось немного подкорректировать установочный XML файл.
hello.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Обратите внимание что method изменился на upgrade (обновление) -->
<extension type="component" version="1.6.0" method="upgrade">
<name>Hello!</name>
<creationDate>May 2010</creationDate>
<author>SmokerMan</author>
<authorEmail>kolyamba831@inbox.ru</authorEmail>
<authorUrl>http://www.joomla-code.ru</authorUrl>
<copyright>Информация о копирайте</copyright>
<license>Информация о лицензии</license>
<version>0.0.2</version>
<description>Описание компонента "Привет!" ...</description>
<files folder="site">
<filename>index.html</filename>
<filename>hello.php</filename>
<!-- Добавляем контроллер -->
<filename>controller.php</filename>
<!-- Добавляем папку Вида -->
<folder>views</folder>
<!-- Добавляем модель -->
<folder>models</folder>
</files>
<administration>
<menu>Hello!</menu>
<files folder="admin">
<filename>index.html</filename>
<filename>hello.php</filename>
</files>
</administration>
</extension>
Структура файлов получилась следующая:
- hello.xml
- site/index.html
- site/hello.php
- site/controller.php
- site/views/index.html
- site/views/hello/index.html
- site/views/hello/view.html.php
- site/views/hello/tmpl/index.html
- site/views/hello/tmpl/default.xml
- site/views/hello/tmpl/default.php
- site/models/index.html
- site/models/hello.php
- admin/index.html
- admin/hello.php
Теперь можно выбирая в пункте меню разное значение параметра менять соответсвенно сообщение на сайте.
Часть 1 - Элементарный компонент
22.06.2010 →Самый элементарный компонент для Joomla 1.6 будет очень простым. Его задачей будет выводить лишь две разные надписи на сайте и в административной панели.
Сначала можно создать две папки Admin - в ней будут храниться файлы для административной части Joomla и Site - в ней будут файлы, касающиеся сайта (Front-End).
Создаем файл (все файлы желательно создавать в кодировке UTF-8 без BOM).
admin\hello.php
И такой же файл для сайта
site\hello.php
В каждой папке создаем пустой файл index.html, для защиты от листинга файлов.
И наконец в корне создаем установочный XML файл
hello.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="1.6.0" method="install">
<name>Hello!</name>
<!-- Следующие элементы являются необязательными -->
<creationDate>May 2010</creationDate>
<author>SmokerMan</author>
<authorEmail>kolyamba831@inbox.ru</authorEmail>
<authorUrl>http://www.joomla-code.ru</authorUrl>
<copyright>Информация о копирайте</copyright>
<license>Информация о лицензии</license>
<!-- /////////// -->
<!-- Версия компонента -->
<version>0.0.1</version>
<!-- Описание компонента, не является обязательным, и по умолчанию используется имя -->
<description>Описание компонента "Привет!" ...</description>
<!-- Копируем файлы для сайта -->
<!-- Обратите внимание на аттрибут folder, он указыает с какой папки будут копироваться файлы -->
<files folder="site">
<filename>index.html</filename>
<filename>hello.php</filename>
</files>
<administration>
<!-- Создаем меню для аминистративной панели -->
<menu>Hello!</menu>
<!-- Копируем файлы для административной панели -->
<files folder="admin">
<filename>index.html</filename>
<filename>hello.php</filename>
</files>
</administration>
</extension>
Структура файлов будет следующая:
- hello.xml
- site/hello.php
- site/index.html
- admin/hello.php
- admin/index.html
Это все архивируется в ZIP архив и устанавливается через Менеджер Расширений (Extension Manager).
Посмотреть на результат в административной панели Joomla можно просто выбрать в меню Компоненты (Components) соответственно созданный пункт "Hello". На сайте достаточно набрать URL - http://сайт/index.php?option=com_hello
JHTML в Joomla. Списки Select
08.04.2010 →Продолжаю рассматривать класс JHTML в Joomla. В этой статейке рассмотрю методы, которые работают с раскрывающимися списками, в народе это тэг <select> и все что ему сопутствует.
Эти списки используются довольно часто при построении различных форм, Joomla немного упростит в этом задачу.
Класс JHTML в Joomla. Описание базовых методов
31.03.2010 →В этой части я постараюсь немного рассказать как использовать базовые методы класса JHTML. В Joomla есть свои методы для вывода того или иного кода. Но это не значит, что все и всегда так нужно делать, и это не лекарство от всех болезней. Иногда бывает полезно использовать этот функционал, для того что бы не писать лишний раз тот или иной код. Но повторюсь, злоупотреблять им все же думаю не стоит, т.к. лучше все таки вписать пару строчек ручками, чем вызывать тот или иной метод. Как никак на производительность это может влиять, пусть даже и не сильно.
По этой же причине описывать все методы, думаю, не имеет смысла. Опишу только те, которые могут пригодиться в той или иной ситуации.
SM ReplacingText
01.02.2010 →Административный компонент, предназначен для массовой замены текста в стандартных материалах. Можно заменять текст как по всем разделам, так и по отдельным категориям. Это довольно простой компонент, но иногда бывает очень полезным, что бы не составлять лишний раз SQL запросы в БД.
AJAX проверка для формы регистрации
13.01.2010 ОбщиеНебольшая модификация стандартной формы регистрации, которая позволит на лету проверять свободен ли логин или занять. Ее можно, в принципе, использовать для проверки чего угодно, например email и т.д.
Итак что нам делает стандартная форма регистрации. При совпадении логина или email пользователя перезагружается вся страница, мало того все введенные данные не сохраняются, и приходиться вводить их еще раз. Это как то не очень удобно.
Несколько полезных советов, которые помогут защитить расширение
13.01.2010 →Итак для защиты своих расширений от SQL инъекций можно воспользоваться следующими простыми советами. Некоторые люди утверждают, что использование класса JRequest достаточно для этих целей, но по правде это далеко не так. В этой статье по порядку расписываются наиболее встречающиеся моменты.