Помогите с PHP, не могу добавить условие

A
На сайте с 18.10.2007
Offline
118
1208

Пытаюсь настроить OpenCart, нужно привязать каждой категории свой дизайн "category.tpl"

Для одной категории сделать получилось, делается вот так:

if ($this->data['layout_id'] == 12) {$this->template = $this->config->get('config_template') . '/template/product/XXX.tpl';

} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
}

но как быть если теперь нужно условие, при layout_id'] == 13 должен грузится шаблон /template/product/ZZZ.tpl и так далее?

Заранее спасибо

edogs software
На сайте с 15.12.2005
Offline
775
#1
alepavlenko:
Пытаюсь настроить OpenCart, нужно привязать каждой категории свой дизайн "category.tpl"

Для одной категории сделать получилось, делается вот так:

if ($this->data['layout_id'] == 12) {$this->template = $this->config->get('config_template') . '/template/product/XXX.tpl';

} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
}


но как быть если теперь нужно условие, при layout_id'] == 13 должен грузится шаблон /template/product/ZZZ.tpl и так далее?

Заранее спасибо

Логично продолжая Вашу идею


if ($this->data['layout_id'] == 12) {$this->template = $this->config->get('config_template') . '/template/product/XXX.tpl'; }
elseif ($this->data['layout_id'] == 13) {$this->template = $this->config->get('config_template') . '/template/product/ZZZ.tpl'; }
elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
$this->template = 'default/template/product/category.tpl';
}
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
A
На сайте с 18.10.2007
Offline
118
#2

edogs, Работает, спасибо!

Наверное будет коряво если elseif будет ещё штук 5 :)

yet_warm
На сайте с 26.05.2007
Offline
129
#3
alepavlenko:
Наверное будет коряво если elseif будет ещё штук 5

Не нра if, юзай switch... наверное :)

Многие хотят попасть в рай, мало кто хочет для этого умирать.
edogs software
На сайте с 15.12.2005
Offline
775
#4
alepavlenko:
edogs, Работает, спасибо!

Наверное будет коряво если elseif будет ещё штук 5 :)

По уму просто добавить поле для категории в котором будет хранится шаблон и брать его оттуда, а не вычислять в коде на основе ИД.

Как крайне облегченный вариант этой идеи


$_a=array(12=>'/template/product/XXX.tpl',13=>'/template/product/zzz.tpl');
//храним шаблоны для ид категорий в массиве, хотя и не в базе
if(isset($_a[$this->data['layout_id']])) $this->template = $this->config->get('config_template').$_a[$this->data['layout_id']];
elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else $this->template = 'default/template/product/category.tpl';
Samail
На сайте с 10.05.2007
Offline
369
#5

Можно и поле не добавлять, а просто файлы шаблонов пронумеровать.

S
На сайте с 13.10.2014
Offline
171
#6

мне тут индусская (читаем говнокодерская) мысль в голову пришла. А что, если все условия загнать в массив и прогнать через foreach?

получился вот такой вот адъ (работает на php5.3+)

	$actions = array(

function($x,$y) {if($x>1) {return 'x+1='.($x+1).'; ';} else return FALSE;},
function($x,$y) {if($y>1) {return 'x+1='.($y+1).'; ';} else return FALSE;},
function($x,$y) {if($y==$x){return 'x+y='.($x+$y).'; ';} else return FALSE;},
function($x,$y) {if($x==1) {return 'x='.$x.';';} else return FALSE;},
);

$x = 1;
$y = 1;

foreach ($actions as $condition)
{
$result = call_user_func($condition,$x,$y);
if ($result !== FALSE)
{
print $result;
break;
}
}

фактически, цикл исполняется до того момента, пока одна из функций не вернет значения отличного от FALSE

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий