Перейти к содержанию
Форум поддержки пользователей VamShop

google sitemap


Рекомендуемые сообщения

в модуле на сайте добавляется  в карту только урлы товаров и категорий  нужно добавить еще и ссылки на статьи ...

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

$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($articles_data['articles_id'], $articles_data['articles_name']), 'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS))) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);

как это нужно изменить?

Ссылка на сообщение
Поделиться на другие сайты

если сделать

vam_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $articles['articles_id'] . $SEF_parameter,  'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS)

так то будут короткие  урлы? или как это  изменить

Ссылка на сообщение
Поделиться на другие сайты

во вложении исправленый файл выводить также сцылки статей )

p.s. прикольно сам с собой немного поговорил ) 

<?php
/*
  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2005 osCommerce

  Released under the GNU General Public License
 
  @Author: Raphael Vullriede (osc@rvdesign.de)
*/

  // XML-Specification: https://www.google.com/webmasters/sitemaps/docs/de/protocol.html

  require('includes/application_top.php');

  define('CHANGEFREQ_CATEGORIES', 'weekly');  // Valid values are "always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".
  define('CHANGEFREQ_PRODUCTS', 'daily'); // Valid values are "always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".

  define('PRIORITY_CATEGORIES', '1.0');
  define('PRIORITY_PRODUCTS', '0.5');
  define('PRIORITY_ARTICLES', '0.5');

  define('MAX_ENTRYS', 50000);
  define('MAX_SIZE', 10000000);

  define('SITEMAPINDEX_HEADER', "<?xml version='1.0' encoding='UTF-8'?>"."\n".'<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84"'."\n".'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'."\n".'xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84'."\n".'http://www.google.com/schemas/sitemap/0.84/siteindex.xsd">'."\n");
  define('SITEMAPINDEX_FOOTER', '</sitemapindex>');
  define('SITEMAPINDEX_ENTRY', "\t".'<sitemap>'."\n\t\t".'<loc>%s</loc>'."\n\t\t".'<lastmod>%s</lastmod>'."\n\t".'</sitemap>'."\n");

  define('SITEMAP_HEADER', "<?xml version='1.0' encoding='UTF-8'?>"."\n".'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"'."\n".'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'."\n".'xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84'."\n".'http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">'."\n");
  define('SITEMAP_FOOTER', '</urlset>');
  define('SITEMAP_ENTRY', "\t".'<url>'."\n\t\t".'<loc>%s</loc>'."\n\t\t".'<priority>%s</priority>'."\n\t\t".'<lastmod>%s</lastmod>'."\n\t\t".'<changefreq>%s</changefreq>'."\n\t".'</url>'."\n");


  $usegzip        = false;
  $autogenerate   = false;
  $output_to_file = false;
  $notify_google  = false;
  $notify_url     = '';

  // request over http or command line?
  if (!isset($_SERVER['SERVER_PROTOCOL'])) {

    if (count($_SERVER['argv'] > 1)) {
     
      // option p ist only possible of min 1 more option isset
      if ( (strlen($_SERVER['argv'][1]) >= 2) && strpos($_SERVER['argv'][1], 'p') !== true) {
        $notify_google = true;
        $_SERVER['argv'][1] = str_replace('p', '', $_SERVER['argv'][1]);
      }
     
      switch($_SERVER['argv'][1]) {
     
        // dump to file
        case '-f':
          $output_to_file = true;
          $filename = $_SERVER['argv'][2];
          break;
         
        // dump to compressed file
        case '-zf':
          $usegzip        = true;
          $output_to_file = true;
          $filename = $_SERVER['argv'][2];
          break;
         
        // autogenerate sitemaps. useful for sites with more the 500000 Urls
        case '-a':
          $autogenerate = true;
          break;
         
        // autogenerate sitemaps and use gzip
        case '-za':
          $autogenerate   = true;
          $usegzip        = true;
          break;
      }
    }
  } else {

    if (count($_GET) > 0) {

      // dump to file
      if (isset($_GET['f'])) {
        $output_to_file = true;
        $filename = $_GET['f'];
      }
      // use gzip
      $usegzip = (isset($_GET['gzip']) && $_GET['gzip'] == true) ? true : false;
     
      // autogenerate sitemaps
      $autogenerate = (isset($_GET['auto']) && $_GET['auto'] == true) ? true : false;
     
      // notify google
      $notify_google = (isset($_GET['ping']) && $_GET['ping'] == true) ? true : false;
    }
  }

  // use gz... functions for compressed files
  if ($usegzip) {
    $function_open  = 'gzopen';
    $function_close = 'gzclose';
    $function_write = 'gzwrite';
   
    $file_extension = '.xml.gz';
  } else {
    $function_open  = 'fopen';
    $function_close = 'fclose';
    $function_write = 'fwrite';
   
    $file_extension = '.xml';
  }

  // < PHP5
  if (!function_exists('file_put_contents')) {
 
    function file_put_contents($filename, $content) {
   
      $fp = fopen($filename, 'w');
      fwrite($fp, $content);
      fclose($fp);
    }
  }

  // < PHP5
  function iso8601_date($timestamp) {
 
    if (PHP_VERSION < 5) {
       $tzd = date('O',$timestamp);
       $tzd = substr(chunk_split($tzd, 3, ':'),0,6);
       return date('Y-m-d\TH:i:s', $timestamp) . $tzd;
    } else {
      return date('c', $timestamp);
    }
  }

  // generates cPath with helper array
  function rv_get_path($cat_id, $code) {
    global $cat_array;
   
    $my_cat_array = array($cat_id);
   
    while($cat_array[$cat_id][$code]['parent_id'] != 0) {
      $my_cat_array[] = $cat_array[$cat_id][$code]['parent_id'];
      $cat_id = $cat_array[$cat_id][$code]['parent_id'];
    }
   
    return 'cat='.implode('_', array_reverse($my_cat_array));
  }


  function output($string) {
    global $function_open, $function_close, $function_write, $output_to_file, $fp, $autogenerate;
   
    if ($output_to_file || $autogenerate) {
      $function_write($fp, $string);
    } else {
      echo $string;
    }
  }

  $c = 0;
  $i = 1;

  if ($autogenerate) {
    $fp = $function_open('sitemap'.$i.$file_extension, 'w');
    $notify_url = HTTP_SERVER.DIR_WS_HTTP_CATALOG.'sitemap'.$i.$file_extension;
  } else {
    if ($output_to_file) {
      $fp = $function_open($filename, 'w');
      $notify_url = HTTP_SERVER.DIR_WS_HTTP_CATALOG.'sitemap'.$i.$file_extension;
    }
  }


  output(SITEMAP_HEADER);
  $strlen = strlen(SITEMAP_HEADER);


  $cat_result = vam_db_query("
    SELECT
      c.categories_id,
      c.parent_id,
      cd.language_id,
      cd.categories_name,
      UNIX_TIMESTAMP(c.date_added) as date_added,
      UNIX_TIMESTAMP(c.last_modified) as last_modified,
      l.code
    FROM
      ".TABLE_CATEGORIES." c,
      ".TABLE_CATEGORIES_DESCRIPTION." cd,
      ".TABLE_LANGUAGES." l
    WHERE cd.language_id = '".$_SESSION['languages_id']."' and
      c.categories_id = cd.categories_id AND
      cd.language_id = l.languages_id
    ORDER by
      cd.categories_id
  ");

  $cat_array = array();
  if (vam_db_num_rows($cat_result) > 0) {
    while($cat_data = vam_db_fetch_array($cat_result)) {
      $cat_array[$cat_data['categories_id']][$cat_data['code']] = $cat_data;
    }
  }
  reset($cat_array);


  foreach($cat_array as $lang_array) {
    foreach($lang_array as $cat_id => $cat_data) {
   
      $lang_param = ($cat_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$cat_data['code'] : '';
      $date = ($cat_data['last_modified'] != NULL) ? $cat_data['last_modified'] : $cat_data['date_added'];

      $string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_DEFAULT, vam_category_link($cat_data['categories_id'], $cat_data['categories_name']), 'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS))) ,PRIORITY_CATEGORIES, iso8601_date($date), CHANGEFREQ_CATEGORIES);
     
      output($string);
      $strlen += strlen($string);
     
      $c++;
      if ($autogenerate) {
        // 500000 entrys or filesize > 10,485,760 - some space for the last entry
        if ( $c == MAX_ENTRYS || $strlen >= MAX_SIZE) {
          output(SITEMAP_FOOTER);
          $function_close($fp);
          $c = 0;
          $i++;
          $fp = $function_open('sitemap'.$i.$file_extension, 'w');
          output(SITEMAP_HEADER);
          $strlen = strlen(SITEMAP_HEADER);
        }
      }
    }
  }


  $product_result = vam_db_query("
    SELECT
      p.products_id,
      pd.products_name,
      pd.language_id,
      UNIX_TIMESTAMP(p.products_date_added) as products_date_added,
      UNIX_TIMESTAMP(p.products_last_modified) as products_last_modified,
      l.code
    FROM
      ".TABLE_PRODUCTS." p,
      ".TABLE_PRODUCTS_DESCRIPTION." pd,
      ".TABLE_LANGUAGES." l
    WHERE pd.language_id = '".$_SESSION['languages_id']."' and
      p.products_status='1' AND
      p.products_id = pd.products_id AND
      pd.language_id = l.languages_id
    ORDER BY
      p.products_id
  ");

  if (vam_db_num_rows($product_result) > 0) {
    while($product_data = vam_db_fetch_array($product_result)) {
   
      $lang_param = ($product_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$product_data['code'] : '';
      $date = ($product_data['products_last_modified'] != NULL) ? $product_data['products_last_modified'] : $product_data['products_date_added'];
     
      $string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($product_data['products_id'], $product_data['products_name']), 'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS))) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);
     
      output($string);
      $strlen += strlen($string);
     
      $c++;
      if ($autogenerate) {
        // 500000 entrys or filesize > 10,485,760 - some space for the last entry
        if ( $c == MAX_ENTRYS || $strlen >= MAX_SIZE) {
          output(SITEMAP_FOOTER);
          $function_close($fp);
          $c = 0;
          $i++;
          $fp = $function_open('sitemap'.$i.$file_extension, 'w');
          output(SITEMAP_HEADER);
          $strlen = strlen(SITEMAP_HEADER);
        }
      }
    }
  }

  $articles_result = vam_db_query("
    SELECT
      a.articles_id,
      ad.articles_name,
      ad.language_id,
      UNIX_TIMESTAMP(a.articles_date_added) as articles_date_added,
      UNIX_TIMESTAMP(a.articles_last_modified) as articles_last_modified,
      l.code
    FROM
      ".TABLE_ARTICLES." a,
      ".TABLE_ARTICLES_DESCRIPTION." ad,
      ".TABLE_LANGUAGES." l
    WHERE ad.language_id = '".$_SESSION['languages_id']."' and
      a.articles_status='1' AND
      a.articles_id = ad.articles_id AND
      ad.language_id = l.languages_id
    ORDER BY
      a.articles_id
  ");

  if (vam_db_num_rows($articles_result) > 0) {
    while($articles_data = vam_db_fetch_array($articles_result)) {
   
      $lang_param = ($articles_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$articles_data['code'] : '';
      $date = ($articles_data['articles_last_modified'] != NULL) ? $articles_data['articles_last_modified'] : $articles_data['articles_date_added'];
     
      $string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_ARTICLE_INFO, 'articles_id=' . $articles_data['articles_id'] . $SEF_parameter,  'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS))) , PRIORITY_ARTICLES, iso8601_date($date), CHANGEFREQ_PRODUCTS);
     
      output($string);
      $strlen += strlen($string);
     
      $c++;
      if ($autogenerate) {
        // 500000 entrys or filesize > 10,485,760 - some space for the last entry
        if ( $c == MAX_ENTRYS || $strlen >= MAX_SIZE) {
          output(SITEMAP_FOOTER);
          $function_close($fp);
          $c = 0;
          $i++;
          $fp = $function_open('sitemap'.$i.$file_extension, 'w');
          output(SITEMAP_HEADER);
          $strlen = strlen(SITEMAP_HEADER);
        }
      }
    }
  }

  output(SITEMAP_FOOTER);
  if ($output_to_file || $autogenerate) {
    $function_close($fp);
  }

  // generates sitemap-index file
  if ($autogenerate && $i > 1) {
    $notify_url = HTTP_SERVER.DIR_WS_HTTP_CATALOG.'sitemap_index'.$file_extension;
    $fp = $function_open('sitemap_index'.$file_extension, 'w');
    $function_write($fp, SITEMAPINDEX_HEADER);
    for($ii=1; $ii<=$i; $ii++) {
      $function_write($fp, sprintf(SITEMAPINDEX_ENTRY, HTTP_SERVER.DIR_WS_HTTP_CATALOG.'sitemap'.$ii.$file_extension, iso8601_date(time())));
    }
    $function_write($fp, SITEMAPINDEX_FOOTER);
    $function_close($fp);
  }

  if ($notify_google) {
    fopen('http://www.google.com/webmasters/sitemaps/ping?sitemap='.urlencode($notify_url), 'r');
  }

  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>[/code]

нехочет отправлять вложение хоть так будет )

Ссылка на сообщение
Поделиться на другие сайты

Спасибо за файлик.

Неплохо ведь поговорил, в итоге есть результат в виде файлика, уже не зря значит. :)

Ссылка на сообщение
Поделиться на другие сайты
  • 7 months later...

mosquito, огромное спасибо тебе за изменённый файлик. Я вот как раз думал о том же, что в файле только индекс для товаров, а статьи игнорируются.

Думаю для окончательной версии сайтмапа нужно дабавить ещё индексацию страниц типа "shop_content.php?coID=4" и новостей, т.к. зачастую на этих страницах содержится информация, которая пригодится поисковикам и соответственноулучшит индексацию и видимость сайта.

К сожалению с пхп+мускуль у меня не так всё хорошо, как хотелось бы. И потому есть просьба к умельцам доделать по возможности файлик. Думаю по образу и подобию это будет не так сложно для тех, кто в этом разбирается.

Что скажете?

Ссылка на сообщение
Поделиться на другие сайты
  • 4 months later...

сори что поднимаю столь старую тему.

подскажите где это сам модуль google sitemap в админке?

а также где лежит сам файл который Вы правили

Ссылка на сообщение
Поделиться на другие сайты
  • 2 years later...

Добрый День!

В роботе закрыт от индекса файл Disallow: /shop_content.php

Но в sitemap это все прописывает. Как это можно поправить что б эти страницы не попадали в sitemap?

Вот пример страниц которые прописываются в sitemap

http://www.devi-devi.ru/shop_content.php/coID/11

http://www.devi-devi.ru/shop_content.php/coID/10

http://www.devi-devi.ru/shop_content.php/coID/2

и.т.п.

[/CODE] Так же в роботе закрыт Disallow: /print_product_info.php? Но в sitemap это все прописывает. Как это можно поправить что б эти страницы не попадали в sitemap? Вот пример страниц которые прописываются в sitemap
[CODE]http://www.devi-devi.ru/print_product_info.php/products_id/186


http://www.devi-devi.ru/print_product_info.php/products_id/36
и.т.п.

Ссылка на сообщение
Поделиться на другие сайты

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

Несмотря на xml карту.

Ссылка на сообщение
Поделиться на другие сайты

они в индексе (

лучше их убрать из XML карты, но я незнаю как

гугл ругает меня что в роботе запрещено, а в xml прописывает

Подскажите как убрать

Ссылка на сообщение
Поделиться на другие сайты

Так Вы google_sitemap.php хоть открывали?

Удалите просто не нужный вывод страниц, если например речь про shop_content.php страницы, то попробуйте удалить:



if (vam_db_num_rows($product_result) > 0) {
while($product_data = vam_db_fetch_array($product_result)) {

$lang_param = ($product_data['code'] != DEFAULT_LANGUAGE) ? '&language='.$product_data['code'] : '';
$date = ($product_data['last_modified'] != NULL) ? $product_data['last_modified'] : $product_data['date_added'];

$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_CONTENT, 'coID='.$product_data['content_id']))) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);

output($string);
$strlen += strlen($string);

$c++;
if ($autogenerate) {
// 500000 entrys or filesize > 10,485,760 - some space for the last entry
if ( $c == MAX_ENTRYS || $strlen >= MAX_SIZE) {
output(SITEMAP_FOOTER);
$function_close($fp);
$c = 0;
$i++;
$fp = $function_open('sitemap'.$i.$file_extension, 'w');
output(SITEMAP_HEADER);
$strlen = strlen(SITEMAP_HEADER);
}
}
}
}
[/code]

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте.

Подскажите что нужно поправить, что бы выводились правильные url на кирилице в файле google_sitemap.php. У меня выводится какая то кваказябра по которой нельзя попасть на нужную страницу!

http://instrumentimsk.ru/google_sitemap.php

Ссылка на сообщение
Поделиться на другие сайты

Да! специально все проверил.

Скачал, на всякий случай, последнюю версию файла - результат одинаковый!!!

Ссылка на сообщение
Поделиться на другие сайты

Так Вы google_sitemap.php хоть открывали?

Удалите просто не нужный вывод страниц, если например речь про shop_content.php страницы, то попробуйте удалить:

Тут нет ошибки ? я попробывал убрал этот код, но убралось /product_info.php вместо shop_content.php

Подскажите пожалуйста!

если я не путаю то нужно удалитьвот это


$product_result = vam_db_query("
SELECT
c.content_id,
c.content_title,
c.content_text,
c.languages_id,
UNIX_TIMESTAMP(now()) as date_added,
UNIX_TIMESTAMP(now()) as last_modified,
l.code
FROM
".TABLE_CONTENT_MANAGER." c,
".TABLE_LANGUAGES." l
WHERE c.languages_id = '".$_SESSION['languages_id']."' and
c.content_status='1' AND
c.content_url='' AND
c.content_id!='5' AND
c.content_group!='5' AND
c.languages_id = l.languages_id
ORDER BY
c.content_id
");
[/CODE]

Ссылка на сообщение
Поделиться на другие сайты

Да! специально все проверил.

Скачал, на всякий случай, последнюю версию файла - результат одинаковый!!!

Кстати, http://instrumentimsk.ru/market.php выводится нормально

Ссылка на сообщение
Поделиться на другие сайты

По поводу url, попробуйте поменять:


$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($product_data['products_id'], $product_data['products_name']), 'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS))) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);
[/code] на:
[code]
$string = sprintf(SITEMAP_ENTRY, vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($product_data['products_id'], $product_data['products_name']), 'NONSSL', false, SEARCH_ENGINE_FRIENDLY_URLS) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);

Ссылка на сообщение
Поделиться на другие сайты

По поводу информационных страниц.

А если поменять:



$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_CONTENT, 'coID='.$product_data['content_id']))) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);

output($string);
[/code] например на:
[code]

//$string = sprintf(SITEMAP_ENTRY, htmlspecialchars(utf8_encode(vam_href_link(FILENAME_CONTENT, 'coID='.$product_data['content_id']))) , PRIORITY_PRODUCTS, iso8601_date($date), CHANGEFREQ_PRODUCTS);

//output($string);

Ссылка на сообщение
Поделиться на другие сайты

Странное дело!

Поменял, но результат переменный! Какие-то нормально отображаются, какие-то по прежнему!

http://instrumentimsk.ru/google_sitemap.php

Ссылка на сообщение
Поделиться на другие сайты

Кстати, похоже, что категории как отображались? так и отображаются (кваказябрами), а товар стал нормально отображаться!

Подскажите где подправить!

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...