Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Ссылка "Подробнее..."

#1 werd_34

werd_34
  • Пользователь
  • 34 сообщений
  • Репутация: 0
0

Отправлено 03 Май 2013 - 18:24

Здравствуйте, уважаемые форумчане!
Подскажите, как без всяких скриптов вывести ссылку "Подробнее...", по клику на которую выводилось бы значение другой переменной (например, $text) как продолжение краткого текста ($shorttext).
Вот у меня выводится краткий текст

<?php
echo "<td><p>'.$shorttext.'</p></td>";
?>
Как связать ссылку с $text?
Всё прогуглил, там в основном решения для Wordpress или сложные скрипты :)

 

 

  • 0

#2 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 03 Май 2013 - 18:48

$_GET тебе в помощь, как вариант, а вообще ты откуда данные берешь и как ссылки формируешь?
  • 0

#3 werd_34

werd_34
    Topic Starter
  • Пользователь
  • 34 сообщений
  • Репутация: 0

Отправлено 03 Май 2013 - 19:04

Данные беру из БД, поля соответствующей таблицы. Сначала хотел обрезать текст (код ниже), но это не всегда красиво - разрыв слова и т.д.

$statid=$_GET['statid'];
if($statid=='')
{
$text = substr($text, 0, '100');
$text = $text."<a href=?statid=$id>Подробнее...</a>";
echo $text;
}
else
{
echo $text;
}

  • 0

#4 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 03 Май 2013 - 19:17

можно 2 способами поступить:
сделать 2 колонки в 1-й вводная часть, во 2-й продолжение, и если допусти stadtid не объявлен, то публиковать вводную часть, а если объявлен, то либо полностью данные их 2-х колонок, либо продолжение, в зависимости от настроек, так в Joomla было раньше
либо оставить колонку а в нужно месте вставить комментарий, например <!--READ_MORE--> и по нему разбирать данные, например
$text = explode("<!--READ_MORE-->", $text);
echo $text[0]; // вводная часть
echo $text[1]; // продолжение
и выводить в зависимости от условий, описанных выше
а не как у тебя, так в Wordpress было сделано
смысле понятен?
  • 0

#5 werd_34

werd_34
    Topic Starter
  • Пользователь
  • 34 сообщений
  • Репутация: 0

Отправлено 03 Май 2013 - 21:11

Если честно, не понял по каким параметрам разделить текст
А если задавать условия в моём примере, то выводятся все "Подробнее..." (Я вывожу циклом несколько текстов).
$statid=$_GET['statid'];
    if($statid==''){
	 $shorttext = $shorttext."<a href=?statid=$yid>Подробнее...</a>";
  echo $shorttext;
}else{
	 echo $text;
}
А хотелось бы чтобы дополнения выводились индивидуально. Наверно, и редирект нужен?
  • 0

#6 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 03 Май 2013 - 22:28

зачем редирект, я же тебе вверху написал принцип?
  • 0

#7 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 03 Май 2013 - 22:29

werd_34,
как-то так
<?php
$shorttext = array('1','2','3','4');
$text = array('Первый','Второй','Третий','Четвертый');
$more = -1;
if (is_numeric($_GET['statid'])) {
  $more = $_GET['statid'];
}
$max = count($text);
for($i = 0; $i < $max; $i++){
  if ($i==$more) echo '<p>',$text[$i],'</p>';
  else echo '<p>',$shorttext[$i],'<br /><a href="?statid=',$i,'">Подробнее...</a></p>';
}
?>

  • 0

#8 werd_34

werd_34
    Topic Starter
  • Пользователь
  • 34 сообщений
  • Репутация: 0

Отправлено 04 Май 2013 - 00:43

Вот наваял с помощью добрых людей. Но как то громоздко? Или нет?
$at=explode(". ", $text); //разделим весь текст на предложения и пишем в массив
$count=count($at); //узнаём кол-во предложений в массиве
for ($i=0; $i<$count; $i++){
$tout.=$at[$i].". ";
if (strlen($tout)>=1000) { //тут предположительно будем делить по ~1000 знаков в блоке
$fout[]=$tout; //пишем набор предложений, кол-во знаков в которых равно или больше 1000 в массив
unset($tout);
}
// это нужно для записи последнего набора предложений, кол-во знаков в которых меньше 1000
elseif(strlen($tout)<=1000 && $i==$count-1){
$fout[]=$tout;
unset($tout);
}
}
$shorttext = array('1','2','3','4','5','6','7','8','9','10','11','12');
$more = -1;
if (is_numeric($_GET['statid'])){
  $more = $_GET['statid'];
}
$max = count($fout);
for($i = 0; $i < $max; $i++){
if ($i==$more) echo '<p>',$fout[$i],'</p>';
else echo '<p>',$shorttext[$i],'<br /><a href="?statid=',$i,'">Подробнее...</a></p>';
}

  • 0

#9 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 04 Май 2013 - 00:51

ужос о_0!!!
  • 0

#10 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 04 Май 2013 - 01:38

лови, что тут трудного?
<?php
// 1 вариант
// условно есть 2 массива из одной таблицы,
// в 1 вводный текст,
$prew = array(
	0 => "<p>Вводный текст 1</p>",
	1 => "<p>Вводный текст 2</p>",
	2 => "<p>Вводный текст 3</p>",
	3 => "<p>Вводный текст 4</p>",
	4 => "<p>Вводный текст 5</p>",
);
// во 2 - полный.
$full = array(
	0 => "<p>Полный текст 1</p>",
	1 => "<p>Полный текст 2</p>",
	2 => "<p>Полный текст 3</p>",
	3 => "<p>Полный текст 4</p>",
	4 => "<p>Полный текст 5</p>",
);
// проверяем, был ли переход по ссылке подробнее
// если да, отображаем всю статью
if (is_numeric($_GET['id'])) {
$id = $_GET['id'];
echo $prew[$id].$full[$id];
}
// если нет, выводим все вводные
else {
$max = count($prew);
for($i = 0; $i < $max; $i++){
echo $prew[$i];
echo "<p><a href=?id=".$i.">Подробнее...</a></p>";
}
}

// 2 вариант
// условно есть 1 массива с разделителем в виде html-комментариев,  например <!--READ_MORE-->.
$text = array(
	0 => "<p>Вводный текст 1</p><!--READ_MORE--><p>Полный текст 1</p>",
	1 => "<p>Вводный текст 2</p><!--READ_MORE--><p>Полный текст 2</p>",
	2 => "<p>Вводный текст 3</p><!--READ_MORE--><p>Полный текст 3</p>",
	3 => "<p>Вводный текст 4</p><!--READ_MORE--><p>Полный текст 4</p>",
	4 => "<p>Вводный текст 5</p><!--READ_MORE--><p>Полный текст 5</p>",
);
// проверяем, был ли переход по ссылке подробнее
// если да, отображаем всю статью
if (is_numeric($_GET['id'])) {
$id = $_GET['id'];
echo $text[$id];
}
// если нет, выводим все вводные
else {
$max = count($text);
for($i = 0; $i < $max; $i++){
$text[$i] = explode("<!--READ_MORE-->", $text[$i]);
echo $text[$i][0];
echo "<p><a href=?id=".$i.">Подробнее...</a></p>";
}
}
?>


  • 1

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru