Новости Joomla

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

srg

  • Захожу иногда
  • 209
  • 41 / 1
Добрый день, вопрос к victorantoniak, а может кто еще знает....
Сделал просмотр картинки атрибута в lightbox`е как и картинки товара... т.е. добавил к формированию радио переключателя после <img>
<a class=\"lightbox\" href='".$jshopConfig->image_attributes_live_path."/".$v2->image."'>(тут картинка лупы 16х16)</a> на pic1-2.jpg видно что работает.... до момента когда в 1ом атрибуте не выберем другой материал, после пересчета цены lightbox в первом атрибуте работает, а во втором нет, т.е. во втором атрибуте открывается новое окно с картинкой материала атрибута... посмотрел обработчик пересчета цены function reloadAttribSelectAndPrice(id_select) в functions.js, там пришлось за комментировать строки
Код
 /*       for(var i=0;i<attr_list.length;i++){
                var id = attr_list[i];
                if (reload_atribut){
                    jQuery("#block_attr_sel_"+id).html(json['id_'+id]);
                }
                if (id == id_select) reload_atribut = 1;
            }       */


На пересчет цены вроде никак не сказалось, lightbox стал работать.... Скажите, пожалуйста, что делает эта конструкция-цикл, и как может повлиять её исключение на работу обновления цены и атрибутов?


[вложение удалено Администратором]
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Re: ява функция обновления атрибутов
« Ответ #1 : 14.11.2011, 11:23:23 »
Ну что, кто-нибудь может расшифровать назначение этого цикла, в скрипте пересчета цены?
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Re: ява функция обновления атрибутов
« Ответ #2 : 14.11.2011, 19:18:26 »
Потратил кучу времени, из-за поверхностных знаний AJAX, но если кому пригодится отвечу сам...
этот цикл нужен для перерисовки зависимых атрибутов, что бы показать и удалять элементы атрибута для которых зависимости не определены.... поскольку там используется jQuery("#block_attr_sel_"+id).html(json['id_'+id]); ,а эта конструкция не парсит/ не понимает <script>....</script>, то именно по-этому после выбора любого элемента атрибута, скрипт jQuery a.lightbox и переставал работать. Что бы все работало выносим скрип лайт бокса в file.js
Код
jQuery(function() {
jQuery("a.lightbox_attr").lightBox({
                        imageLoading: "/images/loading.gif",
                        imageBtnClose:"/images/close.gif",
                        imageBtnPrev: "/images/prev.gif",
                        imageBtnNext: "/images/next.gif"
                    });
});


а в обработчик пересчета цены function reloadAttribSelectAndPrice(id_select) в functions.js меняем
Код
 jQuery("#block_attr_sel_"+id).html(json['id_'+id]);
на
Код
	val = "<script type=\"text/javascript\" src=\"js/scriptsmot.js\"></script>"+json['id_'+id];
           jQuery("#block_attr_sel_"+id).html(val);
после Lightbox работает корректно.... возможно это слишком в лоб сделано, если есть другие правила передавать скрипты с AJAX.html пишите...
а так все, вопрос закрыт

[вложение удалено Администратором]
*

BaevAS

  • Захожу иногда
  • 116
  • 1 / 0
  • Время проведенное на рыбалке, в счет жизни не идет
Re: ява функция обновления атрибутов
« Ответ #3 : 15.12.2011, 21:44:03 »
Спасибо за решение +1 в репутацию

Единственная просьба, напишите пожалуйста в какие файлы требуется внести изменения, чтоб все заработало
« Последнее редактирование: 15.12.2011, 22:01:18 от BaevAS »
*

AlexSF

  • Давно я тут
  • 678
  • 68 / 0
  • В споре истина рождается
Re: ява функция обновления атрибутов
« Ответ #4 : 15.12.2011, 23:38:45 »
Надеюсь разработчики возьмут на заметку и может включат, когда либо, в JoomShoppig вместе с кнопкой для подключения/отключения скрипта для группы атрибутов.
И с меня тоже +
Задаёте вопрос - не забудьте приложить ссылку на проблемный сайт
При проблеме с CSS рекомендую использовать Mozilla Firefox и её плагин FireBug
И по максимуму изучите, или поставьте в закладки - http://htmlbook.ru/css
Notepad++ поможет почти в любом деле
*

BaevAS

  • Захожу иногда
  • 116
  • 1 / 0
  • Время проведенное на рыбалке, в счет жизни не идет
Re: ява функция обновления атрибутов
« Ответ #5 : 16.12.2011, 10:49:23 »
Пожалуйста распишите как реализовать по шагово, бьюсь второй день ничего не получается
*

srg

  • Захожу иногда
  • 209
  • 41 / 1
Re: ява функция обновления атрибутов
« Ответ #6 : 16.12.2011, 12:58:16 »
Пожалуйста распишите как реализовать по шагово, бьюсь второй день ничего не получается

Вначале создадим файл скрипта, например MYscript.js (по другому AJAX JSON скрипты не парсят и не передают), туда пихаем скрипт галереи
Код
jQuery(function() {
jQuery("a.lightbox_attr").lightBox({
                        imageLoading: "/images/loading.gif",
                        imageBtnClose:"/images/close.gif",
                        imageBtnPrev: "/images/prev.gif",
                        imageBtnNext: "/images/next.gif"
                    });
jQuery("a.lightbox_attr").click(function(){
var rel = $(this).attr("rel");
x=document.getElementById(rel).click();
});   
});

lightbox_attr класс для сылки атрибута который будем увеличивать.
второй шаг, перепишем скрипт аджакс обновления атрибутов, файл functions.js в каталоге /js/ , находим function reloadAttribSelectAndPrice(id_select)  и там меняем
это
Код
 prevAjaxHandler = jQuery.getJSON(
        urlupdateprice,
        data,
        function(json){
            var reload_atribut = 0;
            for(var i=0;i<attr_list.length;i++){
                var id = attr_list[i];
                if (reload_atribut){
                    jQuery("#block_attr_sel_"+id).html(json['id_'+id]);
                }
                if (id == id_select) reload_atribut = 1;
            }   
на это, там разница в 2ух строчках, главное следите за путем к вашему скрипту с галереей, у меня скрипт в корне/js/, т.е. src=\"/js/lbmot.js\"
 
Код
 prevAjaxHandler = jQuery.getJSON(
        urlupdateprice,
        data,
        function(json){
            var reload_atribut = 0;
            for(var i=0;i<attr_list.length;i++){
                var id = attr_list[i];
                if (reload_atribut){               
                val = "<script type=\"text/javascript\" src=\"/js/lbmot.js\"></script>"+json['id_'+id]; /*путь в крень*/
                    jQuery("#block_attr_sel_"+id).html(val);

                }
                if (id == id_select) reload_atribut = 1;
            }

ну и третье, добавим в шаблон HTML отображения этих атрибутов, летим в components\com_jshopping\controllers\product.php, там ищем "// attribut type radio" и меняем этот обработчик foreach($options as $k2=>$v2){ ..... } на свой собственный:
Код
// attribut type radio
               
                    foreach($options as $k2=>$v2){
                        if ($v2->image) $options[$k2]->value_name = "<img class='imgattr' src='".$jshopConfig->image_attributes_live_path."/thumb_".$v2->image."' /><a class=\"lightbox_attr\" href='".$jshopConfig->image_attributes_live_path."/".$v2->image."' rel=\"jshop_attr_id{$attr_id}{$v2->val_id}\"></a> ".$v2->value_name;                       
                    }
тут наш класс lightbox_attr, и  rel=\"jshop_attr_id{$attr_id}{$v2->val_id}\" это id  атрибута который разворачиваем, href='".$jshopConfig->image_attributes_live_path."/".$v2->image."' - ссылка до разворачиваемой картинки....
Т.к. атрибутов много, у меня до 50 материалов может быть, а картинки, разворачиваемые, могут быть большими, то страничка стала весить до 3-4Мб, что не приемлемо. Пришлось ковырять админ часть компонента и делать "тумбочки" для фоток атрибута src='".$jshopConfig->image_attributes_live_path."/thumb_".$v2->image."' />, таким образом на страницу грузятся тумбочки, страница весит всего пару сотен килобайт, а полно размерные грузятся при клике.

Итак дописываем админку для тумбочек атрибутов, бегом в \administrator\components\com_jshopping\controllers\attributesvalues.php :
дописываем function save() {..часть с if ($upload->upload()){}..} до такого вида, тут видно где появились thumb_
Код
......
if ($upload->upload()){
            if ($post['old_image']){
                @unlink($jshopConfig->image_attributes_path . "/" . $post['old_image']);
                @unlink($jshopConfig->image_attributes_path . "/thumb_" . $post['old_image']);
            }
            $post['image'] = $upload->getName();
            @chmod($jshopConfig->image_attributes_path."/".$post['image'], 0777);
           
            /*my creat thumb*/
            $path_image = $jshopConfig->image_attributes_path."/".$post['image'];
            $path_thumb = $jshopConfig->image_attributes_path."/thumb_".$post['image'];

           
            if (!ImageLib::resizeImageMagic($path_image, /*width*/ 90, /*height*/ 0, /*image_cut кадрировать*/1, /*image_fill заполнение*/0, $path_thumb, /*image_quality*/80, /*image_fill_color*/0)) {
            JError::raiseWarning("",_JSHOP_ERROR_CREATE_THUMBAIL);
                $error = 1;
            }
@chmod($path_thumb, 0777);
           
            /*my end creat thumb*/
        }else{
...

это было сохранение, теперь если мы удаляем атрибут, вызов функции делаем таким:
Код
	

function remove(){
$cid = JRequest::getVar("cid");
$attr_id = JRequest::getInt("attr_id");
        $jshopConfig = &JSFactory::getConfig();
$db = &JFactory::getDBO();
        JPluginHelper::importPlugin('jshoppingadmin');
        $dispatcher =& JDispatcher::getInstance();
       
        $dispatcher->trigger( 'onBeforeRemoveAttributValue', array(&$cid) );
       
$text = '';
foreach ($cid as $key => $value){
            $query = "SELECT image FROM `#__jshopping_attr_values` WHERE value_id = '" . $db->getEscaped($value). "'";
            $db->setQuery($query);
            $image = $db->loadResult();
            @unlink($jshopConfig->image_attributes_path."/".$image);
            @unlink($jshopConfig->image_attributes_path."/thumb_".$image);
           
