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


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

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


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

#11 zeus07

zeus07

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

Большое спасибо) 

 

Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?


  • 0

#12 zeus07

zeus07

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

Ещё вот такой вопрос есть. 

 

Опять же, если брать за пример элемент Nivo Slider, то там в папке tmpl 2 файла: edit.php и файл с названием элемента. 

В edit.php, как я понимаю, просто идёт выбор директории, в которой будут лежать фото? 

 

То есть для моего элемента его можно просто скопировать?


  • 0

#13 SmetDenis

SmetDenis

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



Большое спасибо) 

 

Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?

 

Та, не вопрос :)

 

Опять же, если брать за пример элемент Nivo Slider, то там в папке tmpl 2 файла: edit.php и файл с названием элемента.  В edit.php, как я понимаю, просто идёт выбор директории, в которой будут лежать фото? 
 

 

edit.php - это шаблон элемента, который будет использоваться для редактирования в материале или подаче.

Он вызывается через метод edit() если тот определен.

 

s38l_200x0.png

 

Т.е на 103 строке проверяется существование файла tmpl/edit.php и если он есть, то подключается и рендерится с переменными $element, $value, $directory

 

То есть для моего элемента его можно просто скопировать?
 

Да, его + метод edit()

 

только обратите внимание на $directory, она оказывает откуда брать список файлов.


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



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


#14 zeus07

zeus07

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

Как я понимаю, переменная $directory получает список папок и файлов в корневой директории элемента, и в моём случае я могу копировать метод, не изменяя его, ведь файл edit.php у меня лежит также в tmpl/edit.php. Верно же?


  • 0

#15 SmetDenis

SmetDenis

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

Эта переменная - просто текстовая строчка, путь до определенной папки.

Сейчас берется из настроек элемента.

 

При желание можно указать явно.

$directory = $directory = 'root:images/somefolder';

 

Пока просто скопируйте.


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



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


#16 zeus07

zeus07

Отправлено 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


  • 0

#17 SmetDenis

SmetDenis

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

Хм...

 

Тогда используйте строку JFactory::getLanguage() в методе render (в будущем методе)

А вообще я бы пока рекомендовал не забивать голову локализациями, а сделать на одном языке, а уже потом их добавить.

 

Тогда метод __construct не нужен совсем.


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



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


#18 zeus07

zeus07

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

Убрал пока локализацию, её же можно добавить в любой момент.

Добавил слайдер в шаблон Full, у меня отобразились настройки, всё прекрасно: http://clip2net.com/s/3sOpWBE

 

Есть вопрос. Для выпадающих списков я использовал тип jbselect.  Но почему-то они выглядят как список опций, но без выпадения, они сразу все отображаются. Почему? или нужно было другой тип использовать?


  • 0

#19 zeus07

zeus07

Отправлено 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;
    }

Эта функция по идее связана с первой?


  • 0

#20 SmetDenis

SmetDenis

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

. Почему? или нужно было другой тип использовать?
 

Тут лучше показать код, который у вас получился.

 

 

Как я понимаю, эта функция получает путь к картинкам, и проверяет, доступна ли данная директория, где лежат картинки, на запись. Верно? И её скорее всего также можно использовать, просто скопировав?
 

Да. Все верно.

Если ф-я вернет false, то элемент вообще никак не будет выведен на сайте.

Это проверка, которую вызывает компонент Zoo при выводе каждого элемента.

 

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

 

Эта функция по идее связана с первой?
 

Да, он вернет путь до директории, из которой берутся файлы картинок. 

 $value - содержит название папки, которую выбрал человек для материала

$directory  - содержит путь до родительской папки, на которую ссылается селект в админке.


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



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





Click to return to top of page in style!