За последние 24 часа нас посетили 18263 программиста и 1640 роботов. Сейчас ищут 1862 программиста ...

вывод <title> с помощью php

Тема в разделе "PHP для новичков", создана пользователем timotheus, 30 янв 2013.

  1. timotheus

    timotheus Активный пользователь

    С нами с:
    25 фев 2012
    Сообщения:
    17
    Симпатии:
    0
    Господа, здравствуйте!

    Я новичок, прошу сильно не пинать.
    Мой вопрос касается вот этих уроков, поскольку они тащат и вообще няшечки ^^`)

    Вкратце как все работает: index.php инициализирует MVC, то есть, в частности инклюдит header.php и footer.php. В хидере ничего нового нет:
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html>
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <link rel="stylesheet" href="/template/style.css" type="text/css" />
    у меня проблема - я не могу придумать как вывести название товара в title.

    Для карточки товара созданы 3 файла в трех папках (views, models и controllers)
    Хорошо бы во вьюшку товара засунуть какой-то код, который использовал переменную с именем товара для <title>

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

    советуют использовать функции кэширования ob_start. Но как вписать их в парадигму MVC я не представляю.

    я придумал написать регулярное выражение в index.php, которое будет анализировать URL и в зависимости от того, что там будет, обращаться в БД за соответствующим title-ом (или за description, который мне тоже нужен) и выводить его в теге title заголовка.

    Господа! Подскажите самый простой путь реализации, пожалуйста!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    значит это не mvc. используйте ob_start хотя бы.

    значит это даже близко не mvc в принципе и вы сделали очередную херню на лопате которую делают все новички. То что у вас что-то инклудится это вовсе не позволяет вам управлять отображением. Т.е. у вас связи модель-контроллер просто нет. То что вы написали, что у вас каждый товар имеет ажно три файла (views, models и controllers) говорит о том, что это не mvc, а классическое "статические хтмлшки" в извращённом виде.

    цитата из википедии поможет вам:
    т.е. у вас должно использоваться одно и то же отображение на все одинаковые товары.

    Начните заново без тех уроков полагаясь на функцию ob_start() и вы поймёте как всё просто и сделаете это заново за один вечер.
     
  3. Tokha

    Tokha Активный пользователь

    С нами с:
    29 янв 2013
    Сообщения:
    77
    Симпатии:
    0
    Если это у Вас весь "хидер", зачем ему расширение "php"?
    1. Положите весь статический и неизменный HTML (хидер, футер, форму вызова девчонок и т.п.) в статические "html" файлы, можно за пределами папки htdocs, если хочется не дать к ним доступ извне.
    2. В index.php или соответствующей "вьюшке", используя функции кэширования, выводите эти файлы (их содержимое), между ними выводите динамические части HTML из php-кода и вот тут-то при выводе очередного "<img ... >" подставляйте значение title, description и т.д., взятое из базы или еще откуда хочется.

    Как-то так.

    Вопрос слишком общий и вокруг сути вопроса слишком много букв (осилил с трудом), чтоб дать конкретные рекомендации.
     
  4. timotheus

    timotheus Активный пользователь

    С нами с:
    25 фев 2012
    Сообщения:
    17
    Симпатии:
    0
    не совсем так. товаров много, модель каталога обращается к БД за данными, которые выводятся вьюшкой каталога.
    Вообще можно было потратить 3 минуты времени и пройти по ссылке, посмотреть что за хня там написана, прежде чем начать так активно обсирать. Ладно, не суть.

    А решение-то было рядом..спасибо автору тех уроков..

    в контроллер продукта вставить:
    Код (Text):
    1. $this->title=$product['name'];

    А в файле шаблона header.php в раздел <head> вставить :

    Код (Text):
    1. <title><?php echo $title ?></title>
    всем спасибо =) а то я уже отчаялся)

    ____________________________________________________
    короче, днище я, знаю. но, блин, все когда-то учатся
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хм... ну подзравляю.
     
  6. Tokha

    Tokha Активный пользователь

    С нами с:
    29 янв 2013
    Сообщения:
    77
    Симпатии:
    0
    Так и не уловил очевидной связи между двумя действиями
    Здесь устанавливаем свойство объекта.

    А здесь обращаемся к самостоятельной переменной.

    Или у Вас (извините, у глубокоуважаемого автора) "контроллер продукта" отвечает за формирование заголовков страницы и делает это в каком-то внутреннем методе? Но тогда тоже неверно...

    я удосужился и с первой страницы беглого просмотра подумал - действительно - та еще хня...
    Теперь утвердился в мысли окончательно.