Jump to content


Photo
- - - - -

id не меняется в системного на свой в teaser


Best Answer joejoker , 03 August 2013 - 05:02

Для старого элемента jbprice, подойдет вот такой код:

  1. $arr = $item->getElements();
  2. foreach($arr as $value){
  3.     if($value->config->type == 'jbprice'){
  4.         $sku = $value->getElementData()->sku;
  5.     }
  6. }
Go to the full post


  • This topic is locked This topic is locked
12 replies to this topic

#1 Shpagin

Shpagin
  • JBZoo User (rus)
  • User rate: 0
  • posts: 30
  • topics: 10

Posted 30 July 2013 - 07:38

Добрый день.
Сделал в teaser шаблоны вывода элементов каталога в виде таблицы по этому хорошему уроку:
http://forum.jbzoo.c...taloga-v-jbzoo/

 

Получилось так:

http://mnp-realty.ru...rkovskoe-shosse

 

Заметил хорошую фишку. Если у элемента JBPrice включить вывод ID (артикула) и не ввести само значение, то в шаблон full вставляется системное двухзначное значение и наоборот, указал свой id - он высветился.

 

Но почему-то в teaser продолжает выводиться системное значение как ни крути. Можно это побороть? Правильно ли я понимаю, что тогда надо из этого поля в шаблоне удалит вывод системного id и вывести второй элемент цены, но в нем указать только вывод артикула с отключенной ценой?

 

Проблема в том, что хочется id(артикул сделать минимум из трех символов, чтобы поисковый модуль позволял искать по этому полю, а в поиске должно быть не менее 3 символов.

Код вывода значений элементов тизера следующее:

  1. <tr class="table-row item_<?php echo $item->id;?>">
  2. <td class="hideANDseek" width="30"><?php echo $item->id; ?></td>
  3. <td><?php echo $this->renderPosition('title'); ?></td>
  4. <td><?php echo $this->renderPosition('image'); ?></td>
  5. <td class="hideANDseek" ><?php echo $this->renderPosition('road'); ?></td>
  6. <td class="hideANDseek" ><?php echo $this->renderPosition('location'); ?></td>
  7. <td class="hideANDseek" width="90"><?php echo $this->renderPosition('mkad'); ?></td>
  8. <td class="hideANDseek" ><?php echo $this->renderPosition('house-size'); ?></td>
  9. <td class="hideANDseek" width="90"><?php echo $this->renderPosition('land-size'); ?></td>
  10. <td width="120"><?php echo $this->renderPosition('price'); ?></td>
  11. </tr>

Edited by Shpagin, 30 July 2013 - 07:40.

  • 0

#2 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 30 July 2013 - 12:15

Вот это вывод того самого системного id.

  1. <?php echo $item->id; ?>

Вы хотите, чтобы вместо него выводился аритикул, указанный в элементе цены?


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#3 Shpagin

Shpagin
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 30
  • topics: 10

Posted 30 July 2013 - 19:36

Sliapy, on 30 Jul 2013 - 11:15, said:

Вы хотите, чтобы вместо него выводился аритикул, указанный в элементе цены?

 

Да


  • 0

#4 joejoker

joejoker
  • JBZoo User (rus)
  • User rate: 6.8
  • posts: 305
  • topics: 5

Posted 30 July 2013 - 21:16

К сожалению, внутри шаблона teaser, артикул можно получить при помощи вот такой, не совсем удобной и компактной конструкции:

  1. $arr = $item->getElements();
  2. foreach($arr as $value){
  3.     if($value->config->type == 'jbpriceadvance'){
  4.         $basic = $value->getElementData()->basic;
  5.         $sku   = $basic['sku'];
  6.     }
  7. }

В итоге, в переменной $sku будет искомый артикул продукта.


  • 0
В мире все совсем не сложно, если самому не усложнять.
Разработка индивидуальных решений для ZOO /JBZoo /Joomla

#5 Shpagin

Shpagin
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 30
  • topics: 10

Posted 02 August 2013 - 15:21

Простите, не знаю азов php

 

id у меня выводится в ячейку таблицы так:

<td class="hideANDseek" width="30"><?php echo $item->id; ?></td>

 

как должна выглядеть новая ячейка с вашим кодом? :


  • 0

#6 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 02 August 2013 - 15:47

В самый верх файла, после

  1. defined('_JEXEC') or die('Restricted access');

добавьте приведенный код

  1. $arr = $item->getElements();
  2. foreach($arr as $value){
  3.     if($value->config->type == 'jbpriceadvance'){
  4.         $basic = $value->getElementData()->basic;
  5.         $sku   = $basic['sku'];
  6.     }
  7. }

А в самой таблице уже делайте вместо приведенного Вами куска кода

  1. <td class="hideANDseek" width="30"><?php echo $sku; ?></td>

Edited by Sliapy, 02 August 2013 - 15:47.

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#7 Shpagin

Shpagin
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 30
  • topics: 10

Posted 02 August 2013 - 15:51

Sliapy, on 02 Aug 2013 - 14:47, said:

 

В самый верх файла, после

  1. defined('_JEXEC') or die('Restricted access');

добавьте приведенный код

  1. $arr = $item->getElements();
  2. foreach($arr as $value){
  3.     if($value->config->type == 'jbpriceadvance'){
  4.         $basic = $value->getElementData()->basic;
  5.         $sku   = $basic['sku'];
  6.     }
  7. }

А в самой таблице уже делайте вместо приведенного Вами куска кода

  1. <td class="hideANDseek" width="30"><?php echo $sku; ?></td>

 

Спасибо за ответ! Попробовал - почему-то в переменная $sku передает пустоту.


Edited by Shpagin, 02 August 2013 - 15:51.

  • 0

#8 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 02 August 2013 - 15:52

Сбросьте все содержимое файла (не забывайте про кнопку "Код" форума).


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#9 Shpagin

Shpagin
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 30
  • topics: 10

Posted 02 August 2013 - 15:53

  1. <?php
  2. defined('_JEXEC') or die('Restricted access');
  3. $arr = $item->getElements();
  4. foreach($arr as $value){
  5. if($value->config->type == 'jbpriceadvance'){
  6. $basic = $value->getElementData()->basic;
  7. $sku = $basic['sku'];
  8. }
  9. }
  10. ?>
  11.  
  12. <tr class="table-row item_<?php echo $item->id;?>">
  13. <td class="hideANDseek" width="30"><?php echo $sku; ?></td>
  14. <td><?php echo $this->renderPosition('title'); ?></td>
  15. <td ><?php echo $this->renderPosition('image'); ?></td>
  16. <td class="hideANDseek" width="90"><?php echo $this->renderPosition('gorod'); ?></td>
  17. <td class="hideANDseek"><?php echo $this->renderPosition('metro'); ?></td>
  18. <td class="hideANDseek"><?php echo $this->renderPosition('adres'); ?></td>
  19. <td class="hideANDseek" width="110"><?php echo $this->renderPosition('ploshad'); ?></td>
  20. <td class="hideANDseek" width="80"><?php echo $this->renderPosition('etazh'); ?></td>
  21. <td width="110"><?php echo $this->renderPosition('price'); ?></td>
  22. </tr>
  23.  
  24.  
  25.  

вот тут это выводит:

http://mnp-realty.ru/apartments


  • 0

#10 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 02 August 2013 - 15:59

Это поле у Вас заполнено точно? Приведенный код берет артикул отсюда.

 

ssmf38418c7_200x0.png

 

Я проверил все описанное лично на демо-сайте и у меня работает.


Edited by Sliapy, 02 August 2013 - 16:01.

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]




Click to return to top of page in style!