Сегодня решил потратить немного времени для составления шаблонов кода в замечательной среде разработки PHPStorm

Надоело как говорится сотню раз на день писать один и тот же код, и вот решил поделиться своими набросками

Что бы у вас заработало достаточно взять файл Joomla.xml который прикреплен ниже, и поместить его в папку с настройками IDE!

В Windows этот путь будет в папке профиля текущего пользователя (в выполнить набрать команду %USERPROFILE%), и найти папку которая называется .WebIdeXX где XX это номер текущей версии PHPStorm)! Дальше переходим в папку config\templates\ и просто копируем файл в эту папку! Пользователи Linux думаю сами найдут где хранит PHPStorm настройки

Для вызова шаблона достаточно набрать его и нажать клавишу TAB

Пример того как работает live template в phpStorm можно увидеть в этом видео

Итак перечислю шаблоны и код который выдаст нам применение этих шаблонов

Применение: PHP
Назначение: Создание ссылки через JRoute
Результат:

echo JRoute::_();

Применение: PHP (контроллер по умолчанию компонента)
Назначение: Создание метода для работы с AJAX
Результат:

public function getAjax()
{
	$input = JFactory::getApplication()->input;
	$model = $this->getModel( 'ajax' );
	$action = $input->getCmd( 'action' );
	$reflection = new ReflectionClass( $model );
	$methods = $reflection->getMethods( ReflectionMethod::IS_PUBLIC );
	$methodList = array();
	foreach ( $methods as $method ) {
		$methodList[] = $method->name;
	}
	if ( in_array( $action, $methodList ) ) {
		$model->$action();
	}
	exit;
}

Использование: Для использования этого метода, нам нужно будет в папке models создать файл ajax.php и создать в нем класс
ComponentNameModelAjax extends JModelLegacy{}
Далее в этом классе можно создать любые произвольные методы, например public function getText(){ echo 'text';} и вызвать этот метод через ajax с помощью строки запроса: index.php?option=com_componentName&task=getAjax&action=getText

Применение: PHP
Назначение: Создание переменной в которую будет помещена база URI запроса
Результат:

$baseUrl = JUri::base();

Применение:PHP
Назначение: Вставка обработчика кеширования
Результат:

//$cache->setCaching( true );
if ( !( $item = $cache->get( $this->getState( 'item.id' ), 'com_test.item' ) ) ) {

    $cache->store( $item, $this->getState( 'item.id', 0 ), 'com_test.item' );
}

О кешировании я писал в этой статье

Применение:PHP
Назначение: вставка кода на проверку или пришел токен из формы
Результат:

if(!JSession::checkToken()) exit;

Применение:PHP
Назначение: Создает переменную в которую будет помещен текущий URL страницы
Результат:

$currentUrl = JUri::current();

Применение:PHP
Назначение: вывод даты с помощью класса JHtml
Результат:

echo JHtml::_('date', $item->created, 'd.m.Y | H:i');

Применение:PHP
Назначение: получение объекта для работы с базой данных в переменную $db
Результат:

$db = JFactory::getDbo();

Применение:PHP
Назначение: получение объекта для работы с документом
Результат:

$doc = JFactory::getDocument();

Применение:XML
Назначение: вставка шаблона для создания XML элемента формы
Результат:

<field
name=""
type=""
label=""/>

Применение:PHP (В виде компонента)
Назначение: служит для создания переменной которая получается из вида и заносится в шаблон
Результат:

$this->pagination = $this->get('pagination');

Применение:PHP
Назначение: получение объекта JInput для обработки пользовательского ввода
Результат:

$input = JFactory::getApplication()->input;

Применение:HTML|PHP
Назначение: служит для вставки конструкции для вывода позиции модуля
Результат:

<jdoc:include type="modules" name="position" />

Применение:PHP
Назначение: вставляет код для подключения jQuery
Результат:

JHtml::_( 'jquery.framework', false, null, false );

Применение:PHP
Назначение: вставляет небольшую функцию для формирования и вывода JSON данных, эту функцию я использую длz возврата данных для JSON запроса в AJAX
Результат:

