Jag behöver lite hjälp av er.
Jag här under en tid nu fixat med en egen blogg som snart e klar. men jag vill ha en grej.
Det är att man kanske läser in kanske 5 6 meningar/rader av ett blogginlägg istället för man skriver ut hela blogginlägget så står det efter det efter man har skrivit ut 5 6 meningar /rader så står det tex "read more/läs mer" som man sen länkad till post.php där man skriver ut hela inlägget.
Förstår ni hur jag vill ha det typ hur löser man det?
Vill ni se hur hela koden ser ut så är det bara att säga till, men tror inte det behövs eller?
Är det Wordpress-baserat eller? Annars är det svårt att säga hur man exakt ska hämta info till "läs mer-länken", men för att bara visa en del av inlägget kan du ju använda substr().
Nej jag använder inte Wordpress jag har kodat allt själv.
Min kod hur jag hämtar data och så rättare sagt hela blog.php sidan ser ut såhär
<?php
session_start();
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
//WE NEED to select the database!
mysql_selectdb("blog");
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Webdesignskolan, CSS layout</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style/layout.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="style/blog.css">
</head>
<body>
<div id="layout">
<div id="sidhuvud">
<?php include('head_template.php'); ?>
</div>
<div id="menycontainer">
<?php include("menu_template.php"); ?>
</div>
<div id="kolumncontainer">
<div id="kolumn1">
<div class="posts">
<?php
$sql = "SELECT posts.ID as 'ID' , users.postname as 'postname' , posts.title as 'title' , posts.content as 'content' , posts.date as 'date' FROM posts INNER JOIN users ON users.ID = posts.username ORDER BY date DESC";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)){
?>
<div class="post">
<a class="title" href="post.php?post=
<?php
echo htmlentities($row['ID']);
echo '">';
echo htmlentities($row['title']);
?>
</a><br/>
<div class="bloginfo">
Wrote
<span class="author">
<?php
echo $row['postname'];
?>
</span>
at
<?php
echo date('l jS \of F Y h:i:s A',(int)$row['date']);
?>
</div>
<div class="content">
<?php
echo $row['content']
;
?>
</div>
</div>
<?php
}
?>
</div>
</div>
<div id="kolumn2">
<h3>Kolumn2</h3>
<p>Den här layouten är gjord utan att använda bilder. Den är
<strong>vänsterställd</strong> och har en fast bredd på
<strong>900 pixlar</strong>. Texten i boxarna har en relativ storlek och
förändras om användaren
ändrar textstorlek i sin webbläsare. </p>
<p>Innan du använder CSS-layouten rekommenderar vi att du går igenom guiderna
CSS-meny, CSS-position och CSS-layout så att du har kunskap om hur du själv
kan ändra och anpassa layouten till dina egna behov.</p>
</div>
</div>
<div id="sidfot">Sidfot
</div>
</div>
</body>
</html>
Kom på hur substr() funktionen funka men hur göra man om man har en bild i inlägget?? tex dirket i början?
Du KAN ju söka efter "<img src" från början av strängen och läsa av position av första ">"-tecken och sen klippa med substr() därifrån istället, med en if-else-sats. Detta förutsätter förstås att den enda HTML-kod som finns i inläggen är <img>.
<?php
// Exempelsträng från db:
$string1 = "<img src='images/bild.gif' />Och sen kommer text men vi klipper av efter femton ord.";
// Hitta ">":s position:
$pos = stripos($string1, ">");
// Klipp ut "rätt" delar, först bild och sen text (choppad):
$string2 = substr($string1, 0, $pos+1);
$string3 = substr($string1, $pos+1, 15);
// Visa exempel:
echo $string2 . "<br />"; // "<img src='images/bild.gif' />"
echo $string3 . "<br />"; // "Och sen kommer"
?>
Angående ditt andra problem - du hämtar ju post-ID ur en databastabell för varje post? Om du visar poster genom att mata in ett värde via querystring, t.ex post.php?id=10 visar post med ID = 10, så är det bara att rendera en URL förstås med värdet du hämtar från databasen.
.. Denna kod är bara klippt från en klass jag skapat som jag använde till en blogg jag skapade och funkar bra för mig.
<?php
// Truncate blog posts
public function truncate($string, $limit, $break="</p>", $pad=" [...]") {
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit) return $string;
// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit))) {
if($breakpoint < strlen($string) - 1) {
$string = substr($string, 0, $breakpoint) . $pad;
}
}
return $string;
}
Exempel på enkel användning i din kod;
<div class="content">
<?php
// Klipp efter första slut-paragraf (</p>) efter 250 tecken
$row['content'] = truncate($row['content'], 250);
$row['content'] .= "<p><a href=\"post.php?inlagg=nummer\">Read more..</a></p>";
echo $row['content'];
?>
</div>
p.s snälla använd inte Webdesignskolan som jag såg i din titel-tag. (Exempelvis föregår det med väldigt dåligt och uråldrat exempel på Webdesignskolan att de använder ramar för att struktuera upp sidan)
okej :) tack ska testa det men $breakpunkt vad har det för värde? :)
jag har märkt det ;) så jag har gjort om en del design på sidan för få till det snyggare jag har använt det bara för att få ihop en simpel sida för att se hur saker och ting kan se ut :)
Då e webdesignskolans design någolunda bra:)
okej :) tack ska testa det men $breakpunkt vad har det för värde? :)
Om du ser på koden, så är standardvärdet för $breakpoint en avslutningsparagraf (</p>) om du inte tillägger en param för något annat själv. Sen kommer $pad lägga till [...] automatiskt efter X antal angivna tecken, vilket går även också att ändra enkelt på samma sätt som med $breakpoint.