1. Подготовленные элементы
1) Заменить файл шрифта JS
JS -код:
Функция COM_STEWARTSPEAK_REPLEATICATION () {/* Динамический генератор заголовка от Stewart Rosenberger http://www.stewartspeak.com/headings/ Этот скрипт ищет на веб-странице для конкретных или общих элементов и заменяет их динамически сгенерированными изображениями в сочетании с сервером. Script.*/replacelector ("h1", "dynatext/heading.php", true); // Первые два параметра должны быть изменены var testurl = "dynatext/varcing.gif"; // modify to соответствующий путь изображения var donotprintimages = false; var printercs = "spectation-print.css"; var hideflicker = false; var hideflickercss = "Замену screen.css"; var hideflickertimeout = 100; // Ответственные модификации могут быть внесены здесь/* -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- further customize this script's abilities, make sure you're familiar with JavaScript. И возьмите газировку или что -то в этом роде.*/ Var ements; var ImageLoaded = false; var DocumentLaded = false; Функция заменяет селектор (селектор, URL, WordWrap) {if (typeOf elects == "undefined") elects = new Array (); items [items.length] = {selector: selector, url: url, wordwrap: wordwrap};} if (hideflicker) {document.write ('<link id = "hide-flicker" rel = "stylesheet" media = "screen" href = "' + hideflickercss + '" />'); window.flickerCheck = function () {if (! ImageLoaded) setStylesheetState ('hide-flicker', false); }; setTimeout ('window.flickerCheck ();', hideflickertimeout)} if (donotprintimages) document.write ('<<link id = "print-text" rel = "stylesheet" media = "print" href = "' + printercss + '" />'); var test = new Image (); test.onload = function () {ImageLoaded = true; if (документ загружен) замена (); }; test.src = testurl + "? date =" + (new Date ()). getTime (); AddLoadHandler (function () {documentLoad = true; if (ImageLoaded) replace ();}); function documentload () {documentload = true; if (ImageLoaded) replassion ();} function function () {for (var i = 0; i <exection.length; i ++) {var elements = getElementsByselector (элементы [i] .selector); if (elements.length> 0) для (var j = 0; j <elements.length; j ++) {if (! elements [j]) продолжить; var text = ExtractText (Elements [j]); while (elements [j] .haschildnodes ()) elements [j] .RemoveChild (элементы [j]. Firstchild); var tokens = элементы [i] .WordWrap? text.split (''): [text]; for (var k = 0; k <tokens.length; k ++) {var url = элементы [i] .url+"? Text ="+ascoe (tokens [k]+'')+"& selector ="+escape (items [i] .selector); var image = document.createElement ("img"); image.classname = "замена"; image.alt = tokens [k]; image.src = url; Элементы [j] .appendChild (Image); } if (donotprintimages) {var span = document.createElement ("span"); span.style.display = 'none'; span.classname = "print-text"; span.appendchild (document.createtextnode (text)); Элементы [j] .appendchild (Span); }}} if (hideflicker) setStylesheetState ('hide-flicker', false);} функция AddLoadHandler (Handler) {if (window.AddeventListener) {window.AddeventListener ("загрузка", Handler, false); } else if (window.attachevent) {window.attachevent ("Onload", Handler); } else if (window.onload) {var oldhandler = window.onload; window.onload = function piggyback () {oldhandler (); Хэндлер (); }; } else {window.onload = Handler; }} функция setStylesheetState (id, enabled) {var sheet = document.getElementbyid (id); if (sheet) sheet.disabled = (! inbold);} функция extracttext (element) {if (typeof element == "string") return element; else if (typeof element == "undefined") return Element; else if (element.innertext) return element.innertext; var text = ""; var kids = element.childnodes; for (var i = 0; i <kids.length; i ++) {if (kids [i] .nodeType == 1) text+= extracttext (kids [i]); иначе if (kids [i] .nodeType == 3) текст += дети [i] .nodevalue; } return Text;} /* Находит элементы на странице, которые соответствуют данному правилу селектора CSS. Некоторые сложные правила не совместимы. Основано на превосходной функции «Getelementementsbyselector» Саймона Уиллисона. Исходный код (с комментариями и описанием): http://simon.incutio.com/archive/2003/03/25/getelementsbyselector*/function getelementsbyselector (selector) {var tokens = selector.split (''); var currentContext = new Array (Document); for (var i = 0; i <tokens.length; i ++) {token = tokens [i] .replace (/^/s+/, ''). Заменить (// s+$/, ''); if (token.indexof ('#')> -1) {var bits = token.split ('#'); var Tagname = bits [0]; var id = биты [1]; var element = document.getElementbyId (id); if (tagname && element.nodeName.toloversate ()! = Tagname) return new Array (); currentContext = новый массив (элемент); продолжать; } if (token.indexof ('.')> -1) {var bits = token.split ('.'); var Tagname = bits [0]; var classname = bits [1]; if (! Tagname) tagname = '*'; var найден = новый массив; var foundcount = 0; for (var h = 0; h <currentContext.length; h ++) {var elements; if (tagname == '*') elements = currentContext [h]. Все? currentContext [h] .ll: currentContext [h] .getElementsBytagName ('*'); else elements = currentContext [h] .getElementsbytagname (Tagname); for (var j = 0; j <elements.length; j ++) найден [foundcount ++] = elements [j]; } currentContext = new Array; var currentContextIntex = 0; for (var k = 0; k <sucd.length; k ++) {if (найдено [k] .classname && sud [k] .classname.match (new Regexp ('// b'+classname+'// b')))) currentContext [currentContextIndex ++] = sud [k]; } продолжать; } if (token.match (/^(/w*)/[(/w+) ([= ~/|/^/$/*]?) =? if (! Tagname) Tagname = '*'; CurrentContext [h] .GetElementsBytagname (Tagname); ATTRVALUE); REGEXP ('^'+ATTRVALUE+'-?')); }; }; break; default : checkFunction = function(e) { return e.getAttribute(attrName); }; } currentContext = new Array; var currentContextIndex = 0; for(var k=0;k<found.length;k++) { if(checkFunction(found[k])) currentContext[currentContextIndex++] = found[k]; } continue; } tagName = token; var found = Новый массив; execute codeif (document.createelement && document.getElementsbytagname &&! navigator.useragent.match (/opera //? 6/i)) com_stewartspeak_replacement ();2) Сгенерировать файл PHP изображения
<? PHP/* Генератор динамического заголовка Стюарта Розенбергера http://www.stewartspeak.com/headings/ Этот скрипт генерирует изображения текста PNG, записанные в шрифте/размере, который вы указываете. Эти изображения PNG передаются обратно в браузер. При желании их можно кэшировать для последующего использования. Если будет найдено кэшированное изображение, новое изображение не будет сгенерировано, и существующая копия будет отправлена в браузер. Дополнительную документацию по возможностям обработки изображений PHP можно найти по адресу http://www.php.net/image/ */$ font_file = 'trebuc.ttf'; // Соответствующие xiuga $ font_size = 23; // Соответствующие модификации могут быть сделаны $ font_color = '#00000000'; ; $ transparent_background = true; $ cache_images = true; $ cache_folder = 'cache';/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ; $ send_buffer_size = 4096; // Проверка на GD Supportif (! function_exists ('ImageCreate'))) fatal_error ('error: server не поддерживает генерацию изображений PHP'); // Очистить Textif (пусто ($ _ get ['text'])) fatal_error ('error: no text не указан.'); $ text = $ _get ['text']; if (get_magic_quotes_gpc ()) $ text = stripslashes ($ text); $ text = javascript_to_html ($ text); // Ищите кэшированную копию, отправьте, если она существует $ hash = md5 (basename ($ font_file). $ font_size. $ font_color. $ founal_color. $ transparent_background. $ text); $ cache_filename = $ cache_folder. '/'. $ hash. $ extension; if ($ cache_images && ($ file = @fopen ($ cache_filename, 'rb'))) {header ('content-type:'. $ mime_type); while (! feof ($ file)) print (($ buffer = fread ($ file, $ send_buffer_size))); fclose ($ file); exit;} // Проверьте доступность шрифта $ font_found = is_readable ($ font_file); if (! $ font_found) {fatal_error ('Ошибка: в сервере отсутствует указанный шрифт. hex_to_rgb ($ font_color); $ dip = get_dip ($ font_file, $ font_size); $ box = @imagettfbbox ($ font_size, 0, $ font_file, $ text); $ image = @ImageCReate (ABS ($ Box]-$); ! $ box) {fatal_error ('Ошибка: Сервер не может создать это изображение. ImageColorAllocate ($ image, $ font_rgb ['red'], $ font_rgb ['green'], $ font_rgb ['blue']); Imagettftext ($ image, $ font_size, 0,-$ box [0], abs ($ box [5]-$ box [3])-$ box [1], $ font_color, $ font_file, $ text); // Установить Transparentif ($ transparent_background) ImageColorTransparent ($ image, $ founal_color); заголовок ('контент-тип:'. $ mime_type); ImagePng ($ image); // Сохранить копию изображения для cacheif ($ cache_images) {@imagepng ($ image, $ cache_filename);} imadedestroy ($ image); Выход ; /* Попробуйте определить «DIP» (пиксели, упавшие ниже базовой линии) этого шрифта для этого размера.*/Функция get_dip ($ font, $ size) {$ test_chars = 'abcdefghijklmnopqrstuvwxyz'. 'Abcdefghijklmnopqrstuvwxyz'. '1234567890'. '! @#$%^&* ()/' "///;.,` ~ <> [] {}-+_- = '; $ box = @Imagettfbbox ($ size, 0, $ font, $ test_chars); вернуть $ box [3];}/* Попытка создать изображение, содержащее сообщение об ошибке. Браузер как 500 код. ImageColorate ($ Image, 255,255,255); Заголовок кода («http/1.0 500 Внутренний сервер»); if (substr ($ hex, 0,1) == '#') $ hex = substr ($ hex, 1); substr ($ hex, 2,1); $ rgb ['Blue'] = HexDec (substr ($ hex, 4,2); preg_match_all ('/%u ([0-9a-f] {4})/i', $ text, $ matches); '&#'. Hexdec ($ matches [1] [$ i]). ';', $ text);3) Требуемые шрифты
Здесь вы помещаете необходимое самооценку в тот же каталог, что и файлы JS и PHP (вы также можете изменить его, но соответствующий файл также необходимо изменить) также необходимо изменить)
4) Библиотека PHP GD2
2. Реализованный HTML -код
<? php // Загрузить всплывающую библиотеку Utils // require_once 'include/popup_utils.inc.php';?> <! Doctype html public "-// w3c // dtd xhtml 1.1 // en "" http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd "> <html> <Head> <Title> Профессиональная поисковая оптимизация с PHP: таблица содержимого </tit src = "dynatext/replace.js"> </script> </head> <body onload = "window.resizeto (800 600);" onResize = 'settimeout ("window.resizeto (800 600);", 100)'> <h1> Оптимизация профессиональной поисковой машины с PHP: Содержимое содержимого </h1> <? PHP // отображать всплывающую навигацию только в том случае, когда посетитель поступает из Serp // Display_Navigation (); // display_popup_navigation (); ?> <ol> <li>You: Programmer and Search Engine Marketer</li> <li>A Primer in Basic SEO</li> <li>Provocative SE-Friendly URLs</li> <li>Content Relocation and HTTP Status Codes</li> <li>Duplicate Content</li> <li>SE-Friendly HTML and JavaScript</li> <li>Web Syndication and Social Закладки </li> <li> Black Hat Seo </li> <li> sitemaps </li> <li> Ссылка на приманку </li> <li> IP Cloaking, Geo Targeting и доставка IP </li> <li> Seo на иностранном языке </li> <li> Заг?3. Сравнение до и после использования
Перед использованием
После использования