Архив - только для чтения |
| Сообщество uCoz Архивариус Архив Архив темы: Информеры |
| Архив темы: Информеры |
|
Есть ли возможность выводить в информер через
Code $MESSAGE$ |
|
Quote (Undead6925) Есть ли возможность выводить в информер через $MESSAGE$ 1 не весь текст, а только часть. Можно. Я так делал один раз давно. Нужен код типа такого <?if(len($MESSAGE$)>55)?><?substr($MESSAGE$,0,53)?>...<?else?>$MESSAGE$<?endif?> Цифры это количество букв в тексте. Но я не уверен работает ли такой код сейчас. |
|
Quote (Livandey) Quote (ERUDIT) Livandey, не будут работать используйте Рейтинг +/- а этот рейтинг можно будет вставить в информер для голосования? потому что звездочки у меня вставить не получалось. мне бы и звездочек хватило, только не понятно как их пропи ну и ? |
|
Доброго времени суток!
Тема: Информеры, фильтры, каталог файлов Вопрос из разряда: Как сделать? Описание: Имеется каталог файлов, который разделён на 2 части. Слева древовидное меню, а справа – список материалов. Я пытаюсь построить работу меню таким образом, чтобы в нём находились ссылки, при нажатии на которые появлялся конкретный материал вместо всего списка материалов. Осуществление: Я создал информер следующего плана «Каталог файлов» - «Материалы» - «Название материала» - «Ограничение по категориям». Создал фильтр с несколькими категориями. Добавил фильтр и скрипт в информер. Получилось следующее: Code //*************Скрипт для выявления cont2 вместо cont1 <script> $(function(){ $("#button$ID$").click(function(){ $("#cont2").show(); $("#cont1").hide(); }); }); </script> //*************Вызываемый в cont2 текст <?if($ID$)?><div id="cont2" style="display:none;">Вызываемый текст</div><?endif?> //*************Участок древовидного меню с фильтром <?if($FILTER1$)?> <ul class="Container"> <li class="Node ExpandClosed"> <div class="Expand"></div> <div class="Content"><span class="text">$FILTER1$</span></div> <ul class="Container"> <li class="Node ExpandLeaf IsLast"> <div class="Expand"></div> <div class="Content"><div id="button$ID$"><span class="text"><?if($TITLE$)?>$TITLE$<?endif?></span></div></div> </li> </ul> </li> </ul> <?endif?> Данный информер я установил на главную страницу каталога файлов. В итоге, выявляется несколько багов. Во-первых, материалы с одинаковым фильтром не собираются в один фильтр. Название фильтра постоянно дублируется. Во-вторых, всегда вызывается содержание первого материала в списке, а не для каждой ссылки свой материал. В общем-то, пытаюсь найти различные решения. Может быть, кто-то сможет подсказать? Ссылка на страницу: http://nimpo-world.at.ua/load С уважением, Безымянный |
|
RipperMan, создайте информер для каталога файлов. выберите сортировку. проставьте количество материалов 5. при добавлении файла ждите обновления информера 15+ минут.
|
|
В общем-то, свой вопрос свёл к минимуму. Задаю его ещё раз с частичным повторением описания.
Имеется каталог файлов, который разделён на 2 части. Слева древовидное меню, а справа – список материалов. Я пытаюсь построить работу меню таким образом, чтобы в нём находились ссылки, при нажатии на которые появлялся конкретный материал вместо всего списка материалов. Список материалов я вывожу информером, а выбор среди материалов делаю за счёт innerhtml. Ниже код информера: Code <script> function popup() { document.getElementById('mytext').innerHTML = '$TITLE$'; } </script> <a href="javascript://" onclick="popup()">$TITLE$</a> </br> Я сталкиваюсь с одной и той же проблемой – если прописывать innerhtml скриптом, то всегда выводится информация о последнем материале списка. Если ставить innerhtml в саму ссылку к заголовку, то всё нормально работает. Ниже пример рабочего кода: Code <a href="javascript://" onclick="document.getElementById('mytext').innerHTML = '$TITLE$';">$TITLE$</a> </br> Однако, в силу того, что функция onlick начинается и заканчивается кавычками, я не могу поставить туда ни картинки, ни оформления стилями, ничего, только голый текст, поэтому подобное решение меня не устраивает. Может кто-то предложить решение в данной ситуации? Здесь дело не в скрипте, а скорее всего специфике тегов или информера. Должны быть нюансы… Сайт: http://nimpo-world.at.ua/load С Уважением, Безымянный |
|
Безымянный3727, если Вы посмотрите готовый код Вашей странички в впервом случае, то увидите столько функций popup, сколько материалов выведено информеров! И как Вы думаете - если вызвать функцию popup, то какая из них вызовется?! Естественно, что последняя по счету! Т.е., функция popup для последнего материала, выведенного информером.
Самое простое решение - использовать в информере счетчик материалов для нумерации этих функций: Code <script> function popup$NUMBER$() { document.getElementById('mytext').innerHTML = '$TITLE$'; } </script> <a href="javascript://" onclick="popup$NUMBER$()">$TITLE$</a> </br> Quote (Безымянный3727) Однако, в силу того, что функция onlick начинается и заканчивается кавычками К примеру: Code <a href="javascript://" onclick="document.getElementById(\"mytext\").innerHTML = \"$TITLE$\";">$TITLE$</a> </br> Согласен - не очень удобно, но - можно! |
|
sch779,
На самом деле я разбираюсь в вёрстке сайта или в дизайне, но не в скриптах. Если честно, то это мой первый скрипт) Я старался его сделать и разбирал разные функции, так что... Я прошу прощения за своё незнание, я обязательно почитаю на данную тему. Извините, но у меня есть один вопрос. Предположим, информер выводит 20 материалов. Можно ли сделать так, чтобы он выводил, например, с 1-10 материалы и 11-20 материалы. То есть, написать, допустим, код с использованием условных операторов или в самом информере. Просто у меня такая ситуация, что информер является частью древовидного меню. Он выводит 300 материалов, а мне это нужно в древовидном меню распределить по категориям. Кучу информеров не сделать, так как их всего 30. Есть ли решение? Я осмотрел все темы Юкоза, не нашёл. Так что смотрел на хелпере, в гугле и likbezz.ru. Вроде бы было написано, что данный вариант невозможен. |
|
Quote (Безымянный3727) Можно ли сделать так, чтобы он выводил, например, с 1-10 материалы и 11-20 материалы. В любом информере доступна переменная $NUMBER$, которая принимает значение текущего выводимого информера. Т.е., если необходимо, к примеру, вывести информером первые 10 материалов, то в шаблон информера вставляем: Code <?if($NUMBER$ <= 10)?> код самого информера <?endif?> Правда, управлять этим нельзя! Т.е., такой информер будет всегда выводить первые 10 материалов. Но можно поступить по другому: - вывести этот информер на отдельную служебную страницу сайта, на которую можно попасть только по прямому адресу. Что бы при формировании этой страницы на нее не выводились глобальные шаблоны, то делаем для этой страницы отдельный шаблон из которого выбрасываем все и вставляем в него только код вывода информера, завернутый в div-блок с идентификатором, к примеру так <div id="informer">$MYINF_10$</div> - перед построением "дерева" с помощью Ajax get-запроса читаем весь код, выведенный информером, с этой служебной страницы: Code $.get("\techpage\",function(data){в data теперь находится весь код страницы, из которого можно выделить нужные данные}) Code $.get("\techpage\",function(data){a10 = $("div#informer a",$data).slice(0,10)}) Единственное, что следует учесть при такой технологии - желательно свести к минимуму такие запросы на страницы своего сайта. В противном случае можно "нарваться" на временную блокировку IP-адресов самых активных пользователей со стороны ucoz-защиты от DDOS-атак. Поэтому, лучше всего в одном get-запросе прочитать сразу весь вывод информера, сохранить в массиве и уже далее работать только с ним. |
|
sch779,
Вы достаточно подробно объяснили, но я бы хотел разобраться. В принципе, мои рассуждения и приведут к результату. Функция $.get() является сокращенным вариантом функции $.ajax(), поэтому вы опускаете такие параметры, как url, data, success и dataType. Так же вы используете $get потому, что запрос предполагается быть удачным. Если нужно выполнять функции как в случае удачного завершения запроса, так и в случае ошибки, то мы бы с вами использовали $ajax. Так... Но вот скрипт я ваш не понимаю. Code $.get ( - это функция? "\techpage\", - это путь function(data) - или это функция... {a10 = $("div#informer a",$data).slice(0,10)} ) Я прошу прощения за своё непонимание. Я не могу найти в интернете ничего путного. На большинстве сайтов сделан акцент на $ajax, а если используется $get, то сделано это подобным образом: Code var blabla = $.get("ссылка") .success(function() { alert("Успешное выполнение"); }) Что касается нашего вопроса, то я создал новую страницу, поставил ей персональный шаблон, стёр оттуда всё, добавив лишь див с информером. Далее, на странице категории каталога файлов поставил скрипт перед head. Он выглядит у меня таким образом: Code <script> $.get("/index/0-4",function(data){a5 = $("div#informer a",$data).slice(0,5)}) </script> Я пробовал ссылку писать по-разному... Вызов функции я написал на этой же странице со скриптом следующим образом: Code <a href="javascript://" onlick="function(data)">Item 1</a> Вызывал я ответ на запрос вот так: Code <div id="data"></div> Не работает, однако. Скорее всего дело в странице, или я что-то не так понял/сделал. Так же я понял, что нужно использовать один get-запрос, потому что он является обращением к странице. Если их будет много, то это воспримится как дос-атака сервера. Но я не знаю, как будет правильнее сделать несколько запросов в одном get-е. Дублирование функции, или что-то типо? Ещё раз извините... ![]() |
|
Я использую сокращенную форму $.get, которая используется в версиях jQuery ниже 1.5
Она предпалагает только одну callback-функцию, которая будет вызвана при успешном завершении запроса. Для версий начиная с 1.5 можно использовать расширенный синтаксис $.get, который предполагает использование нескольких функций-обработчиков для разных сценариев завершения запроса. Так как мы делаем запрос на свои-же страницы и результат запроса будет виден практически всегда в интерфейсе, то не думаю, что есть смысл добавлять в запрос обработчик ошибки. Что делать-то в этом случае? Просто выдать сообщение об ошибке? Так в Вашем случае пользователь и так все поймет по отсутствию дерева каталога! Итак, первый параметр - путь к странице, которую читаем. Читать таким образом можем только страницы сайтов своего домена. Второй параметр - функция, которая будет вызвана при успешном завершении запроса. В эту функцию в параметре data будет передан весь текст читаемой страницы. Более подробно по jQuery и Ajax можно почитать здесь или здесь. Я не понял Вашего кода: Code <a href="javascript://" onlick="function(data)">Item 1</a> Ведь запрос уже произведен и считанные данные находятся в переменной a5, которая содержит список первых пяти ссылок из информера в виде jQuery-объектов! Просто проверьте их наличие кодом: Code <a href="javascript://" onlick="alert(a5.length);">Item 1</a> Сам код запроса лучше выполнять после полной загрузки страницы: Code <script> $(function(){ $.get("/index/0-4",function(data){a5 = $("div#informer a",$data).slice(0,5)}) }); </script> Если выведет 0, то надо смотреть реальный HTML-код служебной страницы с информером - есть-ли там хоть что-то. По поводу множественных запросов - зачем Вам несколько запросов? Можно, в принципе, все необходимые информеры выводить на одну страницу - одним запросом читаем весь код этой страницы и дальше уже спокойно, по мере надобности, выбираем из считанного кода нужные данные. Сообщение отредактировал sch779 - Суббота, 27 Окт 2012, 03:39:51
|
|
Что же, почему-то не работает. Если ещё не устали разбираться с данным вопросом, то даю вам ссылку на информер, а так же ссылку на страницу, где необходим вывод материалов. По сути то, что я сделал, так это вставил ниже предложенный вами вариант на страницу. Скрипт в head, ссылку в качестве пункта меню. <div id="data"></div> я так же добавил в качестве пункта меню.
Информер: http://nimpo-world.at.ua/index/sluzhebnaja_stranica/0-4 Страница вывода: http://nimpo-world.at.ua/load/video/2 Страница вывода (без всего): http://nimpo-world.at.ua/load/ P.S. Я восстановил оформление в информере, так что коды в нём мешать не должны. Название ссылки после $.get я пробовал писать с "/" и без неё, полное с "sluzhebnaja_stranica" и без. Разницы никакой. Пробовал вставить html-документ из файлового менеджера - никакой разницы. Сделал страницу, где убрано всё, кроме ссылки и кода (мало ли, скрипт блокировал). Разумеется, jquery подключил. В общем, не работает. |
|
Здравствуйте. помогите поржалуйста как сделать информер с картинками модуль новости сайта. картинки все загружены не на сайт а на фото хостинг. буду очень благодарен. да и чтобы картинки были уменьшены
вот я сделал вот такой информер только как сделать чтобы картинки уменьшалис по размеру блока <table class="infTable" border="0" cellpadding="2" cellspacing="1" width="100%"><tbody><tr><td style="" width="50%"></td><td style="" align="right" nowrap="nowrap"><?if($CATEGORY_NAME$)?><?endif?></td></tr><tr><td class="infTitle" colspan="2"><span style="font-size: 10pt;"><a href="$ENTRY_URL$"> <b>$TITLE$</b> </a></span> <div class="infMessage"><span style="font-size:6pt;">$MESSAGE$</span></div><span title="Comments"> </span></td></tr></tbody></table> |
| |||
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!

Чат сообщества





Т.е., такой информер будет всегда выводить первые 10 материалов.