Как добавить значения мета-тега для seo с помощью PHP?

#php #html #.htaccess #if-statement

Вопрос:

Я использую один файл заголовка для каждой страницы, на которой будет отображаться заголовок HTML(который включает мета-теги и другие ссылки CSS).

Здесь я использовал все так динамично, как мне нравится, в случае канонических тегов, которые я использовал $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_HOST'] , и все другие ссылки на CSS также доступны, даже если это может быть любой файл из любого каталога.

Теперь я хочу создать одноразовый мета-тег заголовка и теги описания, подобные этому, будут выглядеть как мой основной файл

 <!DOCTYPE html>
<html lang="en">
  <head>
    <title><?php echo $page_title; ?></title>
    <meta name="description" content="<?php echo $page_content; ?>" />
    //Other meta tags amp; linking to css amp; js files
  </head>
 <body> 
    // Content ........
 </body>
</html>
 

Теперь вот в чем загвоздка: многие люди скажут, что просто используйте

 $page_title = "Here is the title of the specific page";
$page_content = "Here goes the long-form description describing the page of  specific page";
 

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

Но моя страница индекса выглядит так, позвольте мне тоже это объяснить. (Используя Bulma в качестве основы)

   <?php
        require 'include/db_connect.php';
        require 'include/header.php'; 
    ?>


 
    <form name="submitform" method="POST">
        <div class="columns is-multiline" id="wrapper">


                <div class="column is-6-desktop is-12-tablet" id="main_content">


                
                    <div class="box">


                            <?php                         

                                if($country)
                                {

                            ?>
                                <?php require 'inc/country.php'; ?>

                            <?php
                                }

                                else if($country amp;amp; $state)
                                { 
                            ?>
                            
                                <?php require 'inc/country_state.php' ?>                            

                            <?php
                                }
                                else if($country amp;amp; $state amp;amp; $district)
                                {
                            ?>
                            
                                <?php require 'inc/country_state_district.php'; ?>


                            <?php
                                }
                                else 
                                {
                                   
                            ?>
                            
                                <?php require 'inc/other_than.php'; ?>


                            <?php

                                }
                            ?>
                
                </div>
            </div>
        </div>
    </form>


    <?php require 'footer.php'; ?>

</body>
</html>
 

Главное здесь в том, что я использую раскрывающуюся кнопку, которая автоматически отправляется с помощью js, что здесь не имеет значения, но сверху я только что объяснил, какова структура моего кода.

Теперь, как вы можете видеть, структура if-else включает в себя другие файлы, которые создают динамические страницы, но их код начинается только с тела, а не непосредственно с головы, поэтому я не могу добавить эти теги заголовков и описания.
Теперь, как добавить теги заголовка и описания уникально на каждую из этих страниц.
Любые решения, пожалуйста… заранее спасибо

Комментарии:

1. поместите vars раньше require 'include/header.php'; или используйте лучшую структуру , такую как mvc

2. У меня нет четкого представления о MVC, и теперь я почти закончил с этим проектом, кроме этого.

3. тогда попробуйте другое предложение

4. Я думаю, что вы загоняете себя в угол, потому что у вас нет четкого разделения логики и содержания. В этом часть красоты MVC. Но даже без MVC старайтесь выполнять ВСЮ свою логику, прежде чем выводить что-либо одно. Другими словами, что делать, если ваш индексный скрипт собирает все необходимые ресурсы (html-шаблон, заголовок, html-страница, html-нижний колонтитул), а затем в самом конце отображает их? Вы окажетесь вне того угла, в который сами себя загнали, потому что не имеет значения, когда вы получите информацию, главное, чтобы в конце вы собрали ее в правильном порядке.

Ответ №1:

Как уже было написано в комментариях. Вы должны определить переменные перед require 'include/header.php'; или использовать структуру MVC.

Если вы все еще хотите придерживаться существующего кода ob_get_contents() , это может вам помочь.

Используйте ob_start(); в начале, чтобы сказать PHP, чтобы он не печатал никаких выходных данных, а вместо этого записывал выходные данные в буфер.

Затем вы можете позже использовать ob_get_contents(); для извлечения выходного буфера и его печати.

Затем вам нужно выполнить поиск в выходном буфере идентификатора, такого как %page_title%, и заменить его фактическим значением перед отправкой вывода.

Это может выглядеть следующим образом:

 echo str_replace(%page_title%, $page_title, ob_get_contents());
 

Тем не менее я бы предпочел предложить реструктуризировать ваш код, так как решение с выходным буфером работает медленнее, использует больше памяти и плохо отлаживается.

Комментарии:

1. Спасибо за дополнительные знания, которые я принял во внимание, и я уже решил проблему с помощью функций, так что никаких проблем, это также хороший ресурс для меня и других программистов спасибо