как сделать отображенение разных meta tegov для каждой страницы

Тема в разделе "PHP", создана пользователем Juri, 14 апр 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    В общем хотелось бы что б через админку можно было прописывать свои метатеги для каждой страницы сайта. но в ручную добавлять все страницы не удобно, как сделать скрипт который бы прошелся по сайту и собрал адреса всех его страниц и закинул в бд. поясните алгоритм если можно то с куском кода. заранее спасибо.
     
  2. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    Если у вас есть админка, значит сайт динамический. Следовательно, скорее всего все материалы лежат в базе данных. Отсюда алгоритм:

    Добавляем в таблицу, которая хранит тексты, новое поле для метатегов, возможно стоит даже сделать по полю на каждый метатег (минмум необходимых - это description и keywords).

    Дальше пишете скрипт, который в цикле вытаскивает из таблицы текстов n записей, в которых метатеги пустые (...WHERE meta_descr = "" AND meta_keyw = "" LIMIT n) до тех пор, пока выборка не вернет пустой результат.

    Дальше, в зависимости от того, какие тэги вы хотите заполнять, пишете свой алгоритм заполнения, заполняете в вытащенных записях соответствующие поля и обновляете соотв. записи в базе.

    Если это описание, то, как минимум, туда можно поместить название статьи и краткое упоминание о сайте (это скорее уже надо к товарищам в SEO отедл обращаться). Если хотите заполнить ключевые слова, самое простое, что приходит в голову - разбить текст на слова, выкинуть служебные и короткие, по оставшимся пройтись стеммером и подсчитать, сколько раз встречается каждый корень. Отсортировать по убыванию и поместить в метатэг первые десять (но не стемов, а слов!)
     
  3. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    пользуемся наздоровье :ay:

    PHP:
        // Мета теги
    // in $title, $content

        
    $keywords split(" "ereg_replace("[`~!@#\$%^\&*()+=|{};:<>.,?\/\\]"" "$title));
        foreach (
    $keywords as $key => $val) {
            if (
    strlen($val) < 3) {
                unset(
    $keywords[$key]);
            }
        }
        
    query("INSERT INTO `" $table_prefix "postmeta` SET `post_id`='" $insertId ."', `meta_key`='keywords', `meta_value`='" addslashes(join(", "$keywords)) . "'",$wpdb_link);

        
    $text substr(strip_tags($content), 0250);
        
    $words explode(" "$text);
        unset(
    $words[count($words)-1]);
        
    $description trim(join(" "$words));
        
    query("INSERT INTO `" $table_prefix "postmeta` SET `post_id`='" $insertId ."', `meta_key`='description', `meta_value`='" addslashes($description) . "'",$wpdb_link);
     
  4. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    [ПЕРЕНЕСТИ В НОВИЧКИ]
     
  5. omni

    omni Постоялец

    Регистр.:
    13 июн 2007
    Сообщения:
    99
    Симпатии:
    15
    для сайтиков попроще (без баз данных) можно просто выдирать имя страницы на лету

    $ы = substr ($_SERVER['REQUEST_URI'], 1, strlen($_SERVER['REQUEST_URI'])-5);

    менять ненужные символы на нужные

    $ы = str_replace ('-', ' ', $ы);

    и вписывать куда надо

    <meta name="description" content="Общее описание для всех страниц - <? echo $ы; ?>">
     
Статус темы:
Закрыта.