Базовые методы для создания функций Gantry описаны ниже:
- isEnabled() - по умолчанию дает возможность включения управления функцией без использования интерфейса административной панели. Значение логическое, может возвращает [true | false]
- getPosition() - по умолчанию выставляет позицию из административной панели. Строковое значение [current position name]
- isInPosition([string $position]) -метод определения позиции. Аргумент функции [optional] Строковое значение [position name сравнение с выставленной позицией]. Логическое значение [true | false] если текущая позиция такая же как аргумент.
- isOrderable() - метод по умолчанию true, но может быть переопределен, если порядок позиции не имеет значения. Логическое значение [true | false]
- setPrefix(string $prefix) - префикс для входящего в состав элемента. Аргумент - строковое [prefix name - обычно имя главного параметра]
- get($param [, $prefixed = true]) - получает параметры данной функции. Можете также использовать префикс. Аргумент - строковое [имя параметра] Аргумент - [optional] логическое [true | false] Возвращает смешанное значение [текущее значение параметра]
- init() - по умолчанию пустой. Используется для инициализации
- render() - по умолчанию пустой. Используется для вывода определённой позиции
- finalize() - по умолчанию пустой. Окончание функции
Все основные функции и пользовательские функции, которые вы создаете расширяют "возможности" Gantry. Чтобы создать новую функцию вы должны создать новый файл в директории features/
вашего шаблона. В файле libraries/gantry/core/gantryfeatures.class.php
описаны все функции с помощью которых построены "возможности".
Чтобы лучше понять как создавать функции попробуйте изменить уже существующие. Давайте рассмотрим "возможность" totop.php.
Как вы понимаете это кнопка внизу страницы обеспечивающая возможность прокрутки страницы снизу вверх. Наиболее важной особенностью является файл .php который находится в директории libraries/gantry/features/
. Его не следует изменять там. Если вы хотите изменить его, то скопируйте себе в папку шаблона /templates/[ВАШ_ШАБЛОН]/features
. Gantry автоматически будет использовать ваш файл, как приоритетный, если он будет назван также. Другая часть, которая является совсем не обязательной - конфигурация. Как и все "возможности" конфигурация создается и обрабатывается из файла template-options.xml
. Для "возможности" totop, конфигурация выглядит так:
<fields name="totop" type="chain" label="TOTOP" description="TOTOP_DESC">
<field name="enabled" type="toggle" default="0" label="SHOW"/>
<field name="position" type="position" default="copyright-b" label="POSITION"/>
<field name="text" type="text" default="Back to Top" label="TEXT" class="text-long" />
</fields>
Что означает что в панели администратора будет три параметра. Первый будет включать и выключать "возможность". Второй будет устанавливать позицию. Третий - текстовое поле, для обозначения ссылки. Вы можете добавить новые и связать и использовать их в php.
Давайте теперь посмотрим на php этой "возможности":
<?php
/**
* @version $Id: totop.php 2487 2012-08-17 22:04:06Z btowles $
* @author RocketTheme http://www.rockettheme.com
* @copyright Copyright (C) 2007 - ${copyright_year} RocketTheme, LLC
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*
* Gantry uses the Joomla Framework (http://www.joomla.org), a GNU/GPLv2 content management system
*
*/
defined('JPATH_BASE') or die();
gantry_import('core.gantryfeature');
/**
* @package gantry
* @subpackage features
*/
class GantryFeatureToTop extends GantryFeature
{
var $_feature_name = 'totop';
function init()
{
/** @var $gantry Gantry */
global $gantry;
if ($this->get('enabled')) {
$gantry->addScript('gantry-totop.js');
}
}
function render($position)
{
ob_start();
?>
<div class="clear"></div>
<div class="rt-block">
<a href="#" id="gantry-totop" rel="nofollow"><?php echo $this->get('text'); ?></a>
</div>
<?php
return ob_get_clean();
}
}
}
Как вы видите использованы две функции. Первый init() - инициализация, если используется totop то подключить нужный скрипт. Вторая функция render(). Эта функция нужна для текста ссылки. Другие функции здесь не переопределены, что означает что они используются из XML вкл./выкл, позиция и т.д.