Как сделать блок вывода случайных фраз?

Аватар пользователя kompas kompas 7 сентября 2009 в 2:38

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

Комментарии

Аватар пользователя Shedko Shedko 7 сентября 2009 в 2:55

Формат ввода php


<?php
$fcontents1 
join (''file ('text/tips.txt'));
$s_con1 split("~",$fcontents1);
$banner_no1 rand(0,(count($s_con1)-1));
echo 
$s_con1[$banner_no1];
?>

в файл tips.txt прописываем

Совет <strong>1</strong>
~
Совет 2 <a href="d" title="d"></a>
~
Совет <em>3</em>

Т.е. в этом файле просто "куски" кода для вставки в нужное место, разделены "куски" символом ~

Аватар пользователя Janer Janer 7 сентября 2009 в 7:48

Модулькак раз рандомом выводит фразы, цитаты, изображения в блок

Аватар пользователя kompas kompas 7 сентября 2009 в 13:46

Shedko, а куда tips.txt заливать? Залил в корень, ничего не показывает.
С Quotes тоже пока не разобрался куда там фразы вставлять

Аватар пользователя Shedko Shedko 13 сентября 2009 в 16:50

"kompas" wrote:
куда tips.txt заливать? Залил в корень, ничего не показывает.

В коде указано: <?phpfile ('text/tips.txt'));?>. Замените на <?phpfile ('tips.txt'));?>, чтобы файл искался в корне сайта.

Аватар пользователя kompas kompas 13 сентября 2009 в 22:21

я уже догадался, спасибо, юзаю этот скрипт - это именно то, что мне было нужно Smile

Аватар пользователя trubinovskaya trubinovskaya 22 января 2012 в 20:41

Извините, что вмешиваюсь.. Я по поиску нашла. Нужно сделать такую же фигню на сайт - случайный совет в сайдбаре или внизу.
у меня вопрос - они именно в текстовый файлик должны набиваться или отдельную ноду под каждый совет создавать?

Аватар пользователя WebRemake WebRemake 22 января 2012 в 21:04

Поставленную задачу можно решить и так:
1 - создаем тип материала "совет"
2 - на базе этого типа материала делаем ноды, каждая нода это один совет
3 - делаем views который в блоке выводит одну ноду из типа материала "совет" (Use pager: No; Items to display: 1)
4 - в критериях сортировки (Sort criteria)выставлем Global: Random

Аватар пользователя Айдар Айдар 23 января 2012 в 1:30

"trubinovskaya" wrote:
у меня вопрос - они именно в текстовый файлик должны набиваться или отдельную ноду под каждый совет создавать?

Если текст каждой ноды будет длинным - скажем, не менее 500 символов, а лучше не менее 1000, то с т.з. сео можно и ноды сделать для них.

Аватар пользователя trubinovskaya trubinovskaya 23 января 2012 в 8:45

"WebRemake" wrote:
Поставленную задачу можно решить и так:
1 - создаем тип материала "совет"
2 - на базе этого типа материала делаем ноды, каждая нода это один совет
3 - делаем views который в блоке выводит одну ноду из типа материала "совет" (Use pager: No; Items to display: 1)
4 - в критериях сортировки (Sort criteria)выставлем Global: Random

спасибо большое, даже мне понятно. Lol
"Айдар" wrote:
Если текст каждой ноды будет длинным - скажем, не менее 500 символов, а лучше не менее 1000, то с т.з. сео можно и ноды сделать для них.

В чем и нюанс, некоторые явно будут меньше 500, я бы даже сказала в районе 200-300 символов. А если без нод - тогда как? Но, правда, с т.зр. сео они мне как бы не особо нужны, это чисто для пользователей. И вот еще вопрос, если пользователи захотят увидеть остальные советы - все сразу - это раздел отдельный делать, где все ноды лежат что ли? или это все же должен быть один текстовой большой файл?

Аватар пользователя trubinovskaya trubinovskaya 23 января 2012 в 15:50

"Айдар" wrote:
Тогда первый коммент.

спасибо! ясно теперь. придется осваивать php Smile
я так-то в целом поняла, что сделать. только можно еще совсем глупый вопрос? А ГДЕ лежит этот кусок кода, куда нужно вставлять 'text/tips.txt'?
(боже мой, что я пишу - я еще недавно как комп-то включать не знала Lol
Вообще-то наверно ноды попроще будет, там еще можно и картинку засунуть для красоты и привлечения внимания. Smile

Аватар пользователя Айдар Айдар 23 января 2012 в 17:49

Этот кусок кода не лежит нигде - это инструкция take&use.

Первую часть кода ставите в блок, настраиваете отображение блока, из второй части делаете txt-файл, обзываете его tips.txt и кладете в папку text/. Выводите блок где надо, и он показывает по одной записи из второго файла (записи разделены знаком "~").

Аватар пользователя trubinovskaya trubinovskaya 23 января 2012 в 19:34

"Айдар" wrote:
Первую часть кода ставите в блок, настраиваете отображение блока, из второй части делаете txt-файл, обзываете его tips.txt и кладете в папку text/. Выводите блок где надо, и он показывает по одной записи из второго файла (записи разделены знаком "~").

все, поняла. спасибо!! Smile

Аватар пользователя WebRemake WebRemake 24 января 2012 в 3:57

"trubinovskaya" wrote:
И вот еще вопрос, если пользователи захотят увидеть остальные советы - все сразу - это раздел отдельный делать, где все ноды лежат что ли?

если советы сделаете нодами то все их вместе можно очень просто собрать вьсом (display = page) и ссылку на эту page поместить в меню. А под случайной фразой в блоке можно поставить ссылку "Все советы", которая тоже будет вести на эту страницу

Аватар пользователя Andruxa Andruxa 24 января 2012 в 4:03

можно создать тип материала с текстовым полем "Советы" со множественными значениями, создать ноду этого типа и хранить все советы в ней,
потом так же выводить их вьюсом в случайном порядке
одну ноду, имхо, удобнее админить будет

Аватар пользователя WebRemake WebRemake 24 января 2012 в 4:25

"Andruxa" wrote:
потом так же выводить их вьюсом в случайном порядке

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

Аватар пользователя Andruxa Andruxa 24 января 2012 в 9:15

Добавляем:
тип представления - материал,
без аргументов, фильтр - Материал: Nid, Равно: id нашей ноды
(можно передавать nid в качестве аргумента, если будет несколько однотипных нод - "Советы", "Цитаты", "Анекдоты" и т.п., чтобы не плодить представления)
Стиль строки: Поля
в поля соответственно добавляем требуемое поле - Содержимое: Заголовок (машинное_имя_поля)
отключаем "Группировать множественные значения"
Критерий сортировки - Глобальный: Случайно
Использовать навигатор: Отображать указанное количество элементов
сортировку и навигатор лучше настроить по отдельности для разных отображений: в блоке несколько первых, отсортированных в случайном порядке, а на странице ("Все советы" или что-то в этом роде) - как-нибудь по-другому
Вместо отображения "страница" можно использовать страницу самой ноды, но придется переопределять её шаблон - как минимум, настраивать пагинацию
представлением проще и нагляднее

Аватар пользователя trubinovskaya trubinovskaya 24 января 2012 в 14:53

Спасибо, я буду пытаться! Я правда пока выясняю и изучаю что такое views вообще в целом Smile

Аватар пользователя WebRemake WebRemake 24 января 2012 в 17:41

"Andruxa" wrote:
Добавляем:
тип представления - материал,
без аргументов, фильтр - Материал: Nid, Равно: id нашей ноды

спасибо!

Аватар пользователя trubinovskaya trubinovskaya 24 января 2012 в 20:49

А можно еще спросить? я поставила модель Quotes, все получилось. Но когда я сделала вывод случайных советов блоком в сайдбар, то это блок оказался в 2 раза шире сайдбара, и сжал содержимое соответственно в 2 раза. Я сейчас убрала его вниз, в содержимое, но чего-то не нравится. Sad
http://my-doma.ru/
(в самом низу Случайный совет)
Это можно исправить или мне надо просто привыкать к тому, что они внизу будут?

Аватар пользователя Andruxa Andruxa 24 января 2012 в 21:34

честно говоря, не знаком с quotes, судя по описанию - он реализует выборку из множества нод

верните блок обратно в сайдбар - я гляну, в чем там дело

Аватар пользователя trubinovskaya trubinovskaya 24 января 2012 в 22:46

там свой тип материалов по умолчанию quotes
последнее сейчас прямо еще актуально? а то не хочу, чтобы сайт кривой стоял Smile - если сейчас вы в сети, переключу

Аватар пользователя gerol gerol 5 мая 2012 в 1:17

в семёрке "Deprecated function: Function split() is deprecated" в строке 3 файла php.module
даже не столько в семёрке, сколько в пхп 5.3.0
подскажите как правильно написать ?
я поменял split на preg_split и вылезло "Warning: preg_split() [function.preg-split]: No ending delimiter '~' found в функции eval() " и перестало выводиться )

Аватар пользователя Shedko Shedko 6 мая 2012 в 12:34

gerol,

Изменений минимум:
<?php$s_con1 = split("~",$fcontents1);?>
меняем на
<?php$s_con1 = explode("~",$fcontents1);?>
все.

Аватар пользователя BbIDPA BbIDPA 14 июня 2015 в 22:27

Еще такой вопросец... Существует ли модернизация данного кода, такая чтобы не было повторов совсем или подряд?
ЗЫ: Уж больно он мило встал на вордпрессе, что не хочется новое гуглить, спасибо