Вывод случайной ссылки из файла

piton_chel
На сайте с 19.11.2009
Offline
96
557

Здравствуйте.

На html сайте есть div блок заключенный в ссылку:

<a href="ссылка">

<div class="test">

</div>

</a>

нужно сделать что бы при каждой загрузке страницы ссылка случайным образом бралась из файла site.txt

Подскажите, как это можно сделать?

P.S. С меня небольшое вознаграждение на пиво )

E
На сайте с 27.10.2018
Offline
1
#1

Добрый день. Если у Вас именно html сайт без возможности использования PHP, могу предложить воспользоваться jQuery getJSON.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script>
$.getJSON('links.json', function(data) { // обращаемся к файлу links.json
var links = []; // создаем пустой массив ссылок
$.each(data, function(key, val) { // обходим все ссылки, полученные из links.json
links.push(val); // добавляем ссылку в массив
});
var randomIndex = Math.floor(Math.random() * links.length); // получаем случайный индекс по количеству ссылок
$('a.link').attr('href', links[randomIndex]); // выводим ссылку в атрибут href в элемент <a>
});
</script>
<a href="">
<div class="test"></div>
</a>

А вот так будет выглядеть файл links.json:

{

"1": "Ссылка 1",
"2": "Ссылка 2",
"3": "Ссылка 3"
}
Апокалипсис
На сайте с 02.11.2008
Offline
391
#2

C учетом того, что каждая ссылка с новой строки:


<?php
$links = file('site.txt');
$link = $links[mt_rand(0,count($links)-1)];
?>
<a href="<?=$link;?>">
<div class="test">
</div>
</a>
Записки нищего (http://zapiskinishego.ru) - мой личный блог Услуги php программиста. Очень нужна любая работа. Не покупают? Поведенческий аудит интернет-магазина за 5000 руб. (/ru/forum/990312)
piton_chel
На сайте с 19.11.2009
Offline
96
#3

Апокалипсис, я правильно понимаю, что это php и поэтому данный код не работает?

Esser, а можно сделать что бы список ссылок был вида:

http://site1.com

http://site2.com

...

http://site99.com

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

E
На сайте с 27.10.2018
Offline
1
#4
piton_chel:
Апокалипсис, я правильно понимаю, что это php и поэтому данный код не работает?

Если Вы вставляете этот код в html файл, то да, он не будет работать.

piton_chel:
Esser, а можно сделать что бы список ссылок был вида:
http://site1.com
http://site2.com
...
http://site99.com

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

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

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$.get('links.txt', function(data) {
var textData = $.makeArray(data);
var links = [];
links = textData[0].split("\n");
var randomIndex = Math.floor(Math.random() * links.length);
$('a').attr('href', links[randomIndex]);
});
</script>
<a href="">
<div class="test"></div>
</a>

Соответственно файл links.txt будет содержать следующий набор:

Ссылка 1
Ссылка 2
Ссылка 3

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

Для множественного использования лучше это конечно же вынести в отдельную функцию и уже в нее передавать идентификатор элемента <a> для которого необходимо подобрать ссылку и соответственно ссылку на файл ссылок (странно звучит). Также элемент <a> у Вас должен как-то идентифицироваться, например class или id, т.к. в коде выше рандомная ссылка будет задана для всех элементов <a> страницы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий