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

[Доработка] Вывод краткой информации о товаре

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

Делал на opencart_1.4.0_rus_0.4

Идем сюда

catalog->view->theme->ваша тема->template->product->category.tpl
находим строку

<table class="list">

их там две.нам нужна вторая. Заменяем полностью таблицу (до строки

<div class="pagination"><?php echo $pagination; ?></div>

) на это

 
<table class="list2"><!--Вывод товара-->
<thead>
	<tr>
	<th>Изображение</th>
	<th>Название</th>
	<th>Цена</th>
	</tr>
</thead>
     <?php for ($i = 0; $i < sizeof($products); $i = $i + 1) { ?>
  <?php if($i%2==0) {$cls='one';} else {$cls='two';} ?>
  <tr> <?php for ($j = $i; $j < ($i + 1); $j++) { ?>
	<td id="name" colspan="3">
		<?php if (isset($products[$j])) { ?>
		<a href="<?php echo $products[$j]['href']; ?>"><span style="font-size: 12px; font-weight: bold;"><?php echo $products[$j]['name']; ?></span></a><br />

	</td>		
  </tr>
     <tr class="<?php echo $cls ?>">
       <td width="15%"><a href="<?php echo $products[$j]['href']; ?>"><img src="<?php echo $products[$j]['thumb']; ?>" title="<?php echo $products[$j]['name']; ?>" alt="<?php echo $products[$j]['name']; ?>" /></a><br /></td>
       <td valign="middle">             
         <div>            
           <div id="descript">
           <?php            
           $string = (string)$products[$j]['description'];
           $string = substr($string,0,300);
           $string = $string." ...";
           echo $string; ?>
           </div>

         </div>
       </td>
       <td width="15%"><br />
         <?php if ($display_price) { ?>
         <?php if (!$products[$j]['special']) { ?>
         <span style="color: #900; font-weight: bold;"><?php echo $products[$j]['price']; ?></span><br />
         <?php } else { ?>
         <span style="color: #900; font-weight: bold; text-decoration: line-through;"><?php echo $products[$j]['price']; ?></span> <span style="color: #F00;"><?php echo $products[$j]['special']; ?></span>
         <?php } ?>
         <?php } ?>
         <?php if ($products[$j]['rating']) { ?>
         <img src="catalog/view/theme/ВАША_ТЕМА/image/stars_<?php echo $products[$j]['rating'] . '.png'; ?>" alt="<?php echo $products[$j]['stars']; ?>" />
         <?php } ?>			
			<a href="<?php echo $products[$j]['href'];?>" class="button"><span>Подробнее</span></a>
		<?php } ?>
	</td>
       <?php } ?>

     </tr>
     <?php } ?>
  <br class="clear"/>
   </table>

Обратите внимание на строку

<img src="catalog/view/theme/ВАША_ТЕМА/image/stars_<?php echo $products[$j]['rating'] . '.png'; ?>" alt="<?php echo $products[$j]['stars']; ?>" />

Замените "ВАША_ТЕМА" на путь к вашей теме.

затем в таблице стилей

catalog->view->theme->ваша тема->stylesheet->stylesheet.css
дописываем следующее

table.list2 {width:100%;}.list,list2 {margin-bottom : 10px;}.list td, .list2 td, .list2 th{text-align : center;vertical-align : top;padding:3px 5px 2px 5px;border: 1px solid #DDDDDD;}.list td a,.list2 td a {  text-decoration: underline;}.list td a:hover {  font-weight: bold;}.list2 th { text-align:left; background: #EAEAEA ; text-align:center; padding:5px 0;}.list2 td#name{  border: 1px solid #DDDDDD;  padding:5px 0;  background:#FFFFCC;}.list2 a.button {  margin-top: 10px;}.one{  border: 1px solid #DDDDDD;}.two{  background: #EAEAEA;  border: 1px solid #DDDDDD;}#descript {      text-align:left;    margin-top:5px;    padding-left:3px;}  #descript p {    margin-top:5px;  line-height: normal;}
потом топаем сюды:
catalog->controller->product->category.php
находим

$this->data['products'][] = array(
и вставляем там
'description' => html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'),
незабываем сохранять в utf8

вроде все...вот что вышло:

post-344-1293741785,5434_thumb.jpg

  • +1 2

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


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

Поправил тему. Доработал. Теперь в кратком описании выводится 300 символов. Если необходимо это число изменить, отредактируйте строку

$string = substr($string,0,300);

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

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


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

Спасибо rizan, именно это я и искал. Только я немного изменил вот эту часть кода

<div id="descript">
            <?php            
            $string = (string)$products[$j]['description'];
            $string = substr($string,0,300);
            $string = $string." ...";
            echo $string; ?>
            </div>
на

<div id="descript">
            <?php            
            $string = (string)$products[$j]['description'];
            $string = substr($string,0,200);
            $string = $string." <br/><a href=".$products[$j]['href']." class='button'><span>Подробнее</span></a>";
            echo $string; ?>
            </div>
переместив этот код отсюда

<?php } ?>                    
                                <a href="<?php echo $products[$j]['href'];?>" class="button"><span>Подробнее</span></a>

                        <?php } ?>
так, на мой взгляд, удобнее

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


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

Тема полезная, спасибо rizan! может подскажешь как сделать чтобы краткое описание выводилось под картинкой товара, на подобие этого.

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


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

Тема полезная, спасибо rizan! может подскажешь как сделать чтобы краткое описание выводилось под картинкой товара, на подобие этого.

