Перейти к содержимому


Фото
- - - - -

Ajax фильтрация, пагинация


  • Закрыто Тема закрыта
10 ответов в теме

#1 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 28.08.2014 - 15:39

Небольшое дополнение на уровне шаблона

 

- сохраняется история переходов по ссылкам

- обновляется url в адресной строке

 

в products.tpl

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
    {$wrapper = '' scope=parent}
{/if}

 

Ajax

    $("#brands a, #features a, .pagination a").live('click', function(){

        var state = {
            title: $(this).attr("title"),
            url: $(this).attr("href")
        }
        history.pushState( state, state.title, state.url );

        // при нажатии back/forward в браузере
        window.onpopstate = function(e){
            get_pagination(this);
            return false;
        }

        get_pagination(this);
        return false;

    });

    function get_pagination(href){

        /*var href = $(this);*/
        var get_link = $(href).attr('href');

        $('#content').css('opacity','0.5');
        $.get(get_link, function(data){
        if(data){
            $('#content').html(data);
            $('#content').css('opacity','1');
            scroll = $('#content').offset().top;
            $('html, body').stop().animate({scrollLeft: 0, scrollTop:(scroll-200)}, 500);
          }
        });

    }

 



#2 osben

osben
  • Фрилансер
  • 774 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 28.08.2014 - 18:36

Небольшое дополнение на уровне шаблона

 

- сохраняется история переходов по ссылкам

- обновляется url в адресной строке

 

в products.tpl

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
    {$wrapper = '' scope=parent}
{/if}

 

Ajax

    $("#brands a, #features a, .pagination a").live('click', function(){

        var state = {
            title: $(this).attr("title"),
            url: $(this).attr("href")
        }
        history.pushState( state, state.title, state.url );

        // при нажатии back/forward в браузере
        window.onpopstate = function(e){
            get_pagination(this);
            return false;
        }

        get_pagination(this);
        return false;

    });

    function get_pagination(href){

        /*var href = $(this);*/
        var get_link = $(href).attr('href');

        $('#content').css('opacity','0.5');
        $.get(get_link, function(data){
        if(data){
            $('#content').html(data);
            $('#content').css('opacity','1');
            scroll = $('#content').offset().top;
            $('html, body').stop().animate({scrollLeft: 0, scrollTop:(scroll-200)}, 500);
          }
        });

    }
 
Просто интересуюсь, почему не {$wrapper = 'products.tpl' scope=parent} 
Вы изменили своё мнение ? 


#3 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 28.08.2014 - 19:11

 
Просто интересуюсь, почему не {$wrapper = 'products.tpl' scope=parent} 
Вы изменили своё мнение ? 

 

мое мнение не менялось - во $wrapper можно указать необходимый шаблон, если того требует конкретная задача 



#4 osben

osben
  • Фрилансер
  • 774 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 28.08.2014 - 19:26

мое мнение не менялось - во $wrapper можно указать необходимый шаблон, если того требует конкретная задача 

 

как то для меня запутанно, почему в данном случаи Вы етого не предлагаете в первом посте ? 
Простите за любопытство 

Так же рекомендую написать тогда еще на гитхаб, так как сам разработчик враперу указывает '' в шаблоне для печати 
https://github.com/p...er_print.tpl#L5
Наверное стоит ему сообщить, что надо сделать по другому.



#5 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 28.08.2014 - 19:46

как то для меня запутанно, почему в данном случаи Вы етого не предлагаете в первом посте ? 
Простите за любопытство 

Так же рекомендую написать тогда еще на гитхаб, так как сам разработчик враперу указывает '' в шаблоне для печати 
https://github.com/p...er_print.tpl#L5
Наверное стоит ему сообщить, что надо сделать по другому.

 

возьмем к примеру быстрый просмотр - допустим я хочу использовать другой шаблон для отображения карточки товара, в котором хочу вывести контент иначе, но по умолчанию ProductView.tpl нам отдает шаблон product.tpl, в таком случае я создаю шаблон product_[произвольное название].tpl и указываю в $wrapper. на выходе получаю указанный шаблон.

 

можно использовать include 

 

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
   
   {include file='product_[произвольное название].tpl'} 
   в нем указать {$wrapper = '' scope=parent}

{else}

стандартный шаблон

{/if}

но зачем? достаточно сделать так {$wrapper = 'product_[произвольное название].tpl' scope=parent}

 

вот эта функция
 

		// Создаем текущую обертку сайта (обычно index.tpl)
		$wrapper = $this->design->smarty->getTemplateVars('wrapper');
		if(is_null($wrapper))
			$wrapper = 'index.tpl';

		if(!empty($wrapper))
			return $this->body = $this->design->fetch($wrapper);
		else
			return $this->body = $content;

я постараюсь расшифровать как смогу

 

если $wrapper = ''; в print уходит содержимое шаблона в котором установили $wrapper

если $wrapper = 'product_main.tpl'; в print уходит содержимое шаблона product_main.tpl

если $wrapper-а вообще нет в print уходит index.tpl

 

в приведенной вами ссылке автор выводит содержимое заказа.

 

но если я хочу обратиться, к примеру, к конкретному товару и при этом отправить в print свой шаблон то мне достаточно его указать в $wrapper



#6 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 28.08.2014 - 20:05

osben, вот допустим необходимо вывести в окне fancybox список товаров конкретной категории в виде exel как вы это реализуете?



#7 osben

osben
  • Фрилансер
  • 774 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 29.08.2014 - 00:18

возьмем к примеру быстрый просмотр - допустим я хочу использовать другой шаблон для отображения карточки товара, в котором хочу вывести контент иначе, но по умолчанию ProductView.tpl нам отдает шаблон product.tpl, в таком случае я создаю шаблон product_[произвольное название].tpl и указываю в $wrapper. на выходе получаю указанный шаблон.

 

можно использовать include 

 

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
   
   {include file='product_[произвольное название].tpl'} 
   в нем указать {$wrapper = '' scope=parent}

{else}

стандартный шаблон

{/if}

но зачем? достаточно сделать так {$wrapper = 'product_[произвольное название].tpl' scope=parent}

 

вот эта функция
 

		// Создаем текущую обертку сайта (обычно index.tpl)
		$wrapper = $this->design->smarty->getTemplateVars('wrapper');
		if(is_null($wrapper))
			$wrapper = 'index.tpl';

		if(!empty($wrapper))
			return $this->body = $this->design->fetch($wrapper);
		else
			return $this->body = $content;

я постараюсь расшифровать как смогу

 

если $wrapper = ''; в print уходит содержимое шаблона в котором установили $wrapper

если $wrapper = 'product_main.tpl'; в print уходит содержимое шаблона product_main.tpl

если $wrapper-а вообще нет в print уходит index.tpl

 

в приведенной вами ссылке автор выводит содержимое заказа.

 

но если я хочу обратиться, к примеру, к конкретному товару и при этом отправить в print свой шаблон то мне достаточно его указать в $wrapper


И так, развеем некоторые мифы которые вы написали тут 
 

// Создаем текущую обертку сайта (обычно index.tpl)
		$wrapper = $this->design->smarty->getTemplateVars('wrapper');
		if(is_null($wrapper))
			$wrapper = 'index.tpl';

		if(!empty($wrapper))
			return $this->body = $this->design->fetch($wrapper);
		else
			return $this->body = $content;

это не функция - садись, тебе двойка

 

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
   
   {include file='product_[произвольное название].tpl'} 
   в нем указать {$wrapper = '' scope=parent}

{else}

стандартный шаблон

{/if}

это в случаи если верстка кардинально отличается от product.tpl. Но за частую можно все реализовать и в product.tpl через условия в css и js. 
Открою Вам секрет, большинство программистов после которых брал проекты на доработки делали еще "круче" делают отдельный файл в папке ajax/ и и по get берут id товара, что конечно ужасно, и способ описанный выше есть более лучше и удобнее (мое мнение и по всей видимости и Ваше)

По вашему решению в теме, есть конечно нюансы если придраться или захотеть сделать замечание\советы. 
Со своей стороны сделаю советы на что обратить внимание, что бы сделать вашу доработку лучше! 

1. обратите внимание на

title: $(this).attr("title"),

при наборе селекторов 
 

 $("#brands a, #features a, .pagination a")

На сколько я визуально понимаю, будет в некоторых случаях (а то и вовсе по каждому селектору ) undefined


2. при 

$.get(get_link, function(data){

думаю надо дописать переход в случаи fail. Так как условие if(data){ .... вообще не о чем не говорит
Так как Вы не любите намеки или не хотите понимать их или .... пишу как я вижу данную функцию
 

function get_pagination(href){
	var get_link = $(href).attr('href');
	$('#content').css('opacity', 0.5);
	$.get(get_link, function(data){
		var scroll = $('#content').html(data).css('opacity', 1).offset().top;
		$('html, body').stop().animate({scrollLeft: 0, scrollTop:(scroll-200)}, 500);
	})
	.fail(function() {
		location = get_link;
	});
}

 

это один из вариантов. И простите за код стаил, и за обращение к селектору два раза вместо 4х, привычка
 

вот допустим необходимо вывести в окне fancybox список товаров конкретной категории в виде exel как вы это реализуете?


Вы вправду верите, что задали корректно вопрос ?  :)  :)  :) 
Такое я себе запишу в заметки, интересный вопрос как бы ))) прям шедевр в том виде как написан, скорее всего Вы имели что то другое говоря об exel в fancybox

Не сочтите за грубость (хотя в какой то мере Вы уже на ето заслужили) но Ваша манера сильно напоминает Корса (если я не ошибаюсь), только он каждое решение выкладывал как платно, вплоть до трех строк кода. А как он дискуссия вел, это же просто катастрофа была. (была потому что не вижу его ника на форуме в постах) 



#8 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 29.08.2014 - 09:43


это в случаи если верстка кардинально отличается от product.tpl.  Но за частую можно все реализовать и в product.tpl через условия в css и js. 

 

зачастую проще создать отдельный шаблон без всяких условий. следуя вашей логике и вовсе все шаблоны можно воткнуть в index.tpl, добавить условия, и ведь все будет работать.

 

