Динамическое название в php - PullRequest
1 голос
/ 29 октября 2010

Я пытаюсь изменить заголовок страницы (<title>bla..bla..bla..</title>) в php с помощью многофайловой разметки, например: Functions.php включается в index.php, затем вызывается get_header () из functions.php для включения страницы header.php тег title находится внутри файла заголовка. Я хотел бы иметь возможность установить заголовок из index.php, как я могу это сделать?

Например, вот что я пробовал:
Index.php:

<? require_once('includes/functions.php'); global $t; $t = '/home/s0urc3'; get_header();?>

<div id="main">

    <h2><a href="NEEDED" rel="bookmark" title="Permanent Link to NEEDED">NEEDED</a></h2>


    <p class="postmeta"><a href="<?php page_url(yes)?>" class="readmore">Permalink</a> | <span class="date">Revision Date</span></p>

        <p>CONTENT AND CRAP</p>

    <!-- main ends -->  
</div>
<?php /*test*/echo($title);/*test*/ get_footer();?>

header.php:

<?php //include('functions.php')?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<? title('$t')?>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<?php get_theme_css()?>
</head>

<body>
<!-- wrap starts here -->
<div id="wrap">

    <!--header -->
    <div id="header">               
        <h1 id="logo-text"><a href="<?php echo (HOME)?>"><img src="<?php get_url('images/Logo.png')?>" alt="S0URC3"><!-- S0URC3 --></a></h1></div>  

<p id="intro">
        Just another poorly coded website!
        </p>
        </div>
        <div id="nav">
            <!-- <div id="navi"><div id="menu" class="fixed"> -->
            <ul class="">
            <li class=""><a href="http://s0urc3.ismywebsite.com">Home</a></li>
            <li class=""><a href="http://blog.s0urc3.ismywebsite.com">Blog</a></li>
            <li class=""><a href="http://forums.s0urc3.ismywebsite.com">Forums</a></li>
            <li class=""> <a href="mailto:ellisgeek@gmail.com?subject=Comments">Comments</a></li>
            <!--<li class="">Clans</li>-->
            <li class=""><a href="http://astro.s0urc3.ismywebsite.com">-astro-</a></li>
            <!--<li class=""><a href="#">Inspiration</a></li>
            <li class=""><a href="#">Resources</a></li>         
            <li class=""><a href="#">Tutorials</a></li>         
            <li class=""><a href="#">WordPress</a></li>-->          
        </ul><!-- </div></div> -->

        </div>                  
    <!--header ends-->                  
    </div>

    <!-- content-wrap starts -->
    <div id="content-wrap">

functions.php:

<?php
require_once('constants.php');
  //===============//
 //Start Functions//
//===============//

//Gets a file from the domain http://files01.s0urc3.ismywebsite.com/
function get_url($file)
{
echo (FILE_ROOT . $file);
}

//gets the url of the theme
function get_theme_css() {echo('<link rel="stylesheet" href="' . FILE_ROOT . 'colourise/style.css" type="text/css" />');}

function get_header() {require_once('includes/header.php');}

function get_footer() {require_once('includes/footer.php');}

//Gets the URL of the current page
function page_url($p)
{
    $s = empty($_SERVER["HTTPS"]) ? ''
        : ($_SERVER["HTTPS"] == "on") ? "s"
        : "";
    $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
    $port = ($_SERVER["SERVER_PORT"] == "80") ? ""
        : (":".$_SERVER["SERVER_PORT"]);
        if ($p == 'yes')
  echo ($protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']);
else
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2)
{
    return substr($s1, 0, strpos($s1, $s2));
}

//gets the year
function cur_year() {echo (YEAR);}

function ads($code) {echo('<script type="text/javascript" src="http://links.ismywebsite.com?i='. $code .'"></script>');}

function title($title)
{echo('<title>Index Of: '.$title.'</title>');}
  //=============//
 //End Functions//
//=============//
?>

P.S. Я включаю функции только после того, как все функции доступны в верхнем и нижнем колонтитулах, когда functions.php вызывается в index.php

Ответы [ 2 ]

8 голосов
/ 29 октября 2010

Во-первых, файл header.php включается из функции, поэтому он не имеет доступа к глобальной переменной $t. Вам нужно будет выполнить одно из следующих действий:

В functions.php:

function get_header() {
    global $t;
    require_once('includes/header.php');
}

Или, в header.php:

<?php //include('functions.php')
global $t;
?>
<!DOCTYPE html>
<!-- etc -->

Таким образом, объявленная вами переменная будет доступна локальной области действия функции.

Во-вторых, вам нужно вызывать функцию с двойными или без кавычек. Одинарные кавычки не будут анализировать переменную.

правый

  • title($t);
  • title("$t");
  • title("{$t}");

Неправильный

  • title('$t');

Вот страница руководства по PHP с типом данных String - обязательно проверяйте строки в одинарных и двойных кавычках.

Nitpicky Вещи:

  • Вы всегда должны использовать полные открывающие теги (<?php), а не короткие открывающие теги (<?)
  • Ваши функции, такие как title(), всегда должны возвращать значение, и вы можете отображать его, а не отражать непосредственно изнутри функции.
  • Функция strleft(), которую вы реализовали, хотя и умная, уже существует. См .: strstr() На самом деле, эта функция противоположна тому, что вы хотите; Я неправильно запомнил, что он сделал. Продолжить. ИЗМЕНИТЬ СНОВА: Нет, очевидно, я был прав, вы передаете необязательный третий параметр как true. Обычно вы должны использовать функции, которые уже существуют, потому что, за некоторыми исключениями, они будут быстрее.
    • Заметным исключением из этого правила является array_rand()
0 голосов
/ 29 октября 2010

Попробуйте изменить

<? title('$t')?>

до

<? title($t)?>

в вашем коде.

...