/**
 * Вывод JSON данных
 * @param $message
 * @param bool $result
 * @param array $custom
 */
private function printJson( $message, $result = false, $custom = array() )
{
	$jsonData = array( 'result' => $result, 'message' => $message );
	foreach ( $custom as $key => $value ) {
		$jsonData[$key] = $value;
	}
	echo json_encode( $jsonData );
	exit;
}

Использование: использовать этот метод просто! Вставляем код в любом классе, а дальше если нам нужно отдать какие то данные: $this->printJson('Комментарий не был добавлен', false, array('error'=>'1'));

Применение:PHP
Назначение: вставляет код для отправки E-mail с помощью класса JMailer
Результат:

$config = JFactory::getConfig(); //получаем настройки сайта
$mailer = JFactory::getMailer(); //Получаем экземпляр класса JMail
$mailer->IsHTML( true ); //Указываем что письмо будет в формате HTML
$mailer->setSender( array( $config->get( 'mailfrom' ), $config->get( 'fromname' ) ) ); //Указываем отправителя письма
$mailer->addRecipient( $config->get( 'mailfrom' ) ); //указываем получателя письма
$mailer->setSubject($subject); //Тема письма
$mailer->setBody($body); //Добавляем текст письма
$mailer->send(); //Отправляем письмо

Применение:PHP
Назначение: Служит для получения объекта класса JPathway который служит для создания навигации сайта (хлебных крошек)
Результат:

$pathway = JFactory::getApplication()->getPathway();

Применение:PHP
Назначение: вставка кода для обработки текста контент плагинами
Результат:

JHtml::_('content.prepare', $text); 

Применение:PHP
Назначение: Вставка кода для вывода модуля по позиции
Результат:

function renderModules( $position, $style = '' )
{
	$modules = JModuleHelper::getModules( $position );
	foreach ( $modules as $module ) {
		echo JModuleHelper::renderModule( $module, array( 'style' => $style ) );
	}
}

Этот код может понадобиться если вам нужно в каком то месте вывести модуль по позиции! Например как для функционала который я описывал в статье про создание собственной страницы ошибок

Применение:PHP (помощник вида/модуля)
Назначение: Вставляет статичный метод для формирования ссылки на другие компоненты или на пункты меню связанные с созданным пунктом меню
Результат:

/**
* @var array List Id depending of view component
*/
static $menuIds = array();

/**
* Create sef links
* @param $option string
* @param $view string
* @param $query string
* @return JRoute link
* @throws Exception
*/
static function getRoute( $option, $view, $query = '' )
{
	if ( empty( self::$menuIds[$option . '.' . $view] ) ) {
		$items = JMenuSite::getInstance( 'site' )->getItems( 'component', $option );
		foreach ( $items as $item ) {
			if ( isset( $item->query['view'] ) && $item->query['view'] === $view ) {
				self::$menuIds[$option . '.' . $view] = $item->id;
			}
		}
	}
	return JRoute::_( 'index.php?view=' . $view . $query . '&Itemid=' . self::$menuIds[$option . '.' . $view] );
}

Использование: например у нас в меню создан пункт который связан с компонентом com_shop и видом basket, если мы хотим создать из другого компонента ссылку на этот вид нам достаточно написать
ClassHelperName::getRoute('com_shop', 'basket', '&var1=1&var2=2');

Применение:PHP
Назначение: создает переменную в которую будет помещен объект класса JSession
Результат:

$session = JFactory::getSession();$END$

Применение:HTML
Назначение: вставка токена формы
Результат:

<?php echo JHtml::_( 'form.token' ); ?>

Применение:HTML(шаблоны вида)
Назначение: вставка кода для вывода подшаблона вида
Результат:

<?php echo $this->loadTemplate('item');  ?>

Применение:XML
Назначение: Вставка XML поля для формы для вывода поля выбора из двух опций (Да и Нет)
Результат:

<field
        name=""
        type="list"
        label=""
        default="0">
    <option value="0">JNO</option>
    <option value="1">JYES</option>
</field>

Со временем этот список будет дополняться!

Скачать файл с шаблонами!

А какие шаблоны используете вы? Оставляйте комментарии, или пишите мне на мыло )