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


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

Правка шаблона


Лучший Ответ Cheren-dow , 13 February 2014 - 20:28

Дмитрий, доброго времени суток.

Думаю вам стоит скачать Шаблон UIKIT для JBZOO и посмотреть как там(в том же файле только шаблон uikit) реализован вывод этих колонок. Там что то похожее сделано.

 

 

 

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

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


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

#1 Дмитрий

Дмитрий

Отправлено 13 February 2014 - 18:46

Вот стандартный код файла _default.php из папки item_columns:

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */
 
// no direct access
defined('_JEXEC') or die('Restricted access');
 
 
$this->app->jbdebug->mark('layout::item_columns::start');
 
if ($vars['count']) {
 
    $count = $vars['count'];
 
    echo '<div class="items items-col-' . $vars['cols_num'] . '">';
 
    $j = 0;
    foreach ($vars['objects'] as $object) {
 
        $first = ($j == 0) ? ' first' : '';
        $last  = ($j == $count - 1) ? ' last' : '';
        $j++;
 
        $isLast = $j % $vars['cols_num'] == 0 && $vars['cols_order'] == 0;
 
        if ($isLast) {
            $last .= ' last';
        }
		
		echo $count;
        echo '<div class="column rborder width' . intval(100 / $vars['cols_num']) . $first . $last . '">' . $object
            . '</div>';
 
        if ($isLast) {
            echo '<div class="clear clr"></div>';
        }
 
    }
 
    echo '</div>';
    echo '<div class="clear clr"></div>';
 
}
 
$this->app->jbdebug->mark('layout::item_columns::finish');

Он выводит тизеры в шаблон категории.

 

Я хочу сделать его адаптивным и прицепить к нему классы из bootstrap 3. На поломаных костылях я написал:

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */
 
// no direct access
defined('_JEXEC') or die('Restricted access');
 
 
$this->app->jbdebug->mark('layout::item_columns::start');
 
if ($vars['count']) {
 
    $count = $vars['count'];
	
$col = 0;
 
if ( $vars['cols_num'] == 1 ):
	$col = 12;
elseif ( $vars['cols_num'] == 2):
	$col = 6;
elseif ( $vars['cols_num'] == 3):
	$col = 4;
elseif ( $vars['cols_num'] == 4):
	$col = 3;
elseif ( $vars['cols_num'] == 5):
	$col = 2;
elseif ( $vars['cols_num'] == 6):
	$col = 2;
	else:
		$col = 0;
		endif;
	
echo '<div class="row">';
    echo '<div class="catalog-item col-md-' . $col . '">';
    
    foreach ($vars['objects'] as $object) {
        echo '<div class="catalog-column">' . $object . '</div>';
    }
 
    echo '</div>';
echo '</div>';
}
 
$this->app->jbdebug->mark('layout::item_columns::finish');

Но этот код просто ложит тизеры в ячейки типа col-md-x. Как мне обернуть каждую строку тизеров в див <div class="row">...</div>?

 

Т.е. нужна структура такого типа:

Untitled-1.png


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 13 February 2014 - 20:28   Лучший Ответ

Дмитрий, доброго времени суток.

Думаю вам стоит скачать Шаблон UIKIT для JBZOO и посмотреть как там(в том же файле только шаблон uikit) реализован вывод этих колонок. Там что то похожее сделано.

 

 

 

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


Сообщение отредактировал Cheren-dow: 13 February 2014 - 20:29

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

#3 Дмитрий

Дмитрий

Отправлено 14 February 2014 - 04:38

Спасибо, вопрос решился в одну строчку. Я уже начал округлять количество строк и встраивать двумерный массив в форич. Или что там у меня после двух бессонных суток в голове было :)) 

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');


$this->app->jbdebug->mark('layout::item_columns::start');

if ($vars['count']) {

    $count = $vars['count'];
	
$col = 0;

if ( $vars['cols_num'] == 1 ):
	$col = 12;
elseif ( $vars['cols_num'] == 2):
	$col = 6;
elseif ( $vars['cols_num'] == 3):
	$col = 4;
elseif ( $vars['cols_num'] == 4):
	$col = 3;
elseif ( $vars['cols_num'] == 5):
	$col = 2;
elseif ( $vars['cols_num'] == 6):
	$col = 2;
	else:
		$col = 0;
		endif;

$j = 0;
    foreach (array_chunk($vars['objects'], $vars['cols_num']) as $objects) {

	    echo '<div class="row items-row-' . $vars['cols_num'] . '">';

		    foreach($objects as $object){
			    $first = ($j == 0) ? ' first' : '';
			    $last  = ($j == $count - 1) ? ' last' : '';
			    $j++;

			    $isLast = $j % $vars['cols_num'] == 0 && $vars['cols_order'] == 0;

			    echo '<div class="col-md-'. $col . $first . $last . ' col-sm-6">' .
				          $object .
				     '</div>';
		    }

	    echo '</div>';
    }
}

$this->app->jbdebug->mark('layout::item_columns::finish'); 

  • 0




Click to return to top of page in style!