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


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

Элемент аккордеона на Bootstrap


Лучший Ответ zeus07 , 22 April 2016 - 13:04

Разобрался. В ссылку забыл добавить ещё один атрибут data-target. 

При инициализации аккордеона toggle должен быть в значении false, тогда аккордеоны по умолчанию будут свёрнуты.

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 14

#1 zeus07

zeus07

Отправлено 21 April 2016 - 14:19

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

 

Был когда-то древний элемент аккордеона от Likrion. Решил переделать вывод на бутстрапе. 

 

Функция рендеринга выглядит следующим образом: 

protected function _render($params = array()) {
                    
                $id = $this->key();


	return
	
$html[] ='<div class="panel panel-default"><div class="panel-heading">
<h4 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapse-'.$id.'">'.$this->get('value', '').'</a></h4></div><div id="#collapse-'.$id.'" class="panel-collapse collapse"><div class="panel-body"><p>'.$this->getText().'</p></div></div></div>';

	}

Мне необходимо содержимая массива $html вложить в див аккордеона. Попытался сделать файл default.php с таким кодом: 

<?php

defined('_JEXEC') or die('Restricted access');

echo '<div class="panel-group" id="accordion">';

echo $html;

echo '</div>';

?>

Но такая конструкция не работает. Подскажите пожалуйста как правильно это реализовать. 


  • 0

#2 Cheren-dow

Cheren-dow

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

zeus07, если вы возвращаете массив, то стоит воспользоваться функцией implode()


  • 0
Изображение
 

#3 zeus07

zeus07

Отправлено 21 April 2016 - 15:16

Немного не понял где именно её нужно применить


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 21 April 2016 - 15:33

Если у вас $html это массив то его необходимо implode("", $html) превратить в строку. Посмотрите любой элемент JBZoo/Zoo например 'njn^

\media\zoo\elements\itemprevnext\itemprevnext.php

почти везде увидите конструкцию:
 

if ($layout = $this->getLayout()) {
			return $this->renderLayout($layout, compact('prev', 'prev_link', 'next', 'next_link'));
		}

Которая будет подключать шаблон. А у же в шаблоне верстка. А сейчас у вас просто возвращается массив.


  • 0
Изображение
 

#5 zeus07

zeus07

Отправлено 21 April 2016 - 15:34

А всё, дошло, спасибо. Значит сейчас переделаю.


  • 0

#6 zeus07

zeus07

Отправлено 21 April 2016 - 16:28

Так, переделал функцию рендера, но что-то вообще содержимое не отображается. Функция вот такая: 

protected function _render($params = array()) {
                //init params
                $params = $this->app->data->create($params);
                $id = $this->key();
                // render layout
                if ($layout = $this->getLayout()) {
                    return $this->renderLayout($layout, $id);
                }
                return null;
	}

Шаблон вывода также сделал 

<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapse-<?php echo $id; ?>"><?php echo $this->get('value', ''); ?></a>
            </h4>
        </div>
        <div id="#collapse-<?php echo $id; ?>" class="panel-collapse collapse">
            <div class="panel-body">
                <p><?php echo $this->getText(); ?></p>
            </div>
        </div>
    </div>
</div>

  • 0

#7 Cheren-dow

Cheren-dow

Отправлено 22 April 2016 - 11:12

zeus07, посмотрите что возвращает 

$this->getLayout()

Это название файла шаблона, что то мне кажется вы не правильно назвали файл шаблона.


  • 0
Изображение
 

#8 zeus07

zeus07

Отправлено 22 April 2016 - 11:14

Шаблон положил в папку tmpl и назвал default.php. Сейчас проверю, что возвращает


Сообщение отредактировал zeus07: 22 April 2016 - 11:15

  • 0

#9 Cheren-dow

Cheren-dow

Отправлено 22 April 2016 - 11:17

Сейчас проверю, что возвращает

В вашем случае название шаблона должно совпадать с названием элемента 


  • 0
Изображение
 

#10 zeus07

zeus07

Отправлено 22 April 2016 - 11:20

В вашем случае название шаблона должно совпадать с названием элемента 

 

Точно! Спасибо, совсем забыл про это...


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

 

Ссылка: http://terra.artcolo...m/ih-malta-gozo


  • 0




Click to return to top of page in style!