Новости Joomla

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

Taatshi

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

Реализация:

Код: 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

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

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

 ;D ;D ;D


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

Taatshi

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

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

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

dmitry_stas

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

Taatshi

  • Глобальный модератор
  • 5259
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Если пишу
Код: 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

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

Taatshi

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

Работает  ;D


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

Taatshi

  • Глобальный модератор
  • 5259
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
А вот ходят слухи... Что в 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

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

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

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

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

Taatshi

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

Код: 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

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

пропустила

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

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

samogon13

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

Taatshi

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

Bozhkov2

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

kit2m2

  • Живу я здесь
  • 3264
  • 267 / 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 | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

Bozhkov2

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

dmitry_stas

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

Bozhkov2

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

dmitry_stas

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

Bozhkov2

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

dmitry_stas

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

Bozhkov2

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

  • Живу я здесь
  • 3264
  • 267 / 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 | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

Bozhkov2

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

Bozhkov2

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

kit2m2

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

И вставить переменную куда нужно
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3264
  • 267 / 0
  • Беру сайты на полное сопровождение
Ну или CSS-стилями прописать?

ID то разные, можно и классы разными сделать
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

Bozhkov2

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

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

Определить расширение. pop_description для списка товаров

Автор Alex_gs

Ответов: 3
Просмотров: 578
Последний ответ 24.09.2023, 12:18:34
от kit2m2
[Решено] Увеличение выбора покупаемых товаров + -

Автор Aspik

Ответов: 216
Просмотров: 43227
Последний ответ 02.08.2023, 21:31:25
от kit2m2
[Решено] Вывод 3-х первых картинок в списке товаров категории

Автор rudoy24

Ответов: 29
Просмотров: 9752
Последний ответ 09.05.2023, 11:59:11
от Akeksandr
Шаблон фильтрации товаров

Автор Prevergenec

Ответов: 1
Просмотров: 1028
Последний ответ 23.01.2023, 18:13:43
от kit2m2
Разные шаблоны для отдельных категорий и товаров

Автор dmitry.pr

Ответов: 118
Просмотров: 33976
Последний ответ 15.12.2022, 08:57:44
от nevigen