Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


rizan

Recommended Posts

Делал на 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
Надіслати
Поділитися на інших сайтах


  • 6 months later...

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

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

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

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Спасибо 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 } ?>
так, на мой взгляд, удобнее
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

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

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

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

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


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

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


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

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


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

Добавить вывод переменной в tpl файле, обновить страницу - бац! а она уже оказывается сообщает об ошибке, так-так, посмотрим что за ошибка, а - это же сообщение, что переменная необъявлена в 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

Надіслати
Поділитися на інших сайтах


  • 3 months later...

привет promavt !

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

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

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

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

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

удачи !

  • +1 2
Надіслати
Поділитися на інших сайтах


  • 4 months later...

привет promavt !

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

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

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

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

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

удачи !

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.