Avatar billede nyhuus Nybegynder
07. juli 2007 - 01:13 Der er 18 kommentarer og
2 løsninger

Dynamik <title>

Jeg sidder her med et problem / spørgsmål

Der er mange steder, også her på exp.dk hvor at der er dynamiske titler fx her hvor jeg opretter et <title> "Eksperten | Opret spørgsmål"

Mit problem ligger i at head og title er jo noget af det øverste på en side. så jeg kan ikke umilbadt lave en variable der indeholder titlen da jeg først ved hvad title skal være på de inkluderet sider.

Er der nogen smart måde at få en variale til at virke højre oppe end den bliver sat? eller skal det laves på en helt 3. måde

På forhånd tak for hjælpen.
Avatar billede coderdk Praktikant
07. juli 2007 - 01:16 #1
Lad være med at skrive dem ud til du skal bruge dem ;)

En simpel måde:

function htmlHeader($titel = "")
{
?>
<html><head><title><?= ( $title == '' ? '' : $title . ' - ' ) ?>ditsite.dk</title>
</head><body>
<?php
}

function htmlFooter()
{
  echo '</body></html>';
}

Så kan du blot kalde dem når du skal til at skrive noget ud:

htmlHeader("titel på siden");
echo "lidt indhold";
htmlFooter();
Avatar billede coderdk Praktikant
07. juli 2007 - 01:17 #2
function htmlHeader($titel = "")


skulle have været

function htmlHeader($title = "")
Avatar billede nyhuus Nybegynder
07. juli 2007 - 01:23 #3
kan jeg godt have 2 af dem? jeg har jo også mit css og andre ting i head
Avatar billede nyhuus Nybegynder
07. juli 2007 - 01:24 #4
jeg har lige hørt fra en af mine venner det kan laves via noget javascript, er der nogen der har forstand på det? (jeg ved godt det er i den forkerte kategori at spørge om dette :))
Avatar billede nyhuus Nybegynder
07. juli 2007 - 01:48 #5
Har fundet det :)

<script language="JavaScript">
document.title = "Mine titel";
</script>

Coderdk du er velkommen til at smide et svar fordi dit ville os have virket :), så vi kan sagtes dele points.

LUKKET
Avatar billede webudvikleren Nybegynder
07. juli 2007 - 02:00 #6
Ja, du kan løse det med javascript, men det kan Google ikke finde rundt i, da deres sider vidst nok ikke registrer javascript. Så du skal automatisk gener en header i dokumentet, hvor den udskriver noget nyt i title. Sådan. at når du højreklikker og trykker vis kilde, skal det stå blandt <title> tagget :-)
Avatar billede nyhuus Nybegynder
07. juli 2007 - 02:25 #7
Tja, det er bare til min personlige blog i dette tilfælde så der er det andet fint nok.

men coderdk's version er jo det bedste til SEO :)
Avatar billede gider_ikke_mere Nybegynder
07. juli 2007 - 09:17 #8
head og title ligger som spørger skriver som det øverste i html dokumentet. Men man skal vel altid sørge for at afvikle så meget php kode som muligt inden head, så man ved hvad siden skal indeholde.
Avatar billede coderdk Praktikant
07. juli 2007 - 11:40 #9
Som akyhne sagde :)
Avatar billede nyhuus Nybegynder
07. juli 2007 - 13:12 #10
akyhne
tja det er ikke den måde jeg koder på :) jeg bruger include, dvs head ligger i min index og alt bliver afviklet gennem dem. det jeg inkludere er de sider der skal vises. Det er nok ikke den smaretste måde at lave det på, men mit behøves heller ikke være prof da det kun er til mine personlige sider jeg laver :)
Avatar billede gider_ikke_mere Nybegynder
07. juli 2007 - 13:41 #11
Det gør jeg søreme også på en af mine sider. Jeg checker blot mit id (hvis man har sådan en i linket):


<head>
<?php
$id = $_GET["id"];