Я например просто вбил в поле model небольшое описание, 60-65 символов. По моему решение толковое, поскольку модель товара и так есть в названии товара, и дублировать ее везде смысла нет.

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


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

Я например просто вбил в поле model небольшое описание, 60-65 символов. По моему решение толковое, поскольку модель товара и так есть в названии товара, и дублировать ее везде смысла нет.

это конечно хорошо, только насколько я понимаю в таком случае использовать модуль экспорта цен не получится т.к. модули экспорта - импорта используют поле модель для поиска товара

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


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

это конечно хорошо, только насколько я понимаю в таком случае использовать модуль экспорта цен не получится

Используйте не модель, а например "ключевые слова", нужно только прикуртить их вывод в нужных страницах.

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


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

Используйте не модель, а например "ключевые слова", нужно только прикуртить их вывод в нужных страницах.

Я непротив... только мой вопрос заключается в том, как прикрутить краткое описание к товару?

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


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

Я непротив... только мой вопрос заключается в том, как прикрутить краткое описание к товару?

Добавить вывод переменной в tpl файле, обновить страницу - бац! а она уже оказывается сообщает об ошибке, так-так, посмотрим что за ошибка, а - это же сообщение, что переменная необъявлена в php файле. Лезем туда и добавляем.

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

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


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

Ок спасибо за подсказку.. попробую... только надо вначале php поучить немного... ))

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


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

Ребята подскажите плиз... занялся я добавлением краткого описания... в category.tpl дописал <?php echo $products[$j]['meta_keywords']; ?> (чтобы краткое описание выводилось из meta_keywords) между выводом 'name' и 'model'.

Результат нормальный - появилось строчка "Notice: Undefined index: meta_keywords in /home/westmarketby/www/westmarket.by/catalog/view/theme/green/template/product/category.tpl on line 62" - именно там где нужно краткое описание А в category.php попытался добавить 'meta_keywords' => $result['meta_keywords'], только эффект отрицательный, страницы больше не открываются ошибка выскакивает.

Кто разберается помогите плиз.. что нужно дописать в category.php чтобы переменная нормально высвечивалась.

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


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

Не трогайте

meta_keywords
Это "служебная" переменная, которая выводится скриптом там, где и положено (в head).

Лучше почитайте вот эту тему: Дополнительные поля продукта.

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


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

Общими усилиями успех достигнут.. ) если кому надо поделюсь )

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


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

Столкнулся с некоторым глюком в этом методе вывода категорий. При создании краткого описания эта функция

<div>            
            <div id="descript">
            <?php            
            $string = (string)$products[$j]['description'];
            $string = substr($string,0,202);
            $string = $string."... <br /><a href=".$products[$j]['href']." class='button'><span>Подробнее</span></a>";
            echo $string; ?>
            </div>
            
          </div>
обрезает строку в заданном месте, в моём случае после 202 знака. Вот тут есть ошибка. Редактор админки вставляет текст описания между тегами
<p></p>
Так вот, закрывающий тег после этой обрезки пропадает, а у меня даже от тега оставило только
</
Как справится с этой проблемой?

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


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

Извиняюсь, нашел сам решение. Добавил маленькую функцию. Вот как теперь в моём варианте выглядит код

<div>            
            <div id="descript">
            <?php            
            $string = (string)$products[$j]['description'];
            $string = strip_tags($string); //удаляем все html теги
            $string = substr($string,0,200);
            $string = $string."... <br /><a href=".$products[$j]['href']." class='button'><span>Подробнее</span></a>";
            echo "<p>".$string."</p>"; //вставляем теги строки обратно ?>
            </div>
            
          </div>
Если в тексте есть теги, которые не нужно удалять, то функция пишется так

$string = strip_tags($string,'<strong>'); //удаляем все html теги, кроме тега <strong>
Конечно этот вариант имеет недостаки, но пока мне помог.

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


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

Тема полезная, спасибо rizan! может подскажешь как сделать чтобы краткое описание выводилось под картинкой товара, на подобие этого.

м..думаю просто следует отредактировать разметку страницы..между тегами <table> в ячейках разместить инфу,как хочется..на досуге реализовать попробую.
  • +1 1

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


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

Вылезла проблемка у меня, а именно, в кратком описании вылазит последним символ квадратик или знак вопроса, то-есть символ, если-бы кодировка не распознавалась (смотрите вложения)

Чего только не колдовал - в чем может быть проблема?

(Изображения из разных браузеров)

post-3978-0-38746700-1298549327_thumb.jpg

post-3978-0-14045100-1298549334_thumb.jpg

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


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

привет promavt !

проблема в том что в кодировке UTF8 символы кириллицы кодируются двумя байтами в отличии от ASCII ,где символ представлен одним байтом.

Функции же substr работает не с символами строки, а с байтами , поэтому в конце строки у тебя выходит такое чудо.

Лечится просто-вместо

substr($string,0,300)
mb_substr()
и все будет в поряде :)

P.S. звиняюсь за столь поздний ответ .

удачи !

  • +1 2

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


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

привет promavt !

проблема в том что в кодировке UTF8 символы кириллицы кодируются двумя байтами в отличии от ASCII ,где символ представлен одним байтом.

Функции же substr работает не с символами строки, а с байтами , поэтому в конце строки у тебя выходит такое чудо.

Лечится просто-вместо

substr($string,0,300)
mb_substr()
и все будет в поряде :)

P.S. звиняюсь за столь поздний ответ .

удачи !

А где это лечить в 1.5.1.3 не знаете?

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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