Перейти к содержимому


Фотография
- - - - -

Подключение статики и локализации в элемент


Сообщений в теме: 56

#1 zeus07

zeus07

Отправлено 10 January 2016 - 14:33

Здравствуйте!

 

Впервые разбираюсь с созданием своего элемента. 

 

На данный момент у меня готов файл XML и файл с локализацией, и папка assets.

Подскажите пожалуйста, как правильно подключить папки assets и language в элемент? Подключил их через XML, как это обычно делается при разработке шаблона для Joomla, но почему-то мне кажется, что это неверно.

 

Заранее благодарен. 


  • 2

#2 zeus07

zeus07

Отправлено 10 January 2016 - 18:03

Такс, про подключение статики нашёл в статье по обзору Zoo/JBZoo API

// подключить файл статики, используется виртуальный путь (из хелпера path)
$this->app->jbassets->js('<путь до файла JS>');
$this->app->jbassets->js('<путь до файла CSS>');

Единственное, непонятно, какие пути использовать в этом случае: относительные или абсолютные. И пока стоит вопрос подключения локализации. Не хотелось бы её пихать в общую локализацию JBZoo.


  • 0

#3 zeus07

zeus07

Отправлено 11 January 2016 - 13:38

И ещё такой вопрос возник. 

 

Подключение статики как я понимаю, нужно проводить в файле PHP, который имеет название элемента, и лежит в папке tmpl?


  • 0

#4 SmetDenis

SmetDenis

Отправлено 12 January 2016 - 09:35

Подскажите пожалуйста, как правильно подключить папки assets и language в элемент?
 

XML в элементах используется только для мета информации (автор, копирайты) и полей настроек.

 

Чтобы подключить статику нужно в шаблоне или в методе loadAssets() использовать что-то следующее

 

$this->app->jbassets->js('elements:myelement/assets/js/myelement.js');
$this->app->jbassets->css('elements:myelement/assets/css/myelement.css');
$this->app->jbassets->less('elements:myelement/assets/less/myelement.less');

 

вместо "myelement" указать свое название.

это виртуальные пути, но никто не мешает использовать абсолютные

$this->app->jbassets->js('http://site.com/script.js');

 

Для элементов корзины  cart-elements эти действия происходят автоматически.

 

Далее loadAssets будет вызван в стиле позиции либо вручную в шаблоне.

 

В качестве примера можно посмотреть JBAdvert

jbly_200x0.png


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#5 zeus07

zeus07

Отправлено 12 January 2016 - 11:57

Понял, спасибо. А как быть с локализацией? Где её подключать?


  • 0

#6 SmetDenis

SmetDenis

Отправлено 12 January 2016 - 12:18

В конструкторе элемента использовать эту строчку

 

JFactory::getLanguage()->load('elem_' . $this->getElementType(), $this->getPath(), null, true);

 

После этого в директории элемента нужно создать language\ru-RU\ru-RU.elem_<myelement>.ini

 

Регистр букв важен.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 zeus07

zeus07

Отправлено 12 January 2016 - 12:19

Конструктор элемента - это файл php с названием элемента в корне, правильно?


  • 0

#8 SmetDenis

SmetDenis

Отправлено 12 January 2016 - 12:21

Нет, это часть класса PHP

 

public function __construct($app, $type, $group)
{
    parent::__construct($app, $type, $group);
    JFactory::getLanguage()->load('elem_' . $this->getElementType(), $this->getPath(), null, true);
}

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 zeus07

zeus07

Отправлено 12 January 2016 - 12:27

Понял, это функция, которая внутри класса с названием элемента. 

 

А ещё такой вопрос. Название класса формируется как Element + <название элемента>, прописывать extends Element это обязательно как я понимаю? Я читал про extends - это расширение класса, то есть в данном случае мы расширяем класс Element, и при этом можно пользоваться его переменными и + ещё использовать свои. Всё верно?

 

Я извиняюсь за такие, может быть глупые вопросы, но впервые всё это для меня) я хочу сделать свой элемент на основе плагина jQuery Slider Pro https://github.com/bqworks/slider-pro . Там очень богатый функционал, и что очень важно (для последнего проекта), расположить миниатюры можно по-разному. Я пытаюсь разобраться на примере элемента Nivo Slider, так как он по типу ближе всего

 

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


Сообщение отредактировал zeus07: 12 January 2016 - 12:28

  • 0

#10 SmetDenis

SmetDenis

Отправлено 12 January 2016 - 13:04

прописывать extends Element это обязательно как я понимаю?
 

Да, конечно. Иначе ваш класс не будет иметь нужных базовых функций, которые нужны каждому элементу.

 

Расширяя Element своим классом, вы определяете лишь часть функций, которые отвечаю за рендеринг элемента (например).

Грубо говоря, это называется API :)

 

Я извиняюсь за такие, может быть глупые вопросы,
 

 

Это не глупые вопросы, это просто "первый раз". Все так учатся ;)

Я буду только рад ответить.


  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!