IF ( $id == '0' ) { echo '<title>abc.dk - Forsiden</title>'; }
ELSE IF ( $id == '1' ) { echo '<title>abc.dk - om virksomheden</title>'; }
ELSE IF ( $id == '2' ) { echo '<title>abc.dk - om kontakt os</title>'; }
?>
...

Noget i den stil.
Avatar billede nyhuus Nybegynder
07. juli 2007 - 15:42 #12
Jeg har også valgt at lave det om.

bruger følgne nu

[code]
<?php

if ($_GET['cms'] == "readmore")
{
  $id = $_GET['id'];
  $conn = new Connect;
  $conn->MySqlConn();
  $hent_data = mysql_query(" SELECT headline FROM ".$config["db"]["news"]." WHERE id = '".$id."' ORDER BY id DESC ") or die("Der er sket en fejl: ".mysql_error());  // henter data via sql
  $conn->MySqlClose();
  $row = @mysql_fetch_array($hent_data);
  $headline = $row['headline'];
 
  $title = $headline;
}
elseif ($_GET['cms'] == "about") { $title = "Omkring mig"; }
elseif ($_GET['cms'] == "projects") { $title = "Projekter"; }
elseif ($_GET['cms'] == "referencer") { $title = "Referencer"; }
elseif ($_GET['cms'] == "downloads") { $title = "Downloads"; }
elseif ($_GET['cms'] == "links") { $title = "Links"; }
else { $title = "Webdesignz.dk"; }

if($title != "Webdesignz.dk")
{
  $title .= " - Webdesignz.dk";
}

echo '<title>'.$title.'</title>';

?>
[/code]

også inkludere jeg den side i mit head
Avatar billede gider_ikke_mere Nybegynder
07. juli 2007 - 16:11 #13
YES SIR. Hvis du gemmer din $row, behøver du ikke engang at kalde MySql igen, senere nede i koden, såfremt du skal bruge dataene fra resultatet.
Avatar billede nyhuus Nybegynder
07. juli 2007 - 17:27 #14
Okay, men tak for hjælpen alle sammen :)
Avatar billede gider_ikke_mere Nybegynder
07. juli 2007 - 18:18 #15
Velbekomme.
Avatar billede benzon Praktikant
08. juli 2007 - 05:54 #16
akyhne godt nok en tung måde og bruge alle de elseif else if else if

var det ikke lidt mere server venligt og benytte switch?`

<?php
switch ($_GET['cms']) {
case "about":
    $title = "Omkring mig - Webdesignz.dk";
    break;
case "projects":
    $title = "Projekter - Webdesignz.dk";
    break;
case "referencer":
    $title = "Referencer - Webdesignz.dk";
    break;
case "downloads":
    $title = "Downloads - Webdesignz.dk";
    break;
case "links":
    $title = "Links - Webdesignz.dk";
    break;
default:
    echo "Webdesignz.dk";
}
?>

Mere overskueligt og lige til.
Avatar billede windcape Praktikant
08. juli 2007 - 06:17 #17
Mere overskueligt, og nemmere at udvide:

<?php

$title = 'Webdesignz.dk';
$links = array(
    'about'      => 'Omkring mig',
    'projects'  => 'Projekter',
    'referencer' => 'Referencer',
    'downloads'  => 'Downloads',
    'links'      => 'Links'
)

if(isset($_GET['cms'])) {
    $key  = $_GET['cms'];
    if(isset($links[$key])) {
        $title = $links[$key].' - '.$title;
    }
}
echo $title;

?>
Avatar billede nyhuus Nybegynder
08. juli 2007 - 23:09 #18
windcape det er vist lidt svært :D jeg har sql udtræk med fra forskellige sider osv.
Avatar billede benzon Praktikant
09. juli 2007 - 16:42 #19
nyhuusdk min burde også virke selv om du har mysql udtræk med tror jeg nu også windcape´s kan det kræver bare noget modificering :D
Avatar billede nyhuus Nybegynder
10. juli 2007 - 18:58 #20
benzon din virker helt sikkert også :) men jeg har aldrig rigtig brugt switch
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester