Архив - только для чтения
Архив темы: Информеры
Undead6925
Сообщений: 1
Репутация: 0

Сообщение # 1156 | 19:02:16
Есть ли возможность выводить в информер через
Code
$MESSAGE$
не весь текст, а только часть.
Fox2
Сообщений: 75
Репутация: 4

Сообщение # 1157 | 10:37:34
Quote (Undead6925)
Есть ли возможность выводить в информер через
$MESSAGE$
1
не весь текст, а только часть.


Можно. Я так делал один раз давно. Нужен код типа такого

<?if(len($MESSAGE$)>55)?><?substr($MESSAGE$,0,53)?>...<?else?>$MESSAGE$<?endif?>

Цифры это количество букв в тексте. Но я не уверен работает ли такой код сейчас.
Livandey
Сообщений: 35
Репутация: 3

Сообщение # 1158 | 15:31:32
Quote (Livandey)
Quote (ERUDIT)
Livandey, не будут работать

используйте Рейтинг +/-

а этот рейтинг можно будет вставить в информер для голосования? потому что звездочки у меня вставить не получалось.

мне бы и звездочек хватило, только не понятно как их пропи


ну и ?
Безымянный3727
Сообщений: 25
Репутация: 3

Сообщение # 1159 | 18:09:27
Доброго времени суток!

Тема: Информеры, фильтры, каталог файлов
Вопрос из разряда: Как сделать?

Описание: Имеется каталог файлов, который разделён на 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
Сообщений: 6
Репутация: 0

Сообщение # 1160 | 00:27:43
Как сделать так, чтобы в информере выводились последние добавленные файлы.
Например у меня на сайте 5 файлов, добавляю шестой, и в информере тоже уберается первый и добавляется шестой.
webanet
Сообщений: 24067
Репутация: 4985

Сообщение # 1161 | 00:37:50
RipperMan, создайте информер для каталога файлов. выберите сортировку. проставьте количество материалов 5. при добавлении файла ждите обновления информера 15+ минут.

ТУТ можно оставить своё мнение по любому вопросу
https://webanetlabs.net/
RipperMan
Сообщений: 6
Репутация: 0

Сообщение # 1162 | 11:22:07
Ааа, я вначале тоже так сделал, просто информер не обновлялся сразу. Оказывается нужно 15 минут подождать. Спасибо.
Безымянный3727
Сообщений: 25
Репутация: 3

Сообщение # 1163 | 21:06:51
В общем-то, свой вопрос свёл к минимуму. Задаю его ещё раз с частичным повторением описания.

Имеется каталог файлов, который разделён на 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
С Уважением, Безымянный
sch779
Сообщений: 703
Репутация: 348

Сообщение # 1164 | 05:20:13
Безымянный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 начинается и заканчивается кавычками
Про "экранирование" Вы, судя по всему, ничего не знаете? Тогда - почитайте про это в доке по javascript. С помощью "экранирования" в кавычках можно написать хоть весь код сайта! Не говоря уже про обычные теги img и style.
К примеру:
Code
<a href="javascript://" onclick="document.getElementById(\"mytext\").innerHTML = \"$TITLE$\";">$TITLE$</a> </br>

Согласен - не очень удобно, но - можно!
Безымянный3727
Сообщений: 25
Репутация: 3

Сообщение # 1165 | 15:05:58
sch779,
На самом деле я разбираюсь в вёрстке сайта или в дизайне, но не в скриптах. Если честно, то это мой первый скрипт) Я старался его сделать и разбирал разные функции, так что... Я прошу прощения за своё незнание, я обязательно почитаю на данную тему.

Извините, но у меня есть один вопрос. Предположим, информер выводит 20 материалов. Можно ли сделать так, чтобы он выводил, например, с 1-10 материалы и 11-20 материалы. То есть, написать, допустим, код с использованием условных операторов или в самом информере.

Просто у меня такая ситуация, что информер является частью древовидного меню. Он выводит 300 материалов, а мне это нужно в древовидном меню распределить по категориям. Кучу информеров не сделать, так как их всего 30. Есть ли решение? Я осмотрел все темы Юкоза, не нашёл. Так что смотрел на хелпере, в гугле и likbezz.ru. Вроде бы было написано, что данный вариант невозможен.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 1166 | 19:31:39
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 теперь находится весь код страницы, из которого можно выделить нужные данные})
Если, к примеру, код информера выводит только a-ссылки, то можно получить первые 10 ссылок из этого информера таким кодом:
Code
$.get("\techpage\",function(data){a10 = $("div#informer a",$data).slice(0,10)})
После выполнения этого кода в массиве a10 будут находиться первые 10 ссылок, выведенных информером.

Единственное, что следует учесть при такой технологии - желательно свести к минимуму такие запросы на страницы своего сайта. В противном случае можно "нарваться" на временную блокировку IP-адресов самых активных пользователей со стороны ucoz-защиты от DDOS-атак. Поэтому, лучше всего в одном get-запросе прочитать сразу весь вывод информера, сохранить в массиве и уже далее работать только с ним.
Безымянный3727
Сообщений: 25
Репутация: 3

Сообщение # 1167 | 23:36:34
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-е. Дублирование функции, или что-то типо?

Ещё раз извините... :(
sch779
Сообщений: 703
Репутация: 348

Сообщение # 1168 | 03:38:08
Я использую сокращенную форму $.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
Безымянный3727
Сообщений: 25
Репутация: 3

Сообщение # 1169 | 04:22:30
Что же, почему-то не работает. Если ещё не устали разбираться с данным вопросом, то даю вам ссылку на информер, а так же ссылку на страницу, где необходим вывод материалов. По сути то, что я сделал, так это вставил ниже предложенный вами вариант на страницу. Скрипт в 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 подключил. В общем, не работает.
leks5
Сообщений: 5
Репутация: 0

Сообщение # 1170 | 18:26:04
Здравствуйте. помогите поржалуйста как сделать информер с картинками модуль новости сайта. картинки все загружены не на сайт а на фото хостинг. буду очень благодарен. да и чтобы картинки были уменьшены

вот я сделал вот такой информер только как сделать чтобы картинки уменьшалис по размеру блока <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
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!