Сегодня 5 апреля, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7280
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Хаки и Скрипты Next Generation CMS
Хаки и Скрипты Next Generation CMS
Голосов: 1
Адрес блога: http://ngcmshak.ru
Добавлен: 2013-12-31 14:21:51 блограйдером 88888888
 

Загрузка новостей на AJAX

2013-09-29 02:56:23 (читать в оригинале)

Сейчас технология AJAX(загрузка контента без обновления страницы), стала атрибутом любого современного сайта. Поэтому сегодня, буквально за минуту, прикрутим на свой сайт AJAX загрузку новостей .

Почему так быстро? Потому что умные люди, уже сделали прекрасный Jquery плагин, который нам осталось только правильно подключить. Называется он Infinite Ajax Scroll. Последнюю версию, вы можете скачать с официального GitHab'a плагина. А я cразу перейду к установке...

Установка
1. Скачиваем архив [isnt-logged]Вы не можете скачивать файлы с нашего сайта ,рекомендуем Вам ajks.zip (8.44 Kb)[/is-logged] и распаковываем в папку с своим шаблоном.
2. В main.tpl своего шаблона, перед /body, добавляем:
Код:
 <link rel="stylesheet" type="text/css" href="{{ tpl_url }}/css/jquery.ias.css" />
<script type="text/javascript" src="{{ tpl_url }}/js/jquery-ias.js"></script>
<script type="text/javascript">
$(document).ready(function() {
jQuery.ias({
container : '#content-main',// Название контейнера в котором находятся новости
item: '.article',// Название контейнера самой новости
pagination: '.pagination',// Ссылка на следующюю новость
next: '.next-posts a',// Ссылка на следующюю новость
loader: '<img src="{tpl_url}/images/loader.gif"/>',//Загрузчик, который появляется при подгрузке страниц
triggerPageThreshold: 2, // Количество страниц, после которых прегратится автоматическая подгрузка и появится кнопка
trigger: 'Ещё' // Текст кнопки
});
});
</script>
6. Открываем pages.tpl :
Плюс тут же меняем:
Код:
 [next-link]Вперед[/next-link]
на
Код:
 <span class="next-posts">[next-link]Вперед[/next-link]</span>
здесь главное правильно присвоить класс next-posts,если в pages.tpl не получается то можно прописать класс в файле variables.ini.
Всё готово. Уверен это заняло у вас не многим больше минуты ;)

Пояснение
Теперь немного подробнее что мы сделали.
В первом шаге, мы загрузили сам скрипт,стили и картинку в шаблон .
Во втором, мы подключили этот скрипт и стили на нужных нам страницах. Для новостей на главной, а для комментариев в полной новости. При необходимости, вы можете расширить список страниц, прочитав документацию. Например подключить ещё на странице "последние комментарии", при просмотре категори и т.д.
Итог
За считанные минуты, мы сделали современный сайт, без каких либо вмешательств в движок.
Работа скрипта, сделана очень продумано: сохраняется навигация по страницам и есть поддержка "умеренной" загрузки (после нескольких страниц, просто появляется кнопка для загрузки).
Имея желание, при помощи плагина можно сделать AJAX загрузку страниц своей мечты.
Вот так ...

Подгрузка новостей как ВКонтакте

2013-09-24 14:08:20 (читать в оригинале)

Подгрузка новостей как ВКонтакте .

Открываем файл "pages.tpl" в вашем шаблоне. Вставляем в самый низ следующий код:

Код:
 <div id="ajax-next-page" style="display: none;">[next-link][/next-link]</div>
<script type="text/javascript">
$(function() {
$(window).scroll(function() {
if ($(window).scrollTop() > $('body').height()-$(window).height()-10) {
var nextPage = $('#ajax-next-page a').attr('href');
if (nextPage !== undefined) {
$.ajax({
url: nextPage,
success: function(data) {
$('#ajax-next-page').remove();
$('#id вашего блока').append($('#id вашего блока', data).html());
}
})
}
}
});
});
</script>