$query = "DELETE FROM `#__jshopping_attr_values` WHERE `value_id` = '" . $db->getEscaped($value). "'";
$db->setQuery($query);
$db->query();
$text = _JSHOP_ATTRIBUT_VALUE_DELETED;
}
       
        $dispatcher->trigger( 'onAfterRemoveAttributValue', array(&$cid) );

$this->setRedirect("index.php?option=com_jshopping&controller=attributesvalues&attr_id=".$attr_id, $text);
}

тут одна строчка с thumb, и если админ удаляет просто фото, то вызывается функция
Код
function delete_foto(){
        $jshopConfig = &JSFactory::getConfig();
       
        $id = JRequest::getInt("id");
        $attributValue = &JTable::getInstance('attributValue', 'jshop');
        $attributValue->load($id);
        @unlink($jshopConfig->image_attributes_path."/".$attributValue->image);
        @unlink($jshopConfig->image_attributes_path."/thumb_".$attributValue->image);
        $attributValue->image = "";
        $attributValue->store();
        die();               
    }   
тут тоже видим удаление и нормальной фотки и тумбочки....
На этом вроде все....кто хочет потестить, то сюда http://mebel.lica-pskova.ru/index.php/product/view/36/11

Более сложно было сделать такое желание заказчика http://mebel.lica-pskova.ru/index.php/kitchenfur/tov1,
человек покупая кухню 3-х метровую выбирает цвет, столешницу, фасады, но ему еще нужны шкафы от этой кухни т.к. кухня 3,5метра, он щелкает корзину+докупить модули, и попадает на список модулей с УЖЕ выбранными атрибутами и пересчитанной ценой за отдельные шкафы, и может докупить, в корзину формируется заказ с атрибутами и всей кухни и выбранными атрибутами для выбранных элементов кухни....а то юзеры "скажем глуповаты" и сейчас у них в старом магазине, заказы приходят на кухню одного цвета, а доп шкафы вообще других цветов и форматов....
*

BaevAS

  • Захожу иногда
  • 116
  • 1 / 0
  • Время проведенное на рыбалке, в счет жизни не идет
Re: ява функция обновления атрибутов
« Ответ #7 : 16.12.2011, 13:00:45 »
Большое человеческое спасибо, ща буду кувыркаться
*

BaevAS

  • Захожу иногда
  • 116
  • 1 / 0
  • Время проведенное на рыбалке, в счет жизни не идет
Re: ява функция обновления атрибутов
« Ответ #8 : 16.12.2011, 19:45:31 »
Весь день промучился  >:(, так ни чего и не получилось, плохо, когда незнаешь, да еще и не понимаешь, буду просить кого нибудь помочь мне разобраться в этом   :'(
*

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Re: ява функция обновления атрибутов
« Ответ #9 : 22.09.2012, 16:52:42 »
To Srg

Все сделал, как Вы прописали - не работает Lightbox (при нажатии на картинку включается радиобатон)
Скрин с HTML кодом прилагаю. Как бы по нему все нормально. Единственное, что я убрал - это "Thumb" в product.php (с ним вообще картинки не появлялись). Не подскажете, в чем дело?



[вложение удалено Администратором]
*

pvi1

  • Давно я тут
  • 566
  • 16 / 2
Re: ява функция обновления атрибутов
« Ответ #10 : 24.09.2012, 21:59:32 »
Тема закрыта. Шаблон был не дефолтный. При замене файла Load.js все стало на место.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Третий эффект для картинок атрибутов - lightbox.

Автор kit2m2

Ответов: 17
Просмотров: 5254
Последний ответ 29.07.2017, 13:32:14
от nibelung
UiKit Gallery для изображения атрибутов в карточке товара

Автор Bozhkov2

Ответов: 12
Просмотров: 1775
Последний ответ 18.08.2016, 18:16:52
от Bozhkov2
Оформление вывода атрибутов в детальном просмотре заказа в профиле пользователя

Автор Taatshi

Ответов: 8
Просмотров: 1199
Последний ответ 07.09.2015, 19:00:47
от dmitry_stas
Количество отзывов в зависимости от атрибутов

Автор xxx87

Ответов: 0
Просмотров: 798
Последний ответ 24.05.2015, 18:42:39
от xxx87
Как сделать кнопки вместо RadioButton атрибутов?

Автор vadikgr

Ответов: 8
Просмотров: 2078
Последний ответ 07.12.2013, 00:58:38
от NortonFox