Nektov 59 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 Здравствуйте, Решил повесить на сайте вывод случайных фраз. Может кто пробовал как-то это уже реализовать? Интересует вывод случайной фраз из базы, которая будет представлять собой текстовый файл в 1 000 - 1 500 фраз. Заранее спасибо за помощь Цитата Ссылка на сообщение Поделиться на других сайтах
ArtemNY 17 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 google "rendom text script" выдаст тысячи вариантов как это организовать Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 Автор Тогда следующий вопрос. Как корректно расчленить javascript на две части? То есть, 1 - часть, ссылка типа <script type="text/javascript" src="/fraza.js"> </script> вписывается в шаблон сайта. 2 - часть, сам код скрипта: function text() { }; text = new text(); number = 0; text[number++] = "Фраза1" text[number++] = "Фраза2" text[number++] = "Фраза3" text[number++] = "Фраза4" text[number++] = "Фраза5" text[number++] = "Фраза6" text[number++] = "Фраза7" text[number++] = "Фраза8" text[number++] = "Фраза9" text[number++] = "Фраза10" increment = Math.floor(Math.random() * number); document.write(text[increment]); Так правильно? И есть ли какие то символы которые не стоит использовать в коде javaскритпа (" , : ')?И ещё одно. Как можно реализовать вывод случайной фразы без javascript? Если можно подробно и в примерах Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 (изменено) В index.php сразу после: $tpl->load_template ( 'main.tpl' ); прописать: $sovet = array ( "Если не хочешь жить, так как живёт большинство, посмотри что делает большинство и сделай наоборот.", "Никогда не торгуйся с успехом... В жизни нельзя вернуть четыре вещи: прожитую жизнь, выпущенную стрелу (пулю) сказанное слово и УПУЩЕНУЮ возможность!", "Жизнь продолжается, конец чего-то, означает начало чего-то нового.", "Не стыдно родится в бедности - стыдно умирать в нищете!", "За скромность не платят.", "Вы хотите деньги сегодня, или деньги на всю оставшуюся жизнь?", "Если вы не уделяете внимания своим клиентам, им уделят внимание другие люди.", "Деньги нужны даже для того, чтобы без них обходиться.", "Можно смотреть на деньги с высока, но ни в коем случае нельзя выпускать их из виду.", "Не гонись за деньгами - иди им навстречу.", "Есть вещи важнее денег, но без денег эти вещи не купишь!", "Лучший способ помочь беднякам - это не стать одним из них.", "Не хвались серебром, хвались добром.", "Выживает не самый сильный, а самый восприимчивый к переменам.", ); $randtext = count ( $sovet ) - 1; $tpl->set ( '{randomtext}', $sovet[rand ( 0, $randtext )] ); В шаблоне в файле main.tpl в нужном месте вставить тэг {randomtext} P.S. Написал, но не проверял. Если хотите, то все афоризмы можно всунуть в отдельный файл и потом инклюдить Изменено 16 февраля 2011 пользователем WWW.ZEOS.IN Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 Создаём файл quoter.php с содержимым:<? $quote = file("quotes.txt"); srand((double)microtime()*1000000); echo $quote[rand(0,count($quote))]; ?>Закидываем его в папку \engine\modules\ Создаём файл quotes.txt в котором на одной строке одна цитата и закидываем в корень сайта. (можно не в корень, но тогда надо изменить путь до файла в quoter.php) Теперь в нужном месте в шаблоне сайта прописываем {include file="engine/modules/quoter.php"} Ничего сложного К стати, я в PHP не силён, может ZEOS или ZGR подскажут? Вообщем у меня как то давно была идея сделать цитаты которые бы брались с блокнота (в админке), а то он висит по беспонтовой как правило То есть, создать файл который бы так же брал по одной случайной строке из блокнота, потом добавляем в шаблон {include file="engine/modules/quoter.php"} и все дела Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 Написали в принципе всё верно - либо массив из файла создаем, либо сами готовый пишем, если массив получается не очень большим, то можно и так, но если сортировать нужно элементов очень много, то лучше из БД массив тянуть, так он будет в разы быстрее формироваться и меньше потреблять память. В JS лучше ничего не сортировать и не выводить, это уже давно устарело, потому как чтобы вывести одну строку, нужно мне в браузер запихать их сотню... Зачем мне лишний трафик? - через php загрузится и выведится только одна строка. Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 n0lik, ну тогда можно и вот так сделать: 1) Создаём файл с названием aphorisms.php по адресу /engine/modules/ 2) Вставляем в этот файл такой код: <?php if ( ! defined ( 'DATALIFEENGINE' ) ) { die ( "Hacking attempt!" ); } $aphorisms = array ( "Если не хочешь жить, так как живёт большинство, посмотри что делает большинство и сделай наоборот.", "Никогда не торгуйся с успехом... В жизни нельзя вернуть четыре вещи: прожитую жизнь, выпущенную стрелу (пулю) сказанное слово и УПУЩЕНУЮ возможность!", "Жизнь продолжается, конец чего-то, означает начало чего-то нового.", "Не стыдно родится в бедности - стыдно умирать в нищете!", "За скромность не платят.", "Вы хотите деньги сегодня, или деньги на всю оставшуюся жизнь?", "Если вы не уделяете внимания своим клиентам, им уделят внимание другие люди.", "Деньги нужны даже для того, чтобы без них обходиться.", "Можно смотреть на деньги с высока, но ни в коем случае нельзя выпускать их из виду.", "Не гонись за деньгами - иди им навстречу.", "Есть вещи важнее денег, но без денег эти вещи не купишь!", "Лучший способ помочь беднякам - это не стать одним из них.", "Не хвались серебром, хвались добром.", "Выживает не самый сильный, а самый восприимчивый к переменам.", ); $randtext = count ( $aphorisms ) - 1; echo $aphorisms[rand ( 0, $randtext )]; ?> 3) В нужном шаблоне в файле main.tpl прописать в нужном месте: {include file="engine/modules/aphorisms.php"} всё. Этот способ лучше, так как при обновлении DLE не надо будет снова править файлы движка Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 Этот способ лучше, так как при обновлении DLE не надо будет снова править файлы движка А в моём варианте разве надо править файлы скрипта? У меня просто отдельный файл с цитатами в корне, что бы было проще до него добираться и редактировать, добавлять цитаты, анекдоты и т.п.. Я вас обоих хотел спросить, можно ли вот этот вариант реализовать? Вообщем у меня как то давно была идея сделать цитаты которые бы брались с блокнота (в админке), а то он висит по беспонтовой как правило То есть, создать файл который бы так же брал по одной случайной строке из блокнота, потом добавляем в шаблон {include file="engine/modules/quoter.php"} и все дела Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 n0lik, не обижайся, но в твоём примере две ошибки srand((double)microtime()*1000000);Вот это вообще непонятно зачем! И надо отнимать единицу от цифры, которая получится от count ( $quote ) Зачем? А ты пропиши в свой файл quotes.txt две строчки: 1111 2222 и потом позапускай несколько раз скрипт и иногда будет отдаваться пустота. Я вас обоих хотел спросить, можно ли вот этот вариант реализовать?Можно сделать абсолютно всё. Но подумай, ты хочешь еще один запрос к базе данных делать при каждом запросе к странице? Ну и еще минус в том, что любой может пользоваться твоим файлом quotes.txt запуская его у себя в скриптах вытягивая с твоего сервера. В моём же примере будет отдаваться в ответ "Hacking attempt!" Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 n0lik, не обижайся, но в твоём примере две ошибки А от чего мне обижаться. это не мой файл я в сети первый попавшийся взял Но подумай, ты хочешь еще один запрос к базе данных делать при каждом запросе к странице? Да, верно, что то у меня вылетело из головы. Ну и еще минус в том, что любой может пользоваться твоим файлом quotes.txt запуская его у себя в скриптах вытягивая с твоего сервера. А ты не ложи его в корень (например положи его в папку с шаблоном и к стати, тогда редактировать его можно будет с админки) или переименуй на свой лад и никто не будет им пользоваться Пы.Сы. Если нашёл ошибки, лучше подскажи как его написать правильно. Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 Если нашёл ошибки, лучше подскажи как его написать правильно. Так а я ведь уже написал вот тут правильный вариант: http://forum.dle-news.ru/index.php?showtopic=54600&view=findpost&p=267206 тогда редактировать его можно будет с админки Да, вроде можно и так сделать, но тогда файл надо будет назвать не txt и не php, а tpl или переименуй на свой лад и никто не будет им пользоваться А можно и так сделать Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 (изменено) Да, вроде можно и так сделать, но тогда файл надо будет назвать не txt и не php, а tpl Можно и tpl расширение дать, это уже не суть важно Так а я ведь уже написал вот тут правильный вариант: Там у тебя всё одним файлом, а как сделать вариант как у меня? То есть с подгрузкой тпльки из шаблона. Изменено 16 февраля 2011 пользователем n0lik Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 16 февраля 2011 Рассказать Опубликовано: 16 февраля 2011 1) Создаём файл с названием aphorisms.php по адресу /engine/modules/ 2) Вставляем в этот файл такой код: <?php if ( ! defined ( 'DATALIFEENGINE' ) ) { die ( "Hacking attempt!" ); } $aphorisms = file ( "templates/" . $config['skin'] . "/aphorisms.tpl" ); $randtext = count ( $aphorisms ) - 1; echo $aphorisms[rand ( 0, $randtext )]; ?> 3) В нужном шаблоне в файле main.tpl прописать в нужном месте: {include file="engine/modules/aphorisms.php"} 2 Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 WWW.ZEOS.IN, Вот видишь к какому замечательному решению мы пришли, получился мега мод "Случайные фразы" Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Автор 1) Создаём файл с названием aphorisms.php по адресу /engine/modules/ 2) Вставляем в этот файл такой код: <?php if ( ! defined ( 'DATALIFEENGINE' ) ) { die ( "Hacking attempt!" ); } $aphorisms = file ( "templates/" . $config['skin'] . "/aphorisms.tpl" ); $randtext = count ( $aphorisms ) - 1; echo $aphorisms[rand ( 0, $randtext )]; ?> 3) В нужном шаблоне в файле main.tpl прописать в нужном месте: {include file="engine/modules/aphorisms.php"} А сами фразы куда пихать? Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Вот видишь к какому замечательному решению мы пришли ага А сами фразы куда пихать? Вам надо создать файл aphorisms.tpl по адресу: templates/Название_Вашего_шаблона/ 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Автор Вам надо создать файл aphorisms.tpl по адресу: templates/Название_Вашего_шаблона/ И просто в пихать в него фразы? Без никаких доп тегов, не считая html оформления? Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Каждая строчка это отдельный афоризм. Никаких доп тегов не надо. HTML можно использовать. Например, выделять некоторые слова <b>жирным</b> Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 (изменено) Автор И ещё один вопрос: Как оживить текст? То есть сделать его бегущим? Можно через marquee echo '<marquee>'.$randtext.'</marquee>';, но тег не входит в спецификацию HTML и его наличие приведет к невалидному коду, да и не текст не останавливается при наведении курсора. Изменено 17 февраля 2011 пользователем Nektov Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Смотрите в интернете. Вот например: http://rumkin.com/tools/marquee/ http://www.html.by/threads/8202-analog-na-JS http://www.howtocreate.co.uk/jslibs/htmlhigh/simplemarquee.html http://rumkin.com/tools/marquee/ Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Автор Смотрите в интернете. Вот например: А без marquee? Цитата Ссылка на сообщение Поделиться на других сайтах
WWW.ZEOS.IN 1 161 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Что без marquee ? Я Вам дал примеры, где пишут как это сделать на JS Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Автор Что без marquee ? Я Вам дал примеры, где пишут как это сделать на JS То есть, если слепить всё в кучу получится php файл вывода и tpl файл фраз с содержанием JS? Как то проще можно? Цитата Ссылка на сообщение Поделиться на других сайтах
n0lik 75 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 Nektov, http://www.dynamicdrive.com/dynamicindex2/crawler/index.htmТолько не спрашивайте как реализовать при помощи этого то что вы хотите. Подумайте немного, там до ужаса всё просто. Цитата Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 17 февраля 2011 Рассказать Опубликовано: 17 февраля 2011 текст не останавливается при наведении курсора Всё там останавливается, если правильно делать http://isle-blog.ru/programming/marquee-animation/ Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.