Перейти к содержанию
fog

Создать условия в шаблоне

Рекомендуемые сообщения

Всем привет))
 
Я новичок на форуме, поэтому не судите строго за вопрос (поиск юзал - не нашел..)
 
Задача такая: нужно вывести определенный класс для <body>
 
Не проблема, в файле controller/common/header.php прописываю

$this->data['bodyClass'] = 'test-class';// my edition

Но мне нужно выводить определенный класс в зависимости от наличия/отсутствия правой или левой колонки

Т.е. переменные $column_left и $column_right ни где не определены и условие:

if(!$column_left ) {
  $this->data['bodyClass'] = 'non-left';
}

не работает ... 

 

Подскажите пожалуйста, я вообще с файлами .tpl не работал никогда ))

Спасибо

 

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

Изменено пользователем fog

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет))

 

Я новичок на форуме, поэтому не судите строго за вопрос (поиск юзал - не нашел..)

 

Задача такая: нужно вывести определенный класс для <body>

 

Не проблема, в файле controller/common/header.php прописываю

$this->data['bodyClass'] = 'test-class';// my edition

Но мне нужно выводить определенный класс в зависимости от наличия/отсутствия правой или левой колонки

Т.е. переменные $column_left и $column_right ни где не определены и условие:

if(!$column_left ) {
  $this->data['bodyClass'] = 'non-left';
}

не работает ... 

 

Подскажите пожалуйста, я вообще с файлами .tpl не работал никогда ))

Спасибо

 

Да, и в догонку вопрос:

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

 

 

Честно говоря  не очень представляю как можно из header получить наличие или отсутствие одной из колонок.

Так Вы врядле получите наличие переменной. Собственно колонки создаются так 

$this->load->model('setting/extension');
		
		$extensions = $this->model_setting_extension->getExtensions('module');		
		
		foreach ($extensions as $extension) {
			$modules = $this->config->get($extension['code'] . '_module');
			
			if ($modules) {
				foreach ($modules as $module) {
					if ($module['layout_id'] == $layout_id && $module['position'] == 'column_right' && $module['status']) {
						$module_data[] = array(
							'code'       => $extension['code'],
							'setting'    => $module,
							'sort_order' => $module['sort_order']
						);				
					}
				}
			}
		}

Как Вариант , Вам тоже самое нужно создавать в header, и потом проверять создался ли массив, и уже в зависимости от этого добавляться класс к body или нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или же оттолкнуться немного в сторону и возложить эту задачу на js или jquery

Потому что проверить наличие

<div id="column-left">

не должно никого озадачить.

Да и класс для body после этого тоже легко задать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, попробую со всем этим что-нибудь сделать ..  :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делал так, писал условие в column_left.tpl

<?php if ($modules) { ?>
<div id="column-left">
  <?php foreach ($modules as $module) { ?>
  <?php echo $module; ?>
  <?php } ?>
</div>
<?php } else { ?>
<script type="text/javascript">
	$("body").addClass("myclass");
</script>

<?php } ?>
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С js, конечно, вариант самый простой, но не хочется верстку латать js-ом

 

С контроллерами вариант не работает, потому что условие вывода проверяется уже непосредственно в шаблоне, как и написал pashast 

 

Вот если бы кто подсказал, как из column_left.tpl передать переменную в headr.tpl

.. если в .tpl такое возможно в принципе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С js, конечно, вариант самый простой, но не хочется верстку латать js-ом

Очень зря.

Потому что при выключенном js не будет работать даже добавление товара в корзину.

Значит js включен.

А значит этот вариант наиболее оптимальный.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, так наверное и сделаю, пока не разберусь что где лежит ...

 

Непривычно все это. Чтобы добавить бутстраповский класс к <div id="content" class="span8"> нужно 100500 файлов отредактировать :oops:

или опять же js

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 бутстраповский класс к <div id="content" class="span8"> 

О боги великих клавиатурных крошек под кнопочками!

Одним только вам известно, какими багами и конфликтами стилей будет награждён этот шаблон, если его не верстали с нуля, а просто подключили бутстрап  :lol:

 

Нет ничего страшного в редактировании 100500 файлов. Их на самом деле куда меньше. Я уже создавал чистый шаблон на бутстрапе  под опенкарт  ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или же оттолкнуться немного в сторону и возложить эту задачу на js или jquery

Потому что проверить наличие

<div id="column-left">

не должно никого озадачить.

Да и класс для body после этого тоже легко задать. 

 

 

Что-бы проверить есть ли этот id нужно готовый DOM получить в обьект, и прежде чем выполнится условие пользователь может периодически наблюдать картинку когда колонка появилась и вдруг пропала. С этим $(doc).on('ready' ... одни проблемы(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О боги великих клавиатурных крошек под кнопочками!

Одним только вам известно, какими багами и конфликтами стилей будет награждён этот шаблон, если его не верстали с нуля, а просто подключили бутстрап  :lol:

 

Нет ничего страшного в редактировании 100500 файлов. Их на самом деле куда меньше. Я уже создавал чистый шаблон на бутстрапе  под опенкарт  ;)

:-) Установил бутстрап, конфликты скриптов устранил (спасибо, на форуме помогли) - все работает. 

Естественно, шаблон будет свой! Тупо врубить бутстрап конечно не прокатит ..

Просто пока переходный период : подключил свой стиль - отрубил дефолтный.

Адаптируюсь))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.