0 Пользователей и 1 Гость просматривают эту тему.
  • 37 Ответов
  • 1822 Просмотров
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
Задача:
При наведении на фото менять его на второе по порядку в карточке товара.

Реализация:

Код: php
<?php
$jshopConfig = JSFactory::getConfig();
$db = JFactory::getDBO();
$Query = "SELECT image_name FROM #__jshopping_products_images WHERE product_id = {$product->product_id} LIMIT 2";
$db->setQuery($Query);
$prodimg = $db->loadObjectList();
if (count($prodimg)){
foreach($prodimg as $primg) {
print "<a title='{$product->name}' class='screenshot lightbox' href='{$product->product_link}'>";
print "<img src='{$jshopConfig->image_product_live_path}/thumb_{$primg->image_name}'/></a>";

}
}
else {
print "<a href='{$product->product_link}'><img src='{$jshopConfig->image_product_live_path}/noimage.gif'/></a>";
}
?>
Код: javascript
<script>
jQuery(document).ready(function(){
   jQuery("div.three_img").each(function(index){jQuery(this).find("a.screenshot img:first").css("display","block");});
   jQuery("div.three_img").hover(
   function()
   {
      jQuery(this).find("a.screenshot img:last").css("display","block");
      jQuery(this).find("a.screenshot img:first").css("display","none");
   },
   function()
   {
   jQuery(this).find("a.screenshot img:first").css("display","block");
      jQuery(this).find("a.screenshot img:last").css("display","none");
   });
});
</script>

Проблема:
Оно меня с ума сводит. Я не понимаю каким образом из трех-четырех фоток выбираются изображения. То нормально, по порядку, а то в разнобой. Особенно если надумать поменять фотографии в карточке товара.
*

robert

  • Живу я здесь
  • 4941
  • 455 / 20
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
Задача:
При наведении на фото менять его на второе по порядку в карточке товара.

Проблема:
Оно меня с ума сводит.

 ;D ;D ;D


так а проблема в javascript? или все таки в MySQL?
« Последнее редактирование: 24.04.2015, 23:13:47 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
Проблема не в скрипте, проблема в выборке. В самом списке два рисунка получается, и отображаются они как и положено - сначала первый в очереди, при наведении - второй. Но вот в саму выборку попадают они по совершенно непонятному принципу.

Кстати, аналогичная проблема была и в одном модуле от смартаддонз для показа товаров - там рисунок брался не первый по порядку, а почему-то последний. Но не всегда.

Там я убрала их функцию вывода и заменила на что-то свое. Вот только не помню на что
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
т.е. порядок выборки меняется каждый раз? а если добавить в запрос
Код: sql
ORDER BY ordering ASC
?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
Если пишу
Код: sql
$Query = "SELECT image_name FROM #__jshopping_products_images WHERE product_id = {$product->product_id} LIMIT 2 ORDER BY ordering ASC";

получаю 1064-ю
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
Код: sql
ORDER BY ordering ASC LIMIT 2
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
Святой! Святой! /*падает на колени и прикидывает, какого бестолкового новичка можно по-быстрому принести в жертву*/

Работает  ;D


Получается, порядок имеет значение... /*Ушла читать по БД MySQL*/
« Последнее редактирование: 25.04.2015, 08:11:51 от Taatshi »
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
А вот ходят слухи... Что в Joomla, начиная с 2.5 вроде, существует механизм, с помощью которого можно составлять запросы в произвольном порядке. Примерно так
Код: php
$db = JFactory::getDBO();		
$Query = $db->getQuery(true);
$Query->select('image_name');
$Query->from('#__jshopping_products_images');
$Query->where('product_id = '. $pid);
$Query->order('ASC');
$Query->limit('2');
$db->setQuery($Query);

но что-то он у меня не запустился...
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
Святой! Святой! /*падает на колени и прикидывает, какого бестолкового новичка можно по-быстрому принести в жертву*/

не надо  ;D и так обижаются :)

но что-то он у меня не запустился...

$Query->order('ordering ASC');
$Query->limit('2');
$db->setQuery($Query, $offset = 0, $limit = 2);
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
Дык... некому ж будет обижаться  ;)

Код: php
$jshopConfig = JSFactory::getConfig();
$db = JFactory::getDBO();

$pid = $product->product_id;
$Query = $db->getQuery(true);
$Query->select('image_name');
$Query->from('#__jshopping_products_images');
$Query->where('product_id = '.$pid);
$Query->order('ASC');
$db->setQuery($Query, $offset = 0, $limit = 2);
$prodimg = $db->loadObjectList();

1064  :(
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
Все, все, понятно...

пропустила

Код: php
$Query->order('ordering ASC');

УРА)
*

samogon13

  • Новичок
  • 20
  • 0 / 0
 :Dв какой файлик добавлять код
« Последнее редактирование: 24.06.2015, 00:53:03 от samogon13 »
*

Taatshi

  • Глобальный модератор
  • 5177
  • 475 / 1
  • Верстаем и кодим. Обращайтесь ;)
/templates/вашшаблон/html/com_jshopping/list_products/product.php
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
Здравствуйте. А можно как-то пронумеровать фото (определить второе)? Мне для второй фотки нужно класс прицепить, чтоб в CSS не писать стили для :last-child
*

kit2m2

  • Живу я здесь
  • 2229
  • 187 / 1
Можно так:
Код
<?php
$jshopConfig = JSFactory::getConfig();
$db = JFactory::getDBO();
$Query = "SELECT image_name FROM #__jshopping_products_images WHERE product_id = {$product->product_id} LIMIT 2";
$db->setQuery($Query);
$prodimg = $db->loadObjectList();
if (count($prodimg)){
$i = 1;
foreach($prodimg as $primg) {
print "<a title='".$product->name."' class='screenshot-".$i++." lightbox' href='".$product->product_link."'>";
print "<img src='".$jshopConfig->image_product_live_path."/thumb_".$primg->image_name."'/></a>";
}
}
else {
print "<a href='".$product->product_link."'><img src='".$jshopConfig->image_product_live_path."/noimage.gif'/></a>";
}
?>
Бесплатные расширения для JoomShopping | Расширения на заказ | Шаблоны страниц JoomShopping | Сайты и магазины под ключ | Исправлю проблемы с навигацией и дублями | Переделаю ваш старый сайт на новом движке
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
а зачем еще один запрос? они ж и так уже есть в выборке. я честно говоря не понял что нужно получить
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
я честно говоря не понял что нужно получить
Нужно к второму фото добавить класс.Для этого нужно как-то его обозначить для if. Я предыдущий совет использовал так
Код
<?php if(i++ == 2) echo "class" ?> 
У вас есть более рациональное решение?
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
Код
foreach($images as $key=>$image) {
    if ($key == 1) { // 1 - это второе изображение, потому что отсчет идет с 0
    }
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
foreach($images as $key=>$image) {
Я пробовал foreach($prodimg as $k=> $primg) до того как задать вопрос. Не работает так.
*

dmitry_stas

  • Легенда
  • 13122
  • 1230 / 8
не вижу ни одной причины чтобы это не работало )) ну разве что вы делаете цикл в цикле и у вас где то $k уже выше используется, и все ломает. но честно говоря не особо есть разница foreach или for, я написал именно про выборку изображений, повторный запрос которого нужно избежать (ну если он конечно повторный, а то может это просто для примера). а какой там именно цикл будет - не очень важно. мне foreach просто более лаконичным кажется, но можно и for легко
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
не вижу ни одной причины чтобы это не работало )) ну разве что вы делаете цикл в цикле и у вас где то $k уже выше используется, и все ломает.
Нет этого. Для изображений один foreach.
но честно говоря не особо есть разница foreach или for
А пи чем тут for? О нем вообще нигде речь не шла, чего вы его упомянули?
повторный запрос которого нужно избежать[/quote]
Вот мой код, который решил мою задачу
Код
<?php if (count($prodimg)) {?>
<?php $i = 1; foreach($prodimg as $primg) {?>
<div class="uk-background-cover uk-position-cover"<?php if( $i++ == 2) print ' hidden id="second-img_'.$product->product_id.'"' ?> data-src="<?php print $jshopConfig->image_product_live_path."/".$size.$primg->image_name ?>" data-uk-img></div>
<?php }?>
<?php } else {?>
<div class="uk-background-cover uk-position-cover uk-transition-opaque uk-transition-scale-up" data-src="/components/com_jshopping/templates/balou_uikit3/images/noimage.gif" data-uk-img></div>
<?php }?>
И я только что обнаружил другую проблему, изображения выводятся в обратном порядке (сначала второе, потом первое).
*

kit2m2

  • Живу я здесь
  • 2229
  • 187 / 1
Просто сделайте так:
Код
<?php
$jshopConfig = JSFactory::getConfig();
$db = JFactory::getDBO();
$Query = "SELECT image_name FROM #__jshopping_products_images WHERE product_id = {$product->product_id} LIMIT 2";
$db->setQuery($Query);
$prodimg = $db->loadObjectList();
if (count($prodimg)){
$i = 1;
foreach($prodimg as $primg) {
print "<a title='".$product->name."' class='screenshot lightbox' href='".$product->product_link."'>";
print "<img id='img-".$i++."_".$product->product_id."' src='".$jshopConfig->image_product_live_path."/thumb_".$primg->image_name."'/></a>";
}
}
else {
print "<a href='".$product->product_link."'><img src='".$jshopConfig->image_product_live_path."/noimage.gif'/></a>";
}
?>

Выведет по порядку
Бесплатные расширения для JoomShopping | Расширения на заказ | Шаблоны страниц JoomShopping | Сайты и магазины под ключ | Исправлю проблемы с навигацией и дублями | Переделаю ваш старый сайт на новом движке
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
Просто сделайте так:
Код
<img id='img-".$i++."_".$product->product_id."'
Я не могу так сделать. Мне нужно вписать во вторую картинку "hidden"
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
А с порядком вывода непонятки. Тут выше уже такое описывали. Я перезалил в товар фотки, — "прошло".
P.S. Не, не прошло. Первая стала первой, а место второй - третья  *ОХ-Х-Х*
« Последнее редактирование: 12.01.2020, 21:01:42 от Bozhkov2 »
*

kit2m2

  • Живу я здесь
  • 2229
  • 187 / 1
Я не могу так сделать. Мне нужно вписать во вторую картинку "hidden"
А так нельзя сделать?
Код
$img_hidden = "";
if($i++ == 2){
   $img_hidden = "hidden";
}

И вставить переменную куда нужно
Бесплатные расширения для JoomShopping | Расширения на заказ | Шаблоны страниц JoomShopping | Сайты и магазины под ключ | Исправлю проблемы с навигацией и дублями | Переделаю ваш старый сайт на новом движке
*

kit2m2

  • Живу я здесь
  • 2229
  • 187 / 1
Ну или CSS-стилями прописать?

ID то разные, можно и классы разными сделать
Бесплатные расширения для JoomShopping | Расширения на заказ | Шаблоны страниц JoomShopping | Сайты и магазины под ключ | Исправлю проблемы с навигацией и дублями | Переделаю ваш старый сайт на новом движке
*

Bozhkov2

  • Захожу иногда
  • 391
  • 11 / 0
А так нельзя сделать?
Код
$img_hidden = "";
if($i++ == 2){
   $img_hidden = "hidden";
}

И вставить переменную куда нужно
Спасибо, что пытаетесь помочь. Суть я понял. Но вписать это без ошибок не могу  :(.
Что не так?
Код
<?php $i = 1; $img_hidden = ""; if($i++ == 2){ $img_hidden = "hidden";
} foreach($prodimg as $primg) {?>
Для первой картинки i == 2, для второй  i == 3.
Ну или CSS-стилями прописать?
Нет, мне нужно сделать на uikit3 при помощи его возможностей без доп CSS.
*

kit2m2

  • Живу я здесь
  • 2229
  • 187 / 1
Это условие нужно в цикле прописать, а не до него
Код
if($i++ == 2){
   $img_hidden = "hidden";
}
Бесплатные расширения для JoomShopping | Расширения на заказ | Шаблоны страниц JoomShopping | Сайты и магазины под ключ | Исправлю проблемы с навигацией и дублями | Переделаю ваш старый сайт на новом движке
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Подсвечивание отсутствующих товаров в заказе в админке

Автор Kugata

Ответов: 1
Просмотров: 88
Последний ответ 24.06.2020, 20:02:45
от nevigen
JS4.18.4/Joomla3.9.19 меню Список товаров не видит product.php в шаблоне

Автор tigra-uki

Ответов: 11
Просмотров: 229
Последний ответ 13.06.2020, 19:44:10
от draff
Два разных каталога товаров на одном сайте

Автор SHURIK

Ответов: 1
Просмотров: 112
Последний ответ 31.03.2020, 16:47:55
от nevigen
[Решено] Вывод 3-х первых картинок в списке товаров категории

Автор rudoy24

Ответов: 28
Просмотров: 6567
Последний ответ 04.01.2020, 23:35:36
от Дмитрий_76
Вертикальное меню товаров для мобильной версии сворачивающийся в трей

Автор bakyt

Ответов: 17
Просмотров: 278
Последний ответ 20.12.2019, 15:56:31
от nevigen