Jump to content


Photo
- - - - -

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


56 replies to this topic

#41 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 20 January 2016 - 12:14

Денис, спасибо, вопрос с этой ошибкой решён. больше не возникает. 

 

С остальным буду тогда буду стараться разбираться. 


  • 0

#42 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 28 January 2016 - 16:28

Денис, хотел вам задать ещё один вопрос. Подскажите пожалуйста, как мне получить массив изображений и при этом чтобы они имели свои параметры ширины и высоты, без масштабирования? 

 

Я знаю, что для миниатюр имеется вот такая функция, которая получает изображения из папки и ресайзит их до необходимого размера: 

protected function _getThumbnails($params)
    {
        $thumbs = array();
        $thumbnailWidth  = $params->get('thumbnailWidth');
        $thumbnailHeight = $params->get('thumbnailHeight');
        $resize = $params->get('resize', 1);
        $title  = $this->_data->get('title', '');

        $files = JFolder::files($this->_path, '.', false, true, array('.svn', 'CVS', '.DS_Store'));
        $files = array_filter(
            $files, create_function('$file', 'return preg_match("#(\.bmp|\.gif|\.jpg|\.jpeg|\.png)$#i", $file);')
        );

        // set default thumbnail size, if incorrect sizes defined
        $thumbnailWidth  = intval($thumbnailWidth);
        $thumbnailHeight = intval($thumbnailHeight);
        if ($thumbnailWidth < 1 && $thumbnailHeight < 1) {
            $thumbnailWidth  = 100;
            $thumbnailHeight = null;
        }

        foreach ($files as $file) {

            $filename = basename($file);
            $thumb    = $this->app->zoo->resizeImage($file, $thumbnailWidth, $thumbnailHeight);

            // if thumbnail exists, add it to return value
            if (file_exists($thumb)) {

                // set image name or title if exsist
                $name = '';
                if (isset($desc_array[$filename])) {
                    $name = $desc_array[$filename];
                }

                // get image info
                list($thumb_width, $thumb_height) = @getimagesize($thumb);

                $thumbs[] = array(
                    'name'         => $name,
                    'filename'     => $filename,
                    'img'          => $this->_uri . $this->_getRelativePath($file),
                    'img_file'     => $file,
                    'thumb'        => $this->_uri . $this->_getRelativePath($thumb),
                    'thumb_width'  => $thumb_width,
                    'thumb_height' => $thumb_height
                );
            }
        }

        return $thumbs;
    }

А мне нужно просто получить большие изображения из папки в массив и вывести их в шаблон tmpl / jbsliderpro.php


  • 0

#43 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 29 January 2016 - 12:40

Полагаю тогда вам не нужна строка ресайзера
$thumb = $this->app->zoo->resizeImage($file, $thumbnailWidth, $thumbnailHeight);
// заменить на 
$thumb = $file;

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



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


#44 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 29 January 2016 - 12:49

Понял. То есть я создаю новую переменную, и в неё кладу все файлы из папки без ресайзинга. 

 

Просто понимаете, в чём проблема. Получается так, что сначала все изображения складываются в массив, потом ресайзятся до миниатюр, и потом каждая миниатюра уже масштабируется, когда нужно показать большое фото. И это большое фото очень плохого качества. Поэтому я хочу большие фото выводить из другого массива. 

 

Как мне именно большое фото из нового массива выводить в шаблоне? 

 

Вот ссылка кстати, где можно посмотреть работу слайдера: http://clock.artcolo...-vesyolaya-sova


  • 0

#45 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 29 January 2016 - 12:58

Да, если верно вас понял, то вроде так...

Я бы сделал две разные функции которые дают массив картинок, в одном ресайз есть в другом нету.
Либо параметризировать текущую функцию.

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



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


#46 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 29 January 2016 - 13:07

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

 

Вот этого должно думаю хватить: 

protected function _getImages($params)
    {
        $bigImage = array();
        $width  = $params->get('width');
        $height = $params->get('height');
        $title  = $this->_data->get('title', '');
 
        $files = JFolder::files($this->_path, '.', false, true, array('.svn', 'CVS', '.DS_Store'));
        $files = array_filter(
            $files, create_function('$file', 'return preg_match("#(\.bmp|\.gif|\.jpg|\.jpeg|\.png)$#i", $file);')
        );
 
 
        foreach ($files as $file) {
 
            $filename = basename($file);
            $bigImage    = $file;
 
            // if thumbnail exists, add it to return value
            if (file_exists($thumb)) {
 
                // set image name or title if exsist
                $name = '';
                if (isset($desc_array[$filename])) {
                    $name = $desc_array[$filename];
                }
 
                // get image info
                list($thumb_width, $thumb_height) = @getimagesize($thumb);
 
                $bigImage[] = array(
                    'name'         => $name,
                    'filename'     => $filename,
                    'img'          => $this->_uri . $this->_getRelativePath($file),
                    'img_file'     => $file
                );
            }
        }
 
        return $bigImage;
    }

Так правильно будет?


  • 0

#47 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 29 January 2016 - 15:48

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

 

Единственная проблема ещё - это подключение локализации. По вашему методу локализация подключается, но выдаёт ошибки как в админке, так и на фронте. Может можно как-то иначе подключить?


  • 0

#48 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 30 January 2016 - 13:08

Подключил сейчас локализацию всё-таки тем методом, что вы показывали, и вы знаете, всё-таки заработало!

 

Вот этот код вставил, что вы давали: 

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

Теперь получается можно делать сколько угодно локализаций, они будут автоматом подключаться, как я понимаю, и выводиться в зависимости от языка админки, правильно?


  • 0

#49 zeus07

zeus07
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 6.6
  • posts: 1090
  • topics: 172

Posted 30 January 2016 - 13:15

Так, и ещё один вопрос всё-таки. 

 

Слайдер поддерживает также вывод видео. То есть, при сканировании папки, в массив можно также добавлять и видео. Как это можно сделать? 

Вот в этой строке добавить просто расширения для видео: 

$files = array_filter(
            $files, create_function('$file', 'return preg_match("#(\.bmp|\.gif|\.jpg|\.jpeg|\.png)$#i", $file);')
        );

И также я думаю нужна опция, которая будет разрешать или запрещать добавлять видео в массив


  • 0

#50 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 02 February 2016 - 10:23

Это расширения только для файлов картинок. видео вставлять на сайт гораздо сложнее, у него будут другие теги.

Теперь получается можно делать сколько угодно локализаций, они будут автоматом подключаться, как я понимаю, и выводиться в зависимости от языка админки, правильно?

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



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





Click to return to top of page in style!