Перейти к содержанию
Официальный форум поддержки Simpla

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


Рекомендуемые сообщения

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

 

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

- обновляется 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);
          }
        });

    }

 

Ссылка на сообщение
Поделиться на другие сайты

 

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

 

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

- обновляется 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} 

Вы изменили своё мнение ? 

Ссылка на сообщение
Поделиться на другие сайты

 

 
Просто интересуюсь, почему не {$wrapper = 'products.tpl' scope=parent} 

Вы изменили своё мнение ? 

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Простите за любопытство 

 

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

https://github.com/pikusov/Simpla/blob/master/simpla/design/html/order_print.tpl#L5

Наверное стоит ему сообщить, что надо сделать по другому.

Ссылка на сообщение
Поделиться на другие сайты

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

Простите за любопытство 

 

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

https://github.com/pikusov/Simpla/blob/master/simpla/design/html/order_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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

возьмем к примеру быстрый просмотр - допустим я хочу использовать другой шаблон для отображения карточки товара, в котором хочу вывести контент иначе, но по умолчанию 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

 

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

задам еще раз

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

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

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

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

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

 

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

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

 

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

 

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

 

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

 

задам еще раз

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

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

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

как вы это реализуете?и вы опять не ответили 

 

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

 

пс

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...