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

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 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>

Проблема:
Оно меня с ума сводит. Я не понимаю каким образом из трех-четырех фоток выбираются изображения. То нормально, по порядку, а то в разнобой. Особенно если надумать поменять фотографии в карточке товара.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

robert

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

dmitry_stas

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

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

 ;D ;D ;D


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

Taatshi

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

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

Там я убрала их функцию вывода и заменила на что-то свое. Вот только не помню на что
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

dmitry_stas

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

Taatshi

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

получаю 1064-ю
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

dmitry_stas

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

Taatshi

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

Работает  ;D


Получается, порядок имеет значение... /*Ушла читать по БД MySQL*/
« Последнее редактирование: 25.04.2015, 08:11:51 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 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);

но что-то он у меня не запустился...
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

dmitry_stas

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

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

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

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

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 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  :(
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

Taatshi

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

пропустила

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

УРА)
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

samogon13

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

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 1
  • Верстаем и кодим. Обращайтесь ;)
/templates/вашшаблон/html/com_jshopping/list_products/product.php
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

Bozhkov2

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

kit2m2

  • Живу я здесь
  • 2773
  • 226 / 0
Можно так:
Код
<?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

  • Захожу иногда
  • 416
  • 12 / 0
*

dmitry_stas

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

Bozhkov2

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

dmitry_stas

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

Bozhkov2

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

dmitry_stas

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

Bozhkov2

  • Захожу иногда
  • 416
  • 12 / 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

  • Живу я здесь
  • 2773
  • 226 / 0
Просто сделайте так:
Код
<?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

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

Bozhkov2

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

kit2m2

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

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

kit2m2

  • Живу я здесь
  • 2773
  • 226 / 0
Ну или CSS-стилями прописать?

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

Bozhkov2

  • Захожу иногда
  • 416
  • 12 / 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

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

Кнопка "Добавить в список желаний" в общем списке товаров

Автор gavruwa

Ответов: 20
Просмотров: 15372
Последний ответ 06.05.2021, 10:22:03
от sergeytolkachyov
Удаление изображения категории внутри категории

Автор Concolor

Ответов: 34
Просмотров: 518
Последний ответ 10.04.2021, 18:11:02
от Concolor
Подсвечивание отсутствующих товаров в заказе в админке

Автор Kugata

Ответов: 7
Просмотров: 436
Последний ответ 02.12.2020, 13:28:36
от kit2m2
[Решено] Увеличение выбора покупаемых товаров + -

Автор Aspik

Ответов: 213
Просмотров: 38089
Последний ответ 24.11.2020, 17:25:53
от shop-user
JS4.18.4/Joomla3.9.19 меню Список товаров не видит product.php в шаблоне

Автор tigra-uki

Ответов: 11
Просмотров: 534
Последний ответ 13.06.2020, 19:44:10
от draff