ВНИМАНИЕ! Не нужно заменять имеющийся код. Нужно вставить в самый низ.
Исправляем только"id вашего блока" изменяем на id блока с новостями
Сохраняем.
У меня получилось примерно так в pages.tpl
Код:
 <div class="dpad">
 
<div id="pagenav">
<h4>[prev-link]«[/prev-link]
{pages}
[next-link]»[/next-link] </h4>
</div>
</div>

<div id="ajax-next-page" style="display: none;">[next-link][/next-link]</div>
<script type="text/javascript">
$(function() {
$(window).scroll(function() {
if ($(window).scrollTop() > $('body').height()-$(window).height()-10) {
var nextPage = $('#ajax-next-page a').attr('href');
if (nextPage !== undefined) {
$.ajax({
url: nextPage,
success: function(data) {
$('#ajax-next-page').remove();
$('#text').append($('#text', data).html());
}
})
}
}
});
});
</script>
я использовал блок с id - text,и в файле news.table.tpl у меня получилось так
Код:
 <div id="text">
{% if (handler == 'by.category') %}
<h3>{{ category.name }}</h3>
{% if category.icon.purl %}<img src="{{ category.icon.purl }}"/><br/>{% endif %}
{{ category.info }}
{% endif %}
{% for entry in data %}
{{ entry }}
{% endfor %}
{{ pagination }}
</div>
Это мой пример использования,ну все пользуемся .

обновление страницы на JavaScript

2013-09-22 01:12:09 (читать в оригинале)

обновление страницы на JavaScript
Это небольшая писулька о том, как можно обновить страницу с помощью JavaScript.
Итак,первое, простое обновление страницы :
Код:
 <script type='text/javascript'>location.reload();</script>
Можно оформить это в виде гиперссылки:
Код:
 <a href="javascript:window.location.reload()">Рефреш/релоад/бла-бла</a>
А если необходимо обновление страницы по времени, тогда используем конструкцию с применением функции setInterval(). Задержка будет равняться 5 секундам (5000 миллисекунд):
Код:
 <script type='text/javascript'>
function obnovit_stranicu() {
location.reload();
}
setInterval("obnovit_stranicu()", 5000);
</script>
Вроде все просто ,пользуемся

Слайдер на плагине jQuery «Parallax Slider»

2013-09-20 13:34:15 (читать в оригинале)

Слайдер с объемным фоновым эффектом. Изюминка этого слайдера в движение фона, который состоит из нескольких слоев, каждый из которых прокручивается с различной скоростью. В итоге получается имитация объемного эффекта. Выглядит очень красиво, вы можете сами в этом убедиться. Более плавно эффект отображается в таких браузерах как: Opera, Google Chrome, IE .
Установка и настройка
Скачать архив [isnt-logged]Вы не можете скачивать файлы с нашего сайта ,рекомендуем Вам parallaxslider.zip (1 Mb)[/is-logged]
Структура HTML состоит из главного контейнера с классом “pxs_container”. Мы добавим оформление для трех различных фонов, которые мы оживим по-разному, чтобы создать эффект параллакса. У фоновых изображений будет некоторая прозрачность, чтобы видеть, как они двигаются между собой.
Мы также добавим loading element и два не заказанных списка для полных изображений и уменьшенных изображений. Далее, мы добавим навигационные элементы.
Код самого слайдера размещаем там где хотим видеть слайдер
Код:
 <div id="pxs_container" class="pxs_container">
<div class="pxs_bg">
<div class="pxs_bg1"></div>
<div class="pxs_bg2"></div>
<div class="pxs_bg3"></div>
</div>
<div class="pxs_loading">Loading images...</div>
<div class="pxs_slider_wrapper">
<ul class="pxs_slider">
<li><img src="images/1.jpg" alt="First Image" /></li>
<li><img src="images/2.jpg" alt="Second Image" /></li>
...
</ul>
<div class="pxs_navigation">
<span class="pxs_next"></span>
<span class="pxs_prev"></span>
</div>
<ul class="pxs_thumbnails">
<li><img src="images/thumbs/1.jpg" alt="First Image" /></li>
<li><img src="images/thumbs/2.jpg" alt="Second Image" /></li>
...
</ul>
</div>
</div>
Теперь, настройка стиля.
CSS
Мы начнем с главного контейнера. Так как мы будем использовать целую страницу для ширины слайдера, мы установим его в 100%. Этот элемент будет иметь свойство position relative, потому что мы установим весь элемент внутри position absolute (и мы хотим, чтобы они были перемещались относительно контейнера а не страницы):
Код:
 .pxs_container{
width:100%;
height:420px;
position:relative;
border-top:7px solid #333;
border-bottom:7px solid #333;
overflow:hidden;
-moz-box-shadow:0px 0px 7px #000;
-webkit-box-shadow:0px 0px 7px #000;
box-shadow:0px 0px 7px #000;
}
У wrapper для отделений, которые будут содержать фоны параллакса, будет повторное фоновое изображение. Это изображение - просто простой градиент:
Код:
 .pxs_bg{
background:transparent url(../images/bg.png) repeat top left;
}
Блоки в wrapper совместно используют следующие свойства стиля:
Код:
 .pxs_bg div{
position:absolute;
top:0px;
left:0px;
height:420px;
background-repeat:repeat;
background-position:top left;
background-color:transparent;
}
Ширина будет установлена динамически в JavaScript. У фоновых блоков будут различные фоновые изображения:
Код:
 .pxs_bg .pxs_bg1{
background-image:url(../images/bg1.png);
}
.pxs_bg .pxs_bg2{
background-image:url(../images/bg2.png);
}
.pxs_bg .pxs_bg3{
background-image:url(../images/bg3.png);
}
Мы также установим left value этих блоков динамически. Но мы возвратимся к этому позже. Давайте посмотрим на стиль других элементов.
В начале следующая блок будет невидим:
Код:
 .pxs_slider_wrapper{
display:none;
}
Он содержит все элементы, которые мы хотим загрузить в начале, поэтому, как только загрузка будет сделано, мы покажем Блок и все содержимое.
Давайте сбросим стиль для обоих списков:
Код:
 .pxs_container ul{
margin:0px;
padding:0px;
list-style:none;
}
Основная идея для списка слайдера состоит в том, что мы делаем действительно длинный список со всеми элементами li, имеющими ширину целого окна. Так, что Вы видите на экране слайдера, фактически один целый li. Мы установим ширину ul динамически, чтобы ширина окна соответствовала числу изображений в списке. Присвоение свойства float left списку, и корректная ширины ul гарантирует, что элементы списка выстроены в линию друг рядом с другом:
Код:
 ul.pxs_slider{
position:absolute;
left:0px;
top:0px;
height:420px;
}
ul.pxs_slider li{
height:420px;
float:left;
position:relative;
}
Изображение слайдера в списке будет центрироваться горизонтально, применяя автоматические поля налево и право:

Код:
 ul.pxs_slider li img{
display:block;
margin:35px auto 0px auto;
-moz-box-shadow:0px 0px 7px #222;
-webkit-box-shadow:0px 0px 7px #222;
box-shadow:0px 0px 7px #222;
border: 8px solid transparent;
-moz-border-radius:4px;
-webkit-border-radius:4px;
border-radius:4px;
}
Добавление прозрачной границы и тени поля создаст эффект стекла вокруг изображения.
Список миниатюр будет позиционироваться абсолютно. Мы добавляем left of 50%, чтобы центрировать его, динамически устанавливая его ширину и отрицательное левое поле в JavaScript:
Код:
 
ul.pxs_thumbnails{
height:35px;
position:absolute;
top:320px;
left:50%;
}
ul.pxs_thumbnails li{
position:absolute;
display:block;
}
Мы добавим белую границу вокруг миниатюр и тень поля:
Код:
 
ul.pxs_thumbnails li img{
border: 5px solid #FFFFFF;
-moz-box-shadow:1px 1px 7px #555;
-webkit-box-shadow:1px 1px 7px #555;
box-shadow:1px 1px 7px #555;
cursor:pointer;
display:block;
opacity:0.7;
}
Миниатюры текущего изображения должны быть абсолютно непрозрачными:
Код:
 
ul.pxs_thumbnails li.selected img{
opacity:1.0;
}
Общий стиль двух кнопок навигации - следующее:
Код:
 
.pxs_navigation span{
position:absolute;
width:30px;
height:60px;
-moz-box-shadow:0px 0px 2px #000;
-webkit-box-shadow:0px 0px 2px #000;
box-shadow:0px 0px 2px #000;
top:145px;
opacity:0.6;
-moz-border-radius:4px;
-webkit-border-radius:4px;
border-radius:4px;
cursor:pointer;
}
.pxs_navigation span:hover{
opacity:0.9;
}
Давайте добавим стрелку к каждому кнопке навигации:

Код:
 .pxs_navigation span.pxs_prev{
background:#000 url(../images/prev.png) no-repeat center center;
}
.pxs_navigation span.pxs_next{
background:#000 url(../images/next.png) no-repeat center center;
}
Мы установим левое (pxs_prev) и право (pxs_next) значение динамически, чтобы придерживаться левой и правой стороны изображения.
И наконец, мы добавим загружающийся элемент:

Код:
 .pxs_loading{
color:#fff;
font-size:20px;
padding:15px 15px 15px 50px;
position:absolute;
background:#333 url(../images/ajax-loader.gif) no-repeat 10px 50%;
-moz-border-radius:15px;
-webkit-border-radius:15px;
border-radius:15px;
opacity:0.7;
width:180px;
position:absolute;
top:150px;
left:50%;
margin-left:-90px;
}

JAVASCRIPT
Основная идея этогослайдера состоит в том, чтобы двигать изображения (очевидно), и анимировать эти три фона по-разному, чтобы создать некоторую перспективу. Так, когда , например, будем скользить к следующему изображению, мы аниммируем левое значение слайдера ul к минус ширина окна (потому что это - ширина одного списка). Мы также аниммируем фоновый блок, который является визуально самым верхним фоном, но анимация будет половиной ширины окна. Фон, позади которого переместит одну четверть ширины окна и т.д. Таким образом, фон, который "более далек", переместит меньше, что описывает принцип параллакса.
Мы хотим создать плагин из этого скрипта, таким образом, мы первоначально определим некоторые опции. Мы запустим, кэшируя самые важные элементы.
Код:
 
(function($) {
$.fn.parallaxSlider = function(options) {
var opts = $.extend({}, $.fn.parallaxSlider.defaults, options);
return this.each(function() {
var $pxs_container = $(this),
o = $.meta ? $.extend({}, opts, $pxs_container.data()) : opts;

//the main slider
var $pxs_slider = $('.pxs_slider',$pxs_container),
//the elements in the slider
$elems = $pxs_slider.children(),
//total number of elements
total_elems = $elems.length,
//the navigation buttons
$pxs_next = $('.pxs_next',$pxs_container),
$pxs_prev = $('.pxs_prev',$pxs_container),
//the bg images
$pxs_bg1 = $('.pxs_bg1',$pxs_container),
$pxs_bg2 = $('.pxs_bg2',$pxs_container),
$pxs_bg3 = $('.pxs_bg3',$pxs_container),
//current image
current = 0,
//the thumbs container
$pxs_thumbnails = $('.pxs_thumbnails',$pxs_container),
//the thumbs
$thumbs = $pxs_thumbnails.children(),
//the interval for the autoplay mode
slideshow,
//the loading image
$pxs_loading = $('.pxs_loading',$pxs_container),
$pxs_slider_wrapper = $('.pxs_slider_wrapper',$pxs_container);

//first, preload all the images
var loaded = 0,
$images = $pxs_slider_wrapper.find('img');

$images.each(function(){
var $img = $(this);
$('<img/>').load(function(){
++loaded;
if(loaded == total_elems*2){
$pxs_loading.hide();
$pxs_slider_wrapper.show();

//width of an image
//(assuming all images have the same sizes)
var one_image_w = $pxs_slider.find('img:first').width();

/*
set the width of the slider,
of each one of its elements, and of the
navigation buttons
*/
setWidths($pxs_slider,
$elems,
total_elems,
$pxs_bg1,
$pxs_bg2,
$pxs_bg3,
one_image_w,
$pxs_next,
$pxs_prev);

/*
set the widths of the thumbs
and spread them evenly
*/
$pxs_thumbnails.css({
'width' : one_image_w + 'px',
'margin-left' : -one_image_w/2 + 'px'
});
var spaces = one_image_w/(total_elems+1);
$thumbs.each(function(i){
var $this = $(this);
var left = spaces*(i+1) - $this.width()/2;
$this.css('left',left+'px');

if(o.thumbRotation){
var angle = Math.floor(Math.random()*41)-20;
$this.css({
'-moz-transform' : 'rotate('+ angle +'deg)',
'-webkit-transform' : 'rotate('+ angle +'deg)',
'transform' : 'rotate('+ angle +'deg)'
});
}
//hovering the thumbs animates them up and down
$this.bind('mouseenter',function(){
$(this).stop().animate({top:'-10px'},100);
}).bind('mouseleave',function(){
$(this).stop().animate({top:'0px'},100);
});
});

//make the first thumb to be selected
highlight($thumbs.eq(0));

//slide, when clicking the navigation buttons
$pxs_next.bind('click',function(){
++current;
if(current >= total_elems)
if(o.circular)
current = 0;
else{
--current;
return false;
}
highlight($thumbs.eq(current));
slide(current,
$pxs_slider,
$pxs_bg3,
$pxs_bg2,
$pxs_bg1,
o.speed,
o.easing,
o.easingBg);
});
$pxs_prev.bind('click',function(){
--current;
if(current < 0)
if(o.circular)
current = total_elems - 1;
else{
++current;
return false;
}
highlight($thumbs.eq(current));
slide(current,
$pxs_slider,
$pxs_bg3,
$pxs_bg2,
$pxs_bg1,
o.speed,
o.easing,
o.easingBg);
});

/*
clicking a thumb will slide to the respective image
*/
$thumbs.bind('click',function(){
var $thumb = $(this);
highlight($thumb);
//if autoplay interrupt when user clicks
if(o.auto)
clearInterval(slideshow);
current = $thumb.index();
slide(current,
$pxs_slider,
$pxs_bg3,
$pxs_bg2,
$pxs_bg1,
o.speed,
o.easing,
o.easingBg);
});



/*
activate the autoplay mode if
that option was specified
*/
if(o.auto != 0){
o.circular = true;
slideshow = setInterval(function(){
$pxs_next.trigger('click');
},o.auto);
}

/*
when resizing the window,
we need to recalculate the widths of the
slider elements, based on the new window width;
we need to slide again to the current one,
since the left of the slider is no longer correct
*/
$(window).resize(function(){
w_w = $(window).width();
setWidths(
$pxs_slider,
$elems,
total_elems,
$pxs_bg1,
$pxs_bg2,
$pxs_bg3,
one_image_w,
$pxs_next,
$pxs_prev
);
slide(
current,
$pxs_slider,
$pxs_bg3,
$pxs_bg2,
$pxs_bg1,
1,
o.easing,
o.easingBg
);
});

}
}).error(function(){
alert('here')
}).attr('src',$img.attr('src'));
});
});
};

//the current window width
var w_w = $(window).width();

var slide = function(current,
$pxs_slider,
$pxs_bg3,
$pxs_bg2,
$pxs_bg1,
speed,
easing,
easingBg){
var slide_to = parseInt(-w_w * current);
$pxs_slider.stop().animate({
left : slide_to + 'px'
},speed, easing);
$pxs_bg3.stop().animate({
left : slide_to/2 + 'px'
},speed, easingBg);
$pxs_bg2.stop().animate({
left : slide_to/4 + 'px'
},speed, easingBg);
$pxs_bg1.stop().animate({
left : slide_to/8 + 'px'
},speed, easingBg);
}

var highlight = function($elem){
$elem.siblings().removeClass('selected');
$elem.addClass('selected');
}

var setWidths = function($pxs_slider,
$elems,
total_elems,
$pxs_bg1,
$pxs_bg2,
$pxs_bg3,
one_image_w,
$pxs_next,
$pxs_prev){
/*
the width of the slider is the window width
times the total number of elements in the slider
*/
var pxs_slider_w = w_w * total_elems;
$pxs_slider.width(pxs_slider_w + 'px');
//each element will have a width = windows width
$elems.width(w_w + 'px');
/*
we also set the width of each bg image div.
The value is the same calculated for the pxs_slider
*/
$pxs_bg1.width(pxs_slider_w + 'px');
$pxs_bg2.width(pxs_slider_w + 'px');
$pxs_bg3.width(pxs_slider_w + 'px');

/*
both, the right and left of the
navigation next and previous buttons will be:
windowWidth/2 - imgWidth/2 + some margin
(not to touch the image borders)
*/
var position_nav = w_w/2 - one_image_w/2 + 3;
$pxs_next.css('right', position_nav + 'px');
$pxs_prev.css('left', position_nav + 'px');
}

$.fn.parallaxSlider.defaults = {
auto : 0,
speed : 1000,
easing : 'jswing',
easingBg : 'jswing',
circular : true,
thumbRotation : true
};
//easeInOutExpo,easeInBack
})(jQuery);
Мы также добавляем следующий сценарий, чтобы инициировать наш слайдер:
Код:
 
$(function() {
var $pxs_container = $('#pxs_container');
$pxs_container.parallaxSlider();
});
Опции для слайдера - следующее:
auto: Сколько секунд, чтобы периодически двигать содержание. Если установлено в 0 тогда автоматическое воспроизведение выключено.
speed: Скорость анимации
easing: Упрощение эффекта для анимации понижения
easingBg: Упрощение эффекта для фоновой анимации
circular: Круговой ползунок
thumbRotation: Слайдер будет работать в случайном порядке
Ну вроде все ,пользуемся

Хак cкользящая панель - Portamento

2013-09-19 16:01:12 (читать в оригинале)

Оригинальная скользящая панель - Portamento , где основное функционирование завязана на использовании Jquery плагина Portamento. Сам плагин написан программистом Крисом Нобелем, главная особенность - это динамически передвигающийся по мере прокрутки слой с вашим содержимым.

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

Установка проста и выполняется за пару шагов:
1. Скачиваем архив [isnt-logged]Вы не можете скачивать файлы с нашего сайта ,рекомендуем Вам hak_portamento.zip (46.96 Kb)[/is-logged]
2. Раскладываем содержимое по папкам

portamento.js (или portamento-min.js) -> templates/YOURTEMPLATE/js/

3. Открываем main.tpl, в head вставляем
Код:
 <script src="{tpl_url}/js/portamento.js"></script>

4. Добавим CSS стили. Portamento оборачивает панель в элемент с ID = portamento_container.
#portamento_container обеспечивает правильное положение панели, устанавливая ей свойство position:absolute.
Панель получает класс fixed, когда она скользит. Поэтому для нее надо установить свойство position:fixed.
Например:
Код:
 #portamento_container {
float:right;
position:relative;
}

#portamento_container #example {
float:none;
position:absolute;
}

#portamento_container #example.fixed {
position:fixed;
}
5. Настроить панель.
Для начала нам нужно понять в каких пределах будет "ездить" наш слой (панель).

Для такой разметки, чтобы слой #r-slide ездил внутри слоя #right-side
в main.tpl вставляем код
Код:
 <script>
$('#r-slide').portamento({wrapper: $('#right-side'), gap: 10});
</script>

Portamento можно настроить за счет входных данных:
wrapper - элемент необходимый, чтобы ограничивать перемещение боковой панели. Боковая панель не может выйти за его границы. По умолчанию используется элемент .
gap - количество пикселов между верхней границе области обзора и боковой панелью. По умолчанию имеет значение 10.
disableWorkaround - отключает использование обходного способа для старых браузеров. Панель будет выводиться, но не будет скользить при прокручивании страницы.


Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.