Большое спасибо)
Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?
Posted 12 January 2016 - 13:08
Большое спасибо)
Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?
Posted 12 January 2016 - 13:12
Ещё вот такой вопрос есть.
Опять же, если брать за пример элемент Nivo Slider, то там в папке tmpl 2 файла: edit.php и файл с названием элемента.
В edit.php, как я понимаю, просто идёт выбор директории, в которой будут лежать фото?
То есть для моего элемента его можно просто скопировать?
Posted 12 January 2016 - 13:24
Большое спасибо)
Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?
Та, не вопрос ![]()
Опять же, если брать за пример элемент Nivo Slider, то там в папке tmpl 2 файла: edit.php и файл с названием элемента. В edit.php, как я понимаю, просто идёт выбор директории, в которой будут лежать фото?
edit.php - это шаблон элемента, который будет использоваться для редактирования в материале или подаче.
Он вызывается через метод edit() если тот определен.
Т.е на 103 строке проверяется существование файла tmpl/edit.php и если он есть, то подключается и рендерится с переменными $element, $value, $directory
То есть для моего элемента его можно просто скопировать?
Да, его + метод edit()
только обратите внимание на $directory, она оказывает откуда брать список файлов.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Posted 12 January 2016 - 13:33
Как я понимаю, переменная $directory получает список папок и файлов в корневой директории элемента, и в моём случае я могу копировать метод, не изменяя его, ведь файл edit.php у меня лежит также в tmpl/edit.php. Верно же?
Posted 12 January 2016 - 13:39
Эта переменная - просто текстовая строчка, путь до определенной папки.
Сейчас берется из настроек элемента.
При желание можно указать явно.
$directory = $directory = 'root:images/somefolder';
Пока просто скопируйте.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Posted 12 January 2016 - 13:46
Эта переменная - просто текстовая строчка, путь до определенной папки.
Сейчас берется из настроек элемента.
При желание можно указать явно.
$directory = $directory = 'root:images/somefolder';Пока просто скопируйте.
Да, так и сделал.
На данный момент, файл в корне элемента jbsliderpro.php у меня имеет такое содержание:
/**
* Class ElementJBSliderPro
*/
class ElementJBSliderPro extends Element
{
/**
* @return $this
*/
public function loadAssets()
{
$this->app->jbassets->js('elements:jbsliderpro/assets/js/jquery.sliderPro.min.js');
$this->app->jbassets->css('elements:jbsliderpro/assets/css/slider-pro.min.css');
return parent::loadAssets();
}
/**
* подключение локализаций
*/
public function __construct($app, $type, $group)
{
parent::__construct($app, $type, $group);
JFactory::getLanguage()->load('elem_' . $this->getElementType(), $this->getPath(), null, true);
}
/**
* Edit action
* @return null|string
*/
public function edit()
{
// init vars
$directory = 'root:' . $this->config->get('directory');
if ($layout = $this->getLayout('edit.php')) {
return self::renderLayout(
$layout,
array(
'element' => $this->identifier,
'directory' => $directory,
'value' => $this->_data->get('value')
)
);
}
return null;
}
}
?>
Как вы понимаете, переменных для самих настроек пока по сути нету. Но что самое приятное, сам элемент наконец-то отобразился в админке, при нажатии на Редактирование полей (для типа), и сейчас выводится 4 предупреждения (как я догадываюсь, переменные нигде не объявлены, и их нужно объявить):
Warning: Missing argument 2 for ElementJBSliderPro::__construct(), called in /home/artcolor/artcolorit.com/clock/administrator/components/com_zoo/helpers/element.php on line 82 and defined in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 38 Warning: Missing argument 3 for ElementJBSliderPro::__construct(), called in /home/artcolor/artcolorit.com/clock/administrator/components/com_zoo/helpers/element.php on line 82 and defined in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 38 Notice: Undefined variable: type in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 41 Notice: Undefined variable: group in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 41
Скриншот с номерами строк: http://clip2net.com/s/3sOn8CI
Posted 12 January 2016 - 13:52
Хм...
Тогда используйте строку JFactory::getLanguage() в методе render (в будущем методе)
А вообще я бы пока рекомендовал не забивать голову локализациями, а сделать на одном языке, а уже потом их добавить.
Тогда метод __construct не нужен совсем.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Posted 12 January 2016 - 14:00
Убрал пока локализацию, её же можно добавить в любой момент.
Добавил слайдер в шаблон Full, у меня отобразились настройки, всё прекрасно: http://clip2net.com/s/3sOpWBE
Есть вопрос. Для выпадающих списков я использовал тип jbselect. Но почему-то они выглядят как список опций, но без выпадения, они сразу все отображаются. Почему? или нужно было другой тип использовать?
Posted 12 January 2016 - 14:15
И опять же, сравнивая с Nivo Slider, хотел спросить по поводу двух функций:
Первая функция:
/**
* Check, has value
* @param array $params
* @return bool
*/
public function hasValue($params = array())
{
$value = $this->_data->get('value');
$directory = $this->_getImagesPath();
return !empty($value) && is_readable($directory) && is_dir($directory);
}
Как я понимаю, эта функция получает путь к картинкам, и проверяет, доступна ли данная директория, где лежат картинки, на запись. Верно? И её скорее всего также можно использовать, просто скопировав?
Вторая функция:
/**
* Get images paths
* @return string
*/
private function _getImagesPath()
{
$value = $this->_data->get('value');
$directory = $this->config->get('directory');
$directory = JPATH_ROOT . '/' . trim($directory, '/') . '/' . trim($value, '/');
return $directory;
}
Эта функция по идее связана с первой?
Posted 12 January 2016 - 14:53
. Почему? или нужно было другой тип использовать?
Тут лучше показать код, который у вас получился.
Как я понимаю, эта функция получает путь к картинкам, и проверяет, доступна ли данная директория, где лежат картинки, на запись. Верно? И её скорее всего также можно использовать, просто скопировав?
Да. Все верно.
Если ф-я вернет false, то элемент вообще никак не будет выведен на сайте.
Это проверка, которую вызывает компонент Zoo при выводе каждого элемента.
Удобно с точки зрения оптимизации, т.е выполнить минимальную проверку до запуска тяжелых функций элемента (н-р ресайза картинок).
Эта функция по идее связана с первой?
Да, он вернет путь до директории, из которой берутся файлы картинок.
$value - содержит название папки, которую выбрал человек для материала
$directory - содержит путь до родительской папки, на которую ссылается селект в админке.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.