wake-up-neo.net

Stellen Sie den Seitentitel mit ein PHP

Ich möchte den Titel meiner Webseite auf Ultan.me setzen - Unabhängig vom Post-Titel . Ich möchte, dass der Beitragstitel angezeigt wird. Die Beiträge werden an eine MySQL-Datenbank gesendet und die Titelzeile heißt "title". Jede Hilfe wird mit dieser kleinen Frage geschätzt.

Aktualisieren:

Hier ist die Seite selbst, aber der Titel wird nicht angezeigt. Soll ich das PHP-Dokument öffnen und eine Verbindung zu meiner Datenbank herstellen, die sich von den aktuellen Positionen unterscheidet?

Der Code (Das einzig notwendige Stück ist der Anfang):

<html>
<head>

<meta name="keywords" content="Mac user Ultan Casey TheCompuGeeks UltanKC">
<title>Ultan.me - <?echo $title;?></title>

<link rel="stylesheet" href="css/styles.css" type="text/css" />
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript" 
src="js/jquery.labelify.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $(":text").labelify();
});
</script>
<style>
a {text-decoration:none}

</style>
</head>
<body>
<div id="main">

<!-- Menu Start -->
<div id="menu">
<ul>
<li><a href="index.php">home</a></li>
<li><a href="index.php">about me</a></li>
<li><a href="index.php">archives</a></li>
<li><a href="index.php">contact</a></li>
<li><a href="index.php">gallery</a></li>

</ul>
</div>
<!-- Menu End --> 

<img src="images/banner.png" />
<div id="content">
<div id="posts">
<?php
mysql_connect ('localhost', 'root', 'root') ;
mysql_select_db ('ultankc');

if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    die("Invalid ID specified.");
}

$id = (int)$_GET['id'];
$sql = "SELECT * FROM php_blog WHERE id='$id' LIMIT 1";

$result = mysql_query($sql) or print ("Can't select entry from table php_blog.<br />" . $sql . "<br />" . mysql_error());

while($row = mysql_fetch_array($result)) {

    $date = date("l F d Y", $row['timestamp']);

    $title = stripslashes($row['title']);
    $entry = stripslashes($row['entry']);
    $get_categories = mysql_query("SELECT * FROM php_blog_categories WHERE `category_id` = $row[category]");
    $category = mysql_fetch_array($get_categories);


    ?>
<p><?php echo "<p id='post-title'><strong><a href=\"post.php?id=". $id . "\">" . $title . "</a></strong></p>"; ?><br /><br />
<div id="entry"><?php echo $entry; ?>
</div><br /><br />
<p id="date">Posted in <a href="category.php?category=<?php echo $row['category']; ?>"><?php echo $category['category_name']; ?></a> on <?php echo $date; ?></p>
</p>
<h2 id="share-title">Share This Post</h2>
<div id="social-share">
<li id="link-right"><a href="http://Twitter.com/home?status=
I just read <?php echo $title; ?> at http://ultan.me/post.php?id=<?php echo $id; ?>"><center>Twitter</center></a></li>
<li id="link-left"><a href="http://digg.com/submit?url=http://ultan.me/post.php?id=<?php echo $id; ?>"><center>Digg</center></a></li>
<br>
<li id="link-right"><a href="http://www.facebook.com/sharer.php?u=http://ultan.me/post.php?id=<?php echo $id; ?>&t=<?php echo $title; ?>"><center>Facebook</center></a></li>
<li id="link-left"><a href="http://www.google.com/buzz/post?url=http://ultan.me/post.php?id=<?php echo $id; ?>
"><center>Google Buzz</center></a></li>
<div class="clr"></div>
</div>
<h2 id="comments-title">Comments</h2>
 <div id="comment-list">
    <?php

}
$commenttimestamp = strtotime("now");

$sql = "SELECT * FROM php_blog_comments WHERE entry='$id' ORDER BY timestamp";
$result = mysql_query ($sql) or print ("Can't select comments from table php_blog_comments.<br />" . $sql . "<br />" . mysql_error());
while($row = mysql_fetch_array($result)) {
    $timestamp = date("l F d Y", $row['timestamp']);
      printf("<div class='comment-ind'><p id='comments'><a id='username' href=\"%s\">%s</a> %s</p>", stripslashes($row['url']), stripslashes($row['name']), $timestamp);
    print("<p class='comments'>" . stripslashes($row['comment']) . "</p><div class='clr'><br></div></div>");

  }
?>
<div class="clr"></div>
<form id="commentform" method="post" action="process.php">

<p><input type="hidden" name="entry" id="entry" value="<?php echo $id; ?>" />

<input type="hidden" name="timestamp" id="timestamp" value="<?php echo $commenttimestamp; ?>">

<input type="text" name="name" id="name" title="Name (required)" /><br />

<input type="text" name="email" id="email" title="Mail (will not be published) (required)" /><br />

<input type="text" name="url" id="url" title="Website" value="http://" /><br />

<br />
<textarea  title="Your Comment Goes Here" name="comment" id="comment"></textarea></p>

<p><input type="submit" name="submit_comment" id="submit_comment" value="Add Comment" /></p>

</form>
</div>
<div id="pages">

<?php
$total_results = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS num FROM php_blog"));
$total_pages = ceil($total_results['num'] / $blog_postnumber);
if ($page > 1) {
    $prev = ($page - 1);
    echo "<a href=\"?page=$prev\">&lt;&lt;  Newer</a> ";
}
for($i = 1; $i <= $total_pages; $i++) {
    if ($page == $i) {
        echo "$i ";
    }
    else {
        echo "<a href=\"?page=$i\">$i</a> ";
    }
}
if ($page < $total_pages) {
   $next = ($page + 1);
   echo "<a href=\"?page=$next\">Older &gt;&gt;</a>";
}

?>
</div>
</div>
</div>
<!-- Sidebar Start -->
<div class="sidebar">

<!-- Item 1 -->
<div id="side-item"> 
<h2>
<a href="http://www.dailybooth.com/UltanCasey">
<img src="images/db-icon.jpg">Dailybooth
</a></h2>
<div id="side-item-content">
<center>
<img src="http://dailybooth.com/UltanCasey/latest/medium.jpg" />
</center>
</div>

</div>

<!-- Item 2 -->

<div id="side-item">
<h2><img src="images/connect.jpg" />Connect</h2>
</div>
<div id="side-item-content">
<div class="Tweet-title"><p><a href="http://www.Twitter.com/UltanKc">Latest Tweet:</a></p></div>
<div id="Tweet">
<?php

function getTwitterStatus($userid){
$url = "http://Twitter.com/statuses/user_timeline/$userid.xml?count=1";

function auto_link_Twitter ($text)
{
    // properly formatted URLs
    $urls = "/(((http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
    $text = preg_replace($urls, " <a href='$1'>$1</a>", $text);

    // URLs without protocols
    $text = preg_replace("/href=\"www/", "href=\"http://www", $text);

    // Twitter usernames
    $Twitter = "/@([A-Za-z0-9_]+)/is";
    $text = preg_replace ($Twitter, " <a href='http://Twitter.com/$1'>@$1</a>", $text);

    // Twitter hashtags
    $hashtag = "/#([A-Aa-z0-9_-]+)/is";
    $text = preg_replace ($hashtag, " <a href='http://hashtags.org/$1'>#$1</a>", $text);
    return $text;
}

$xml = simplexml_load_file($url) or die("could not connect");

       foreach($xml->status as $status){
       $text = $status->text;
       }
       echo auto_link_Twitter ($text);
 }


getTwitterStatus("UltanKC");

?>
</div>
<br>
<ul>
<li id="social"><a href="#">YouTube</a></li>
<li id="social"><a href="#">Twitter</a></li>
<li id="social"><a href="#">LastFM</a></li>
<li id="social"><a href="#">Email</a></li>
</ul>

</div>
<!-- Item 2 End-->
<div id="side-item">
<h2><img src="images/archive.jpg" />Archives</h2>
</div>
<div id="archive-side">
<?php
mysql_connect ('localhost', 'root', 'root') ;
mysql_select_db ('ultankc');

$result = mysql_query("SELECT FROM_UNIXTIME(timestamp, '%Y') AS get_year, COUNT(*) AS entries FROM php_blog GROUP BY get_year");

while ($row = mysql_fetch_array($result)) {
    $get_year = $row['get_year'];
    $entries = $row['entries'];

    echo "<li id='tag'><a href=\"archives.php?year=" . $get_year . "\">Entries from " . $get_year . "  (" . $entries . ")<br /></a></li>";
}

$result1 = mysql_query("SELECT * FROM php_blog_categories ORDER BY category_name ASC");

while($row = mysql_fetch_array($result1)) {

    $result2 = mysql_query("SELECT COUNT(`id`) AS entries FROM php_blog WHERE category = $row[category_id]");
    $num_entries = mysql_fetch_array($result2);

    echo '<li id="tag"><a href="category.php?category=' . $row['category_id'] . '">' . $row['category_name'] . ' (' . $num_entries['entries'] . ')</a></li>';

}
?>
</div>

</div>

<div class="clr" />
</div>
<!-- Sidebar End  -->
<div id="footer">
<p> &copy; Ultan Casey 2010</p>
<p style="margin-top: -18px; float:right"><a href="index.php">Home</a> | <a href="about.php">About Me</a> | <a href="mailto:[email protected]">Email Me</a></p>
</div>
</div>
</div>
</body>
</html>
?>
6
user319815

Hier ist die Methode, die ich verwende (für ähnliche Dinge, nicht nur Titel):

<?
ob_start (); // Buffer output
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
<title><!--TITLE--></title>
</head>

<body>
<?
$pageTitle = 'Title of Page'; // Call this in your pages' files to define the page title
?>
</body>
</html>
<?
$pageContents = ob_get_contents (); // Get all the page's HTML into a string
ob_end_clean (); // Wipe the buffer

// Replace <!--TITLE--> with $pageTitle variable contents, and print the HTML
echo str_replace ('<!--TITLE-->', $pageTitle, $pageContents);
?>

PHP arbeitet normalerweise mit der Ausführung beliebiger Code-Teile und druckt die gesamte Ausgabe direkt auf den Browser. Wenn Sie "echo 'Some text here.';" sagen, wird diese Zeichenfolge an den Browser gesendet und aus dem Speicher geleert.

In der Ausgabepufferung heißt es: "Alle Ausgaben in einen Puffer drucken. Daran festhalten. NICHTS an den Browser senden, bis ich Sie dazu auffordert."

Das bedeutet also, dass der gesamte HTML-Code Ihrer Seiten in den Puffer gepuffert wird. Am Ende des Tags wird ob_get_contents () verwendet, um den Inhalt des Puffers abzurufen (normalerweise der gesamte HTML-Quellcode Ihrer Seite) habe den browser schon geschickt) und füge das in einen string ein.

ob_end_clean () leert den Puffer und gibt Speicher frei. Wir brauchen den Quellcode nicht mehr, weil wir ihn nur in $ pageContents gespeichert haben.

Zuletzt führe ich ein einfaches Suchen und Ersetzen im Quellcode Ihrer Seite ($ pageContents) für alle Instanzen von '' durch und ersetze sie durch die Variable $ pageTitle, auf die sie festgelegt wurde. Natürlich wird dann <title><!--TITLE--></title> durch den Titel Ihrer Seite ersetzt. Danach gebe ich die $ pageContents wieder, so wie es der Browser getan hätte.

Die Ausgabe bleibt effektiv erhalten, sodass Sie sie bearbeiten können, bevor Sie sie an den Browser senden.

Hoffentlich sind meine Kommentare klar genug. Schlage ob_start () im PHP-Handbuch nach ( http://php.net/ob_start ), wenn du genau wissen willst, wie das funktioniert (und du solltest) :)

23
Mayur Shah

Sie analysieren das Feld wie gewohnt aus der Datenbank.

Nehmen wir an, Sie schreiben es einfach in eine Variable mit dem Namen $title

<html>
<head>
<title>Ultan.me - <?php echo htmlspecialchars($title);?></title>
</head>

BEARBEITEN:

Ich sehe dein Problem. Sie müssen $title einstellen, BEVOR Sie ihn verwenden. Das heißt, Sie sollten die Datenbank vor <title>... abfragen.

Verschieben Sie den Datenabruf an den oberen Rand des Skripts und verwenden Sie anschließend:

<title>Ultan.me - <?php echo htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); ?></title>
2
zerkms

erstelle eine neue Seite PHP und füge diesen Code hinzu:

<?php
function ch_title($title){
    $output = ob_get_contents();
    if ( ob_get_length() > 0) { ob_end_clean(); }
    $patterns = array("/<title>(.*?)<\/title>/");
    $replacements = array("<title>$title</title>");
    $output = preg_replace($patterns, $replacements,$output);
    echo $output;
}
?>

in <head> add code: <?php require 'page.php' ?> und auf jeder Seite rufen Sie die Funktion ch_title('my title'); auf

2

Was ist mit etwas wie:

<?php 
    $page_title = "Your page tile";
    include("navigation.php");             // if required
    echo("<title>$page_title</title>");
?>
2
Hasan A Yousef

header.php hat das title-Tag auf <title>%TITLE%</title>; gesetzt. Die "%" sind wichtig, da kaum jemand% TITLE% eingibt, so dass Sie dies später für str_replace () verwenden können. Dann verwenden Sie den Ausgabepuffer wie folgt

<?php
ob_start();
include("header.php");
$buffer=ob_get_contents();
ob_end_clean();
$buffer=str_replace("%TITLE%","NEW TITLE",$buffer);
echo $buffer;
?>

Für weitere Informationen klicken Sie auf PHP - Wie ändere ich den Seitentitel NACH der Angabe von header.php?

2
Nana Partykar

