Автор Тема: Не работает листалка  (Прочитано 885 раз)

01 Ноябрь 2013, 13:51:57
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Куда еще подробнее???
Берете все функции и оборачиваете в обвертку
jQuery.noConflict();
(function($){
    // ваш код
})(jQuery);
Или нужно за вас все это сделать?
Делайте, показвайте, что получилось, потом можно что-то советывать.

Этот код к сожалению не подходит, или я неправильно что то делаю.

PS 1.4.2.5

В файл product.tpl, вместо
<div id="idTab1" class="rte">{$product->description}</div>
Вставляю скрипт пагинатора
{*        -----------Постраничное разбиение текста---------------   *}

<div id="idTab1" class="rte">
<div id='content'>
{$product->description}
</div>
</div>
<script src="/themes/prestashop/js/1_jquery.js"></script> 
<script src="/themes/prestashop/js/1_paginate.js"></script>
<script>
jQuery.noConflict();
jQuery(document).ready(function($) {
    $("#content").jPaginate();                         
});
</script>

Листалка начинает работать, но при этом перестает
работать скрипт который переключает картинки.

Можете посмотреть  http://patentforinvention.ru/medicina/97-vitiajenie-razgruzka-pozvonochnika.html
Не боги горшки обжигают, не зачем им такой хренью заниматься.
01 Ноябрь 2013, 13:54:57
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Цитировать
<script src="/themes/prestashop/js/1_jquery.js"></script> 
<script src="/themes/prestashop/js/1_paginate.js"></script>
Не только свои функции, но и все остальные. Проверяйте, что в этих файлах.
Подключите любой отладчик, быстрее найдете проблему.
01 Ноябрь 2013, 14:13:21
Ответ #2
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
jQuery.noConflict() - это только для устранения кофликтов в использовании $.
Ошибки могут быть от того, что используете одинаковые имена классов, ид.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
01 Ноябрь 2013, 14:35:06
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Цитировать
<script src="/themes/prestashop/js/1_jquery.js"></script> 
<script src="/themes/prestashop/js/1_paginate.js"></script>
Не только свои функции, но и все остальные. Проверяйте, что в этих файлах.
Подключите любой отладчик, быстрее найдете проблему.

Этот файл <script src="/themes/prestashop/js/1_jquery.js"></script>   можно отключить он управляет CSS

А вот этот <script src="/themes/prestashop/js/1_paginate.js"></script> управляет пагинатором

// jPaginate Plugin for jQuery
// by Angel Grablev for Enavu Web Development network (enavu.com)
// Dual license under MIT and GPL :) enjoy
/*

To use simply call .paginate() on the element you wish like so:
$("#content").jPaginate();

you can specify the following options:
items = number of items to have per page on pagination
next = the text you want to have inside the text button
previous = the text you want in the previous button
active = the class you want the active paginaiton link to have
pagination_class = the class of the pagination element that is being generated for you to style
minimize = minimizing will limit the overall number of elements in the pagination links
nav_items = when minimize is set to true you can specify how many items to show
cookies = if you want to use cookies to remember which page the user is on, true by default

*/
(function($){
    $.fn.jPaginate = function(options) {
        var defaults = {
            items: 8,
            next: "Следующая",  //  Предыдущая

/*
Следующая

Предыдущая

Вперед

Назад
*/
            previous: "Предыдущая",    //Следующая
            active: "active",
            pagination_class: "pagination",
            minimize: false,
            nav_items: 6,
cookies: true
        };
        var options = $.extend(defaults, options);

        return this.each(function() {
            // object is the selected pagination element list
            obj = $(this);
            // this is how you call the option passed in by plugin of items
            var show_per_page = options.items;
            //getting the amount of elements inside parent element
            var number_of_items = obj.children().size();
            //calculate the number of pages we are going to have
            var number_of_pages = Math.ceil(number_of_items/show_per_page);
           
            //create the pages of the pagination
            var array_of_elements = [];
            var numP = 0;
            var nexP = show_per_page;
            //loop through all pages and assign elements into array
            for (i=1;i<=number_of_pages;i++)
            {   
                array_of_elements[i] = obj.children().slice(numP, nexP);
                numP += show_per_page;
                nexP += show_per_page;
            }
           
            // display first page and set first cookie
if (options.cookies == true) {
if (get_cookie("current")) {
showPage(get_cookie("current"));
createPagination(get_cookie("current"));
} else {
set_cookie( "current", "1");
showPage(get_cookie("current"));
createPagination(get_cookie("current"));
}
} else {
showPage(1);
createPagination(1);
}
            //show selected page
            function showPage(page) {
                obj.children().hide();
                array_of_elements[page].show();
            }
           
            // create the navigation for the pagination
            function createPagination(curr) {
                var start, items = "", end, nav = "";
                start = "<ul class='"+options.pagination_class+"'>";
                var previous = "<li><a class='goto_previous' href='#'>"+options.previous+"</a></li>";
                var next = "<li><a class='goto_next' href='#'>"+options.next+"</a></li>";
var previous_inactive = "<li><a class='inactive'>"+options.previous+"</a></li>";
                var next_inactive = "<li><a class='inactive'>"+options.next+"</a></li>";
                end = "</ul>"
                var after = number_of_pages - options.after + 1;
                var pagi_range = paginationCalculator(curr);
for (i=1;i<=number_of_pages;i++)
                {
                    if (options.minimize == true) {
var half = Math.ceil(number_of_pages/2)
                    if (i >= pagi_range.start && i <= pagi_range.end) {
if (i == curr) { items += '<li><a class="'+options.active+'" title="'+i+'">'+i+'</a></li>';}
                        else { items += '<li><a href="#" class="goto" title="'+i+'">'+i+'</a></li>';}
} else if (curr <= half) {
if (i >= (number_of_pages - 2)) {
if (i == curr) { items += '<li><a class="'+options.active+'" title="'+i+'">'+i+'</a></li>';}
                        else { items += '<li><a href="#" class="goto" title="'+i+'">'+i+'</a></li>';}
}
} else if (curr >= half) {
if (i <= 2) {
if (i == curr) { items += '<li><a class="'+options.active+'" title="'+i+'">'+i+'</a></li>';}
                        else { items += '<li><a href="#" class="goto" title="'+i+'">'+i+'</a></li>';}
}
}
                    } else {
                        if (i == curr) { items += '<li><a class="'+options.active+'" title="'+i+'">'+i+'</a></li>';}
                        else { items += '<li><a href="#" class="goto" title="'+i+'">'+i+'</a></li>';}
                    }
                }
                if (curr != 1 && curr != number_of_pages) {
                    nav = start + previous + items + next + end;
                } else if (curr == number_of_pages){
                    nav = start + previous + items + next_inactive + end;
                } else if (curr == 1) {
                    nav = start + previous_inactive + items + next + end;
                }
                obj.after(nav);
            }

/* code to handle cookies */
function set_cookie( name, value ) {  
  $.cookie(name, value);
}
function get_cookie ( cookie_name ) {
return $.cookie(cookie_name);
}
           
function paginationCalculator(curr)  {
var half = Math.floor(options.nav_items/2);
var upper_limit = number_of_pages - options.nav_items;
var start = curr > half ? Math.max( Math.min(curr - half, upper_limit), 0 ) : 0;
var end = curr > half?Math.min(curr + half + (options.nav_items % 2), number_of_pages):Math.min(options.nav_items, number_of_pages);
return {start:start, end:end};
}

            // handle click on pagination
            $(".goto").live("click", function(e){
                e.preventDefault();
                showPage($(this).attr("title"));
set_cookie( "current", $(this).attr("title"));
                $(".pagination").remove();
                createPagination($(this).attr("title"));
            });
            $(".goto_next").live("click", function(e) {
                e.preventDefault();
                var act = "."+options.active;
                var newcurr = parseInt($(".pagination").find(".active").attr("title")) + 1;
                set_cookie( "current", newcurr);
showPage(newcurr);
                $(".pagination").remove();
                createPagination(newcurr);
            });
            $(".goto_previous").live("click", function(e) {
                e.preventDefault();
                var act = "."+options.active;
                var newcurr = parseInt($(".pagination").find(".active").attr("title")) - 1;
set_cookie( "current", newcurr);
                showPage(newcurr);
                $(".pagination").remove();
                createPagination(newcurr);
            });
        });
       
       
    };
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
var path = options.path ? '; path=' + (options.path) : '';
var domain = options.domain ? '; domain=' + (options.domain) : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
})(jQuery);

Я так понимаю в скрипт изначально заложена защита от конфликтов, но она почему то не работает.

jQuery.noConflict();
jQuery(document).ready(function($) {
    $("#content").jPaginate();
});
Не боги горшки обжигают, не зачем им такой хренью заниматься.
01 Ноябрь 2013, 14:46:38
Ответ #4
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Если заложена, значит работает. Не работает в другом плагине, где ее нет. Проверять все нужно.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.