new file

Как сгенерировать HTML-страницу динамически с помощью PHP?

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

Мне было интересно, если / как я могу «создать» страницу html для каждой строки базы данных, так как я предполагаю, что это будет лучше для SEO? Наличие нескольких страниц с ключевыми словами вместо одной динамической страницы?

Мои свойства добавляются в базу данных с помощью формы / системы загрузки на сайте, я думал, что создание страницы при загрузке может быть проще всего, но я открыт для предложений!

Мне было интересно, если / как я могу создать html-страницу для каждой строки базы данных ?

Вам просто нужно создать один php файл, который генерирует html-шаблон, какие изменения будут текстовым контентом на этой странице. На этой странице вы можете получить параметр (например, идентификатор строки) через POST или GET а затем получить информацию из базы данных.

Я предполагаю, что это будет лучше для SEO?

Поисковая система, поскольку Google интерпретирует, что example.php?id=33 и example.php?id=44 – разные страницы, и да , этот способ лучше, чем отдельная страница листинга с точки зрения SEO, поэтому вам просто нужны два php-файла по крайней мере ( listing.php и single.php ), потому что лучше связать эти страницы с listing.php .

Дополнительные советы:

example.php?id=33 действительно уродливый и не очень дружелюбный к SEO, возможно, вам нужен код перезаписи URL. Что-то вроде example/properties/property-name лучше;)

На всякий случай кто-то хочет создать / создать фактический HTML файл …

$myFile = "filename.html"; // or .php $fh = fopen($myFile, 'w'); // or die("error"); $stringData = "your html code php code goes here"; fwrite($fh, $stringData); fclose($fh); 

В соответствии с вашим требованием вам не нужно генерировать динамическую страницу html. Это можно сделать с помощью файла .htaccess.

Тем не менее это пример кода для создания HTML-страницы

вы можете создать любой файл .html, .php, просто изменив расширение в имени файла

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

Я предлагаю вам использовать URL-код перезаписи, достаточный для вашей проблемы, у меня такая же проблема, но с использованием мода перезаписи URL и получения хорошего ответа от SEO. Я могу привести небольшой пример. Пример состоит в том, что вы рассматриваете WordPress, здесь данные хранятся в базе данных, но с использованием URL rewrite mod многие веб-сайты WordPress получают хорошие ответы от Google и получают звание.

Читайте также:  Увеличение памяти php выделено

Пример: wordpress url с кодом url переписать mod – domain.com/?p=123 после перезаписи URL-адреса – domain.com/, например domain.com/seo-url-rewrite-mod

я думаю, вы поняли, что я хочу сказать вам

Я просто обновляю код, чтобы содержать изменения, и прокомментирую его, чтобы вы могли ясно видеть, что происходит …

.htm")) $action = $tmp_action; > // Include $action include("templates/$action.htm"); include("templates/footer.htm"); в .htm")) $action = $tmp_action; > // Include $action include("templates/$action.htm"); include("templates/footer.htm"); в .htm")) $action = $tmp_action; > // Include $action include("templates/$action.htm"); include("templates/footer.htm"); 

Я работал как-то похоже на это, и у меня есть код, который может вам помочь. Живой пример здесь и ниже, это код, который я использую для вас, чтобы он был ссылкой.

создание-page.php

', '', '', '', ''); // Get the couples-template.php as a string. $template = file_get_contents($template_path.$template_file); // Fills the template. $new_file = str_replace($placeholders, $data, $template); // Generates couple's URL and makes it frendly and lowercase. $couples_url = str_replace(' ', '', strtolower($data['groom-name'].'-'.$data['bride-name'].'.php')); // Save file into couples directory. $fp = fopen($couples_path.$couples_url, 'w'); fwrite($fp, $new_file); fclose($fp); // Set the variables to pass them to success page. $_SESSION['couples_url'] = $couples_url; // If working in root directory. $_SESSION['couples_path'] = str_replace('.', '', $couples_path); // If working in a sub directory. //$_SESSION['couples_path'] = substr_replace($base_path, '', -1).str_replace('.', '',$couples_path); header('Location: success.php'); ?> 

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

Это выглядит забавно, но это работает.

   

New HTML file

"; // Write the contents back to the file file_put_contents($file, $current); ?>

Источник

Генерация html на PHP

Предлагаю вашему вниманию свое решение по генерации html на PHP. Задача вроде бы тривиальная, но хотелось бы, чтобы это было расширяемо, кратко, но в тоже время с хорошим функционалом. Получилось вроде не плохо.

Сразу скажу( как многие считают в комментариях), что задача ставилось не написать шаблонизатор (которых и так много) и не заменить шаблонизатор JavaScript. Я прекрасно знаю, что true way это разделять html и данные. Но мне понадобилось писать html в классах, для создания компонентов фреймворка, на подобие CGridView в yii, стоит ли в таких местах выносить html в отдельные файлы решать вам.

Основная цель, избавится от html в классах и функциях.

Простой пример, обычная кнопка:

CHtml::create() ->p() ->a(array('href' => 'http://habrahabr.ru', 'class' => 'btn')) ->text('Перейти') ->render(); 

Ничего хитрого, можно было бы этим и ограничется, но захотелось циклы:

 $arr = array('1' => 'Первый', '2' => 'Второй'); CHtml::create() ->select($options) ->each(CHtml::plainArray($arr, 'value', 'text')) ->option('array("value" => $data->value)') ->text('$data->text') ->end() ->endEach() 
$arr = array( array('value' => '1', 'text' =>'Первый'), array('value' => '2', 'text' => 'Второй') ); 

Теги внутри цикла могут содержать функции или строки с eval выражениями, вложенность любая, пример с таблицей:

$columns = array( array('id' => 'NAME', 'label' => 'Имя'), array('id' => 'AGE', 'label' => 'Возраст') ); $data = array( array('NAME' => 'Петр', 'AGE' => 29), array('NAME' => 'Василий', 'AGE' => 32) ); CHtml::create() ->table() ->thead() ->tr() ->each($columns) ->th() ->text(function($column)< return $column['label']; >) ->end() ->endEach() ->end() ->end() ->tbody() ->each($data) ->tr() ->each($columns) ->td() ->text(function($row, $column) < return $row[$column['id']]; >) ->end() ->endEach() ->end() ->endEach() ->render(); 

Незакрытые теги закрываются автоматически.

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

 class CMyHtml extends CHtml < public function a($options = array()) < $default = array( 'href' =>'javascript:void(0)' ); return parent::a(array_replace($default, $options)); > > 
class CForm < private $_lastLabel = ''; public function __construct(CModel $model, CHtml $html = null) < $this->_model = $model; $this->_html = $html ?: CHtml::create(); > public function __call($method, $ps) < $options = $ps ? $ps[0]: array(); if ($method === 'label') < $this->_lastLabel = isset($options['for']) ? $this->_model->getLabel($options['for']) : ''; > if ($method === 'text' && $this->_lastLabel) < $options = $options ?: $this->_lastLabel; $this->_lastLabel = ''; > $this->_html->$method($options); return $this; > > 

Само решение можно посмотреть и попробовать на github.

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Php class to generate html code

License

Airmanbzh/php-html-generator

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Create HTML tags and render them efficiently.

return HtmlTag::createElement(); // returns an empty HtmlTag Container
return HtmlTag::createElement('a'); // returns an HtmlTag containing a 'a' tag
  • it always generates valid HTML and XHTML code
  • it makes templates cleaner
  • it's easy to use and fast to execute
echo(HtmlTag::createElement('a'));
$tag = HtmlTag::createElement('a') echo( $tag );
echo HtmlTag::createElement('div');
echo(HtmlTag::createElement('p')->text('some content'));
echo(HtmlTag::createElement('div')->addElement('a')->text('a text'));
$container = HtmlTag::createElement('div'); $container->addElement('p')->text('a text'); $container->addElement('a')->text('a link');

Classics attributes (method : 'set')

$tag = HtmlTag::createElement('a') ->set('href','./sample.php') ->set('id','myID') ->text('my link'); echo( $tag );
a href='./sample.php' id='myID'>my linka>

Shortcut to set an ID attribute (method : 'id')

$tag = HtmlTag::createElement('div') ->id('myID'); echo( $tag );

Class management (method : 'addClass'/'removeClass')

$tag = HtmlTag::createElement('div') ->addClass('oneClass') ->text('my content') echo( $tag );
div class pl-s">oneClass">my contentdiv>
$tag = HtmlTag::createElement('div') ->addClass('aClass') ->addClass('anothereClass') ->text('my content') echo( $tag );
div class pl-s">aClass anothereClass">my contentdiv>
$tag = HtmlTag::createElement('div') ->addClass('firstClass') ->addClass('secondClass') ->text('my content') ->removeClass('firstClass'); echo( $tag );
div class pl-s">secondClass">my contentdiv>

Text and content are generated according to the order of addition

$tag = HtmlTag::createElement('p') ->text('a text') ->addElement('a') ->text('a link');

To generate content before text, 2 solutions :

$tag = HtmlTag::createElement('p') ->addElement('a') ->text('a link') ->getParent() ->text('a text');
$tag = HtmlTag::createElement('p'); $tag->addElement('a')->text('a link'); $tag->text('a text');

Источник

Оцените статью