Sie müssen den Wert von $title einstellen, bevor Sie ihn wiedergeben können.

Außerdem sollten Sie Daten wirklich bereinigen, bevor Sie sie in Abfragen verwenden, da dies ein Sicherheitsrisiko darstellt

2
Andres Lowrie

Es wird schwierig sein, Ihren Code neu zu ordnen, damit dies funktioniert, aber ich werde es versuchen :)

Fügen Sie dies oben in Ihren Code ein:

<?php require_once('mysql.php'); ?>

Der obere Teil der Datei sollte folgendermaßen aussehen:

<?php require_once('mysql.php'); ?>
<html>
    <head>

    <meta name="keywords" content="Mac user Ultan Casey TheCompuGeeks UltanKC">
    <title>Ultan.me - <?php echo htmlspecialchars($title); ?> </title>

Erstellen Sie dann eine Datei namens mysql.php in demselben Verzeichnis, in dem sich die Datei befindet, die den von Ihnen angegebenen Code enthält.

Setzen Sie das ist mysql.php:

<?php
mysql_connect ('localhost', 'root', 'root');
mysql_select_db ('ultankc');

if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    die("Invalid ID specified.");
}

$id = (int)$_GET['id'];
$sql = "SELECT * FROM php_blog WHERE id='$id' LIMIT 1";

$result = mysql_query($sql) or print ("Can't select entry from table php_blog.<br />" .       $sql . "<br />" . mysql_error());

$res = mysql_fetch_assoc($result); 

$date = date("l F d Y", $res['timestamp']);
$title = $res['title'];
$entry = $res['entry'];
$get_categories = mysql_query("SELECT * FROM php_blog_categories WHERE `category_id` = $res['category']");
$category = mysql_fetch_array($get_categories);

?>

Na, hoffe das hat geholfen :)

1
user179169

Ich weiß, dass dies ein alter Beitrag ist, aber nachdem ich ihn gelesen habe, denke ich, dass diese Lösung viel einfacher ist (obwohl sie das Problem technisch mit Javascript und nicht mit PHP löst).

    <html>
    <head>
    <title>Ultan.me - Unset</title>
    <script type="text/javascript">
        function setTitle( text ) {
            document.title = text;
        }
    </script>
    <!-- other head info -->
    </head>

    <?php 
    // Make the call to the DB to get the title text. See OP post for example
    $title_text = "Ultan.me - DB Title";

    // Use body onload to set the title of the page
    print "<body onload=\"setTitle( '$title_text' )\"   >";

    // Rest of your code here
    print "<p>Either use php to print stuff</p>";
    ?>
    <p>or just drop in and out of php</p>
    <?php

    // close the html page
    print "</body></html>";
    ?>
1
Martin

Das Problem ist, dass auf $title in Zeile 5 verwiesen wird, bevor er in Zeile 58 zugewiesen wird. Die Neuanordnung Ihres Codes ist nicht einfach, da die Daten gleichzeitig abgerufen und ausgegeben werden. Nur um zu testen, wie funktioniert so etwas?

Da Sie nur eine Zeile abrufen, brauchen Sie keine while-Schleife zu verwenden, aber ich habe sie mit der Hoffnung belassen, dass es Ihnen leichter fällt, sich auf Ihren aktuellen Code zu beziehen. Alles, was ich getan habe, ist, die eigentliche Ausgabe aus Ihrem Datenabruf zu entfernen und Variablen für Kategorie und Kategorienamen hinzuzufügen, auf die später wie gewohnt Bezug genommen wird. Auch das habe ich nicht getestet. :)

1
nilved
<?php echo APP_TITLE?> - <?php echo $page_title;?> 

das sollte gut für Sie funktionieren

0
MaidBoggle

wenn Sie den aktuellen Skriptdateinamen als Titel-Tag verwenden möchten

binden Sie die Funktion in Ihr Projekt ein

function setTitle($requestUri)
         {
            $explodeRequestUri = explode("/", $requestUri);
            $currentFileName = end($explodeRequestUri);
            $withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $currentFileName);
            $explodeCurrentFileName = explode("-", $withoutExt);
            foreach ($explodeCurrentFileName as $curFileValue) 
            {
               $fileArrayName[] = ucfirst($curFileValue);
            }
            echo implode(" ", $fileArrayName);

         }

und fügen Sie in Ihrem HTML-Code das Funktionsskript ein und ersetzen Sie Ihren Titel-Tag durch dieses

<title>Your Project Name -
            <?php setTitle($_SERVER['REQUEST_URI']); ?>
        </title>

es funktioniert auf PHP7 und höher, aber ich habe keine Ahnung über PHP 5. * Hoffe, es hilft

0
Manojkiran.A