Появилось несколько вопросов касательно юкоза... Сам их решить не смог, недели две наверное бьюсь. Вот решил написать.)
У меня есть несколько информеров. Каждый выводит последние материалы из всех активных модулей.
На все эти информеры распрострянется действие сортировщика, чтобы материалы шли в правильном порядке (ну, лента в общем).
Задача состоит в следующем. Как сделать общий переключатель по материалам информеров? То есть отсчиталось 30 материалов (как пример), последующие материалы обрубаются и доступны уже на другой, так сказать, странице.
Я прочел вот эту тему - http://likbezz.ru/forum/68-762-9581-16-1336339366 Круто, но сумел применить только к информерам по отдельности.
На всякий случай прикрепляю сортировщик:
Код
<div id="feed"> $MYINF_1$ $MYINF_2$ $MYINF_3$ $MYINF_4$ $MYINF_5$ </div> <script type="text/javascript"> function parseDate(input) { var parts = input.match(/(\d+)/g); return new Date(parts[2],parts[1]-1,parts[0],parts[3]-1,parts[4]-1,Math.random()).getTime(); } $(document).ready(function() { var elems = $.makeArray($('#feed .feed-item')); elems.sort(function(a, b) { if (parseDate($(a).find('.feed-date').text()) > parseDate($(b).find('.feed-date').text())) return -1; if (parseDate($(a).find('.feed-date').text()) < parseDate($(b).find('.feed-date').text())) return 1; return 0; }); $('#feed').html(elems); }); </script>
Обрамление даты в информере:
Код
<span class="feed-date">$DATE$ в $TIME$</span>
Вишу на этом сайте с самого начала пребывания на юкозе. Просто кладезь знаний, спасибо. Надеюсь, что с моими вопросами тоже получится найти решение.)
likbezz, ура, вы пришли.)) Вчера заснул, так и не дождался.
Цитата
Ну, можно через табы - вкладки, .. для этого нужен скрипт самих вкладок и модифицировать сортировщик, что бы он формировал html код для табов. По сути - там должны быть управляющие элементы - список страниц, и блоки контента. По завершению формирования кода, запускать скрипт вкладок.
Поможете? Мне бы хоть самый простенький пример. Реально ничего не получается, как не пытался.(
likbezz, офигеть. оО Прям конкретно под наш сайт... Спасибо.)) Сейчас пробовать буду.) Немного позже отпишусь.
Добавлено (02.08.2014, 20:28) --------------------------------------------- likbezz, все, разобрался.)) Только одно не понял - как сделать, чтобы страница при переключении поднялась наверх (к верхним подгруженным материалам)?
У нас точного количество материалов в каждом информере нет. То есть там может быть и 50 и 100 и больше. Сколько добавлено, столько и выводится (это первоначальная идея).
likbezz, можете показать как сделать так, чтобы были не переключатели, а кнопка "Подгрузить еще"? И так до тех пор, пока не кончаться материалы в информерах.
Извините, что не сразу донес мысль. Только сейчас дошло, что придется вручную добавлять переключатели страниц (в зависимости от увеличения объема материала).
Хотя сам виноват, надо было правильно писать. Возможно, что "такую кнопку" делать дольше . Тогда бы просто решить проблему с "поднятием страницы наверх".) А то при переключении не очень удобно...
likbezz, большое спасибо!! Просто супер. Знал, что здесь точно помогут.
Вот... Из "накипевшего" у меня осталось два вопроса. Задам сначала самый идиотский (вам странным образом удалось сделать так, что вы единственный в сети у кого мне не стремно просить помощи. оО)
Данная часть просто проверяет наличие подгруженного контента, и заменяет историю.
Мда... *Чешет затылок*. Ну, ладно. Какие наши годы. хд Зато вкуривать работу скрипта наконец начал.
Цитата
пихаем код открытия окошка, типа:
Все, дошло.)) Спасибо.)
Пошел устанавливать это все и любоваться.) Скоро вернусь с нашей третьей Ахиллесовой пятой.))
Добавлено (04.08.2014, 09:23) --------------------------------------------- likbezz, а можно к функции закрытия аякс-окна (http://arkham-world.ru/snimok.png) привинтить события onclick-а этой кнопки
Просто первоначально скрипт подразумевал закрытие новости по повторному щелчку по названию. И если просто закрыть аякс-окно, адрес подгруженного материала так и остается в адресной строке... Ох.(
Добавлено (04.08.2014, 09:52) --------------------------------------------- likbezz, как раз писал.))
Добавлено (04.08.2014, 09:54) --------------------------------------------- likbezz, likbezz, вооот... Кайф. Теперь идеал.
Добавлено (04.08.2014, 22:54) --------------------------------------------- likbezz, ура. Закончил с лентой.)
Вот и третья наша проблема...
Скрипт
Код
function offset(a) { for (var b = 0; a;) b += parseInt(a.offsetTop), a = a.offsetParent; return b } var s = !0; window.onload = function () { var a = document.querySelector(".utility_bar"), b = offset(a), f = window.getComputedStyle ? getComputedStyle(a, "") : a.currentStyle, d = a.offsetHeight + parseInt(f.marginTop) || 0, e = offset(document.querySelector(".shoes")); window.onscroll = function () { var c = window.pageYOffset || document.documentElement.scrollTop, c = e - (c + d + b); s != 0 < c && ((s = 0 < c) ? (a.style.top = b + "px", a.style.position = "fixed") : (a.style.top = e - d + "px", a.style.position = "absolute")) } };
Суть в том, чтобы абсолютно позиционированный блок замирал над футером. И все хорошо, но при смене высоты страницы (а это дело плевое... Добавил коммент - уже новая высота) скрипт фиксируется на месте, где стоит и дальше никуда. Так и висит там. Исправить не удалось. Не понимаю как сделать так, чтобы скрипт принимал и новую высоту страницы... Скорее всего вообще неправильно подхожу к решению вопроса.(
likbezz, оО Круто. Я это пробовал. Не думал, что на верном пути.
Ну, в силу своих извилин "я это пробовал". Скорее всего и не правильно. Но приятно, что хоть в теории догадался. хд
Вот так это было:
Код
function offset(a) { for (var b = 0; a;) b += parseInt(a.offsetTop), a = a.offsetParent; return b } var s = !0; window.onload = function () { var a = document.querySelector(".utility_bar"), b = offset(a), f = window.getComputedStyle ? getComputedStyle(a, "") : a.currentStyle, d = a.offsetHeight + parseInt(f.marginTop) || 0, e = offset(document.querySelector(".shoes")); window.onscroll = function () { var c = window.pageYOffset || document.documentElement.scrollTop, c = e - (c + d + b); s != 0 < c && ((s = 0 < c) ? (a.style.top = b + "px", a.style.position = "fixed") : (a.style.top = e - d + "px", a.style.position = "absolute"))
var a = document.querySelector(".utility_bar"), b = offset(a), f = window.getComputedStyle ? getComputedStyle(a, "") : a.currentStyle, d = a.offsetHeight + parseInt(f.marginTop) || 0, e = offset(document.querySelector(".shoes")); } };
Что-то вроде... И несколько других вариантов, но там однозначно неправильно. Дальше пробую.)
Добавлено (06.08.2014, 04:24) --------------------------------------------- Нет. Не выходит.(
Добавлено (06.08.2014, 04:26) --------------------------------------------- И по ходу дела возник вопрос (скорее философский, просто интересно):
likbezz, на главной странице (и вообще на всех остальных страницах) основной блок (с контентом / меню и т.д.) имеет относительное позиционирование. У футера (который живет своей отельной жизнью от верхнего блока) также прописано relative.
body не указано позиционирование.
Для примера пробовал указать и телу relative. Тогда со всеми окнами (лайтбокс / аякс) происходит беда и они смещаются вниз, к футеру.
В общем так и жили...) Никаких проблем не было, окна открывались правильно.
А сейчас заметил какой-то бред. Все окна на странице с личными сообщениями ведут себя так словно body прописано статик или релатив. Все закрывающие теги проверил.
Вы не знаете... Зачем юкоз это делает? хд
Добавлено (06.08.2014, 04:31) --------------------------------------------- Юкоз, юкоз... Шутник. Указанный доктайп в настройках не распространяется на страницу с лс. Сволочь. Я даже не смотрел туда (наверх).
Блин. Уже минут 40 вишу в исходнике страницы с лс, пытаясь определить id-ишник окна со смайлами и понять - почему, если футеру через импортант указать на этой странице абсолютное позиционирование - он не сдвигается наверх (как и должен), а стоит себе внизу и окна при том открываются правильно.
Вопрос доктайпом решить удалось, но спасибо.) Очень может быть пригодится...
Цитата
Ср, 06.08.2014, 13:25:21[/url]попробуй приспособить вот этот скрипт: http://likbezz.ru/forum/87-1572-29634-16-1384049066
Я с него и начинал.) Пытался переделать, но появилось ощущение что на 10 версии jquery не будет работать (пробовал вставлять 1.7.2 - работало... 10 уже обжили, жалко было убирать).
Хотя сейчас снова пытался этот скрипт под нас переделать. Еще довольно обширную статью нашел по теме плавающих блоков. Потом еще одну... Масса вариантов и не один не подошел. Все-равно зависает где-то в воздухе, если меняется высота страницы.
Буду дальше мучить.)
likbezz, больше надоедать не буду.) Большое спасибо! Без этого сайта - нашей ленты не было бы. А сейчас просто загляденье. Масса полезных решений. Еще ни одного такого ресурса не встречал.
Наставил бы плюсов, но доступа нет.)) Картинку тоже вроде вставить не получится, так что вот - http://arkham-world.ru/AW_v5/img/hand1.png
Предисловие короткое.) Решил подключить на сайт пару каналов для просмотра онлайн.
Теперь о том, что я успел изучить:
http://www.acorp.ru/support/books/sputnik/?part22 - в общем все понятно (насколько это может быть, учитывая практически нулевые знания в этом вопрос). Этот же вариант (опять же исходя из знаний) больше всех понравился. http://habrahabr.ru/post/179169/ - так то тоже все ясно. http://tvforsite.ru/
Вот... Но честно говоря... Наверное не там смотрел.
В общем, вот вопросы.
1. Если время есть и вообще не скучно), очень хотелось бы услышать небольшого ввода в тему (как здесь например - http://likbezz.ru/publ/ucoz/scripts/about_creating_uwnd_ajax_windows_examples_of_implementation/29-1-0-85 - после этой статьи тема аякс-окон полностью прояснилась и уже более сложные задачи не казались "черной магией"). Совсем плохо представляю ситуацию пока. 2. Без сторонних утилит реализовать мою задачу возможно (более менее в земных рамках и так, чтоб на юкозовском сайте работало)? 3. Какое из решений тебе кажется самым оптимальным (какое бы сам стал использовать)?
Уточню насчет ТвДляСайта - сигнал разочаровал (не считая первого канала). В первый день вообще не работал, во второй с перебоями, в третий - работает. В общем, не очень хочется зависеть от таких перепадов (хоть и привыкли)).
Так... Да, наверное все.
Отвел вопросу отдельную тему. Если тему разовьешь - для поисковиков в плюс.) Или может переместишь в "Как сделать" или еще куда... Название и описание постарался наиболее правильно составить. Очень жду помощи.
likbezz, в общем, остановился на http://tvforsite.ru/ Самый лучший вариант.
Разобрался и с созданием собственного аналога ТвДляСайта. Но для этого (опираясь на вариант, который изучал) потребуются определенные вложения на некоторое оборудование. хд В общем, потом как-нибудь, если заняться будет нечем и деньги будут лишние.)