я рад что до вас наконец дошло мое послание, пусть даже в сотый раз но именно об этом я не однократно вам  писал. Вы очень сообразительный)

 

Osben: И так, развеем некоторые мифы которые вы написали тут 

 

вы прям таки разрушитель мифов! ток какие в итоге вы развеяли? то что это не функция)) из вас прям вырывается зверь - "Дай ко мне кого то чему то научить") Может вам собаку завести что бы отпустило...

 

я как то не понял что в моем вопросе по поводу exel в fancybox не корректного?

 

задача заключается обратится к категории через ajax  и вывести товары в табличке виде exel (exel привел в пример для того что бы понимать каким должен быть шаблон. когда говорят таблица в ввиде exel все понимают о чем речь, в вашем случае это не помогло). вы конечно запишите в заметки но на вопрос вы не ответили (конкретным примером) а начали вновь умничать. вы не в первый раз рассуждаете о том что вы что то у кого то видели, что кто то там как то криво что то написал. я попросил вас показать конкретный пример, написать код, вместо этого вы юлите и отвечаете вопросом на вопрос.

 

задам еще раз

osben, вот допустим необходимо вывести в окне fancybox список товаров конкретной категории. Условия

1. должен быть отдельный шаблон

1. список товаров вывести в теге <table>, не забудьте добавить border

как вы это реализуете?

фиг знает правильно ли задал вопрос  :huh:  я просто не знаю как его сформулировать что бы вам было понятно...

 

Простите но я вновь отмечу что вы ведете себя снисходительно, хотя уже смогли раскрыть свою мысль в конкретных, полезных примерах, уже хорошо. Спасибо!



#9 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 29.08.2014 - 10:34


Не сочтите за грубость (хотя в какой то мере Вы уже на ето заслужили) но Ваша манера сильно напоминает Корса (если я не ошибаюсь), только он каждое решение выкладывал как платно, вплоть до трех строк кода. А как он дискуссия вел, это же просто катастрофа была. (была потому что не вижу его ника на форуме в постах) 

 

возможно в этом причина вашей предвзятости. с полной ответственностью заявляю :) что не имею отношение к корсу. обратите внимание на первый пост - в нем нет ни какой "манеры". правда ведь? возможно, я не настаиваю, причина моей "манеры" заключается в чем то другом, возможно это реакция на ваш стиль общения.



#10 osben

osben
  • Фрилансер
  • 774 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 29.08.2014 - 11:14

Парень, притихни чуток. Видно что ты только начинаешь в программировании, а уже возомнил себя спецом, что бы участок кода называть функцией. Та даже таблицу html называешь exel - не стыдно ? ну да, как ты писал "фиг знает правильно ли ....". 

Будь чуточку адекватнее, не надо меня пытаться  обсырать выдергивая цитаты. Если ты все в штыки принимаешь, что то себе придумываешь что я тебя учу или еще что то, ну тебя нафиг, лучше вообще в твоих топиках не буду писать. Чао



#11 DaVinci

DaVinci
  • Фрилансер
  • 672 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 29.08.2014 - 11:41

Парень, притихни чуток. Видно что ты только начинаешь в программировании, а уже возомнил себя спецом, что бы участок кода называть функцией. Та даже таблицу html называешь exel - не стыдно ? ну да, как ты писал "фиг знает правильно ли ....". 

Будь чуточку адекватнее, не надо меня пытаться  обсырать выдергивая цитаты. Если ты все в штыки принимаешь, что то себе придумываешь что я тебя учу или еще что то, ну тебя нафиг, лучше вообще в твоих топиках не буду писать. Чао

 

чего так нервничать и ножками топать. я ведь не напрашиваюсь на ваше общение, вы по своей воле отвечаете в "топиках"

 

вот смотрите что я вам написал

в окне fancybox список товаров конкретной категории в виде exel

 

Osben: Та даже таблицу html называешь exel - не стыдно

Ну за что мне должно быть стыдно? какую таблицу я назвал exel - внимательней - список товаров в виде exel - все понятно! помимо таблицы (table) в html есть еще <ul>, но дело не в этом, главное придать выводу вид exel таблицы

 

УЧАСТОК КОДА (часть кода определенной функции я обубликовал и назвал функцией) ----->>>> ЧАСТЬ КОДА. с этого можно судить что вы только начинаете в программировании? Но это придирка ровно такая же как была с вашей стороны.

 

я воспринимаю все достаточно адекватно - мои ответы адекватны вашим коментариям. В каком месте я вас обосрал не пойму...

 

и вы опять не ответили

 

задам еще раз
osben, вот допустим необходимо вывести в окне fancybox список товаров конкретной категории. Условия
1. должен быть отдельный шаблон
1. список товаров вывести в теге <table>, не забудьте добавить border
как вы это реализуете?и вы опять не ответили 

 

Или умничать легче чем привести пример? Или вы боитесь что в вашем примере будет к чему придраться?

 

пс

странно что вам не нравится когда с вами общаются ровно в вашей же манере!






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых