magneto2010

Урок для нуба по php. Где косяк?

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

magneto2010    41

Решил сделать стикеры к товару. Включаться стикеры будут у товаров, у которых в поле ean прописано что угодно.

 

Для категории забубенил - пашет, показывается как нужно, только у тех, у которых заполнено поле.

 

Вот для карточки товара не могу раздуплить как сделать, не читает стиль, хотя стиль пишу по аналогии как и в category.php, которой всё норм работает.

 

Пишу так (часть кода)

 

if ($product_info['ean']) {
    $data['ean'] = '<div class="look"><a href="best-price">' . $product_info['ean'] . '</a></div>';
} else {
    $data['ean'] = false;
}
$data['products'][] = array(
'ean'         => $ean,
 

 

Значение выводиться, только не обёртывается в стиль http://prntscr.com/ahrgz7

 

Интересует правильность кода для product.php, то что выше - правильная ли конструкция или нет?

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


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

В админке 
 
В файле  admin\view\template\catalog\product_form.tpl
 
находим 
 

<td><?php echo $entry_ean; ?></td>
<td><input type="text" name="ean" value="<?php echo $ean; ?>" />
</td>

меняем на переключатель Да-Нет
 

<td><?php echo $entry_ean; ?></td>
<td><?php if ($ean) { ?>
<input type="radio" name="ean" value="1" checked="checked" />
<?php echo $text_yes; ?>
<input type="radio" name="ean" value="0" />
<?php echo $text_no; ?>
<?php } else { ?>
<input type="radio" name="ean" value="1" />
<?php echo $text_yes; ?>
<input type="radio" name="ean" value="0" checked="checked" />
<?php echo $text_no; ?>
<?php } ?></td>

В контроллер карточки товара
 
после 

$this->data['model'] = $product_info['model']; 

Добавляем

$this->data['ean'] = $product_info['ean'];

если нужно в категории то соответственно
 

'ean'   => $result['ean'],

 
После

'name'        => $result['name'],

Далее добавляем див новый внутрь дива image и оборачиваем в условие
 
В карточке товара
 
 

<?php if ($ean) { ?>
       наш новый див
<?php } ?>

 
В категории
 
 

 <?php if ($product['ean']) { ?>
        наш новый див
<?php } ?>

Остальное стили.Вешаем на наш див бэкграунд или стилями обыгрываем как угодно.

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


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

Спасибо Том за ответ, но я немного по другому хотел.

 

 

if ($product_info['ean']) {
    $data['ean'] = '<div class="look"><a href="best-price">' . $product_info['ean'] . '</a></div>';
} else {
    $data['ean'] = false;
}
 

 

смысл вот этого был в том, что я любой текст писал в ячейке, (сегодня это распродажа, завтра товар дня или тп) и к этой записи, я цепляю ссылку на категорию, в которой дублируются товары имеющие этот знак. http://prntscr.com/ahszyz - стикер жмётся как ссылка.

 

Вот такая конструкция с дивом

 

if ($product_info['ean']) {

    $data['ean'] = '<div class="look"><a href="best-price">' . $product_info['ean'] . '</a></div>';
} else {
    $data['ean'] = false;
}

 

срабатывает только с cateory.php ( http://prntscr.com/aht2xc ) а в product.php - срабатывает без дива и ссылки( http://prnt.sc/aht503  )    Вопрос - почему див и ссылка не цепляется.

 

попробовал так, страница рубится

 

<?php if ($ean) { ?

       наш новый див
<?php } ?>

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

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


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

 

<?php if ($ean) { ?>

       наш новый див

<?php } ?>

закрывать надо

 

...

 

вобще, че-т такого мудрите.. зачем false присваивать, зачем хтмл в переменную пихать.. Объясните простому народу, че хотите, авось подскажут

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

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


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

закрывать надо

 

...

 

вобще, че-т такого мудрите.. зачем false присваивать, зачем хтмл в переменную пихать.. Объясните простому народу, че хотите, авось подскажут

 

читайте первый пост.

 

Почему в категории таким способом 

if ($product_info['ean']) {

    $data['ean'] = '<div class="look"><a href="best-price">' . $product_info['ean'] . '</a></div>';

} else {

    $data['ean'] = false;

}

див читается и работает, а в карточке товара див не срабатывает, я хотел бы узнать ответ на этот вопрос. 

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

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


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

Раз. В товаре

http://joxi.ru/Vm69076ix1GwNr

Два. В product.php

http://joxi.ru/n2YZD5efj43LBA

Три. В product.tpl

http://joxi.ru/823zZp9S6MPNRm

Четыре. Смотрим

http://joxi.ru/12MZMjWf4nZp0A

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


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

Спасиб, скрин второй помог, вписал там div с ссылкой и заработало, вот только этот див теперь во всех товарах показывается независимо от того, заполнен ли ean или нет.

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


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

В product.tpl

<?php if(!empty($ean)){echo $ean;} ?>

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


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

Не, проверка не прокатит, у вас же там хтмл в переменной.

 

В контроллере

$data['ean'] = $product_info['ean']; 

А свой хтмл в  шаблоне вставляйте

<?php if($ean)
{echo '<b>' . $ean . '</b>';}
?>

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


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

if ($product_info['ean']) {

    $data['ean'] = '<div class="look"><a href="best-price">' . $product_info['ean'] . '</a></div>';

} else {

    $data['ean'] = false;

}

 

 

Говнокодить так нельзя! Все условия вывода HTML тегов прописывай в шаблоне!

<a href="best-price">' . $product_info['ean'] . '</a>

А это, что за? почему в теге а, ссылкой является обычный текст?

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

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


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

 

Не, проверка не прокатит, у вас же там хтмл в переменной.

 

В контроллере

$data['ean'] = $product_info['ean']; 

А свой хтмл в  шаблоне вставляйте

<?php if($ean)
{echo '<b>' . $ean . '</b>';}
?>

 

Либо

<?php echo $ean ? '<div class="look">Лучшая цена</div>' : false; ?>
Изменено пользователем Designer

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


Ссылка на сообщение
Поделиться на другие сайты
timedontwait    100
<?php if($ean)

{echo '<b>' . $ean . '</b>';}

?>

 

Только уже и в html оформляйте как html.

<?php if($ean){ ?>

<div class="look">Лучшая цена</div>

<?php } ?>

 

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


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

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

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

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

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

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

Войти

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

Войти


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

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