Skip to content

Instantly share code, notes, and snippets.

@Abromeit
Created May 17, 2012 22:56
Show Gist options
  • Select an option

  • Save Abromeit/2722140 to your computer and use it in GitHub Desktop.

Select an option

Save Abromeit/2722140 to your computer and use it in GitHub Desktop.

Revisions

  1. Abromeit revised this gist May 18, 2012. 1 changed file with 26 additions and 16 deletions.
    42 changes: 26 additions & 16 deletions metatags.php
    Original file line number Diff line number Diff line change
    @@ -124,8 +124,10 @@
    // -----------------------------------------------------------------------------
    // noindex bei "unwichtigen" Seiten (bzw. Dateien)
    // -----------------------------------------------------------------------------
    $script_basename = basename($_SERVER['SCRIPT_NAME']);

    $meta_robots = 'index,follow';
    if( in_array(basename($_SERVER['SCRIPT_NAME']),$files_noindex) )
    if( in_array($script_basename,$files_noindex) )
    {
    $meta_robots = 'noindex,follow';
    }
    @@ -137,7 +139,7 @@

    // Wenn wir auf der Startseite sind, Metas aus der Index-Seite holen
    if(
    basename($_SERVER['SCRIPT_NAME'])==FILENAME_DEFAULT &&
    $script_basename==FILENAME_DEFAULT &&
    empty($_GET['cat']) &&
    empty($_GET['cPath']) &&
    empty($_GET['manufacturers_id'])
    @@ -227,24 +229,32 @@ function metaTitle($allow_appended_shopname,$title)
    {
    global $metaTitleLength, $metaTitleSeparator;

    // join given stuff
    $title = array_filter((array)$title,'metaClean'); //remove elements that would be empty
    $title = array_unique($title);
    //remove elements that would be empty
    $title = array_filter((array)$title,'metaClean');

    $res = implode($metaTitleSeparator,$title);
    // append shopname if $title && shopname are not empty
    if( $allow_appended_shopname && !empty($title) && metaClean(ML_TITLE) )
    {
    $title[] = ML_TITLE;
    }

    // append shopname
    if( $allow_appended_shopname && !empty($res) )
    // join all that stuff
    $res_tmp = array();
    foreach($title as $k=>$v)
    {
    $shopname = ML_TITLE;
    $res_tmp = $res.$metaTitleSeparator.$shopname;
    // if element is already contained in our title
    if( !empty($res) && strpos($res,$v) !== false )
    continue;

    $res_tmp[] = $v;
    $res = implode($metaTitleSeparator,$res_tmp);

    // shopname isn't empty
    // && shopname isn't already contained in our current generated title
    // && new title length won't exceed our maximum if we append the shopname
    if( metaClean($shopname) && strpos($res,$shopname) === false && strlen($res_tmp) <= $metaTitleLength )
    // if new title length exceeds our maximum
    if( $k > 0 && strlen($res) > $metaTitleLength ) //fixme: not that precise, see metaClean()
    {
    $res = $res_tmp;
    array_pop($res_tmp);
    $res = implode($metaTitleSeparator,$res_tmp);
    break;
    }
    }

    @@ -255,7 +265,7 @@ function metaTitle($allow_appended_shopname,$title)
    // -----------------------------------------------------------------------------


    switch( basename($_SERVER['SCRIPT_NAME']) )
    switch( $script_basename )
    {

    // -----------------------------------------------------------------------------
  2. Abromeit revised this gist May 17, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion metatags.php
    Original file line number Diff line number Diff line change
    @@ -65,7 +65,7 @@
    // -----------------------------------------------------------------------------

    // Max.-Längen wirken sich nur auf automatisch generierte Teile aus.
    $metaTitleLength = 90; // Max. Länge des titles (Anzahl Buchstaben) - default: 65
    $metaTitleLength = 65; // Max. Länge des titles (Anzahl Buchstaben) - default: 65
    $metaDesLength = 155; // Max. Länge der description (Anzahl Buchstaben) - default: 155

    $metaTitleSeparator = ' - '; // Trennzeichen zwischen Title-Tag-Teilen
  3. Abromeit created this gist May 17, 2012.
    606 changes: 606 additions & 0 deletions metatags.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,606 @@
    <?php

    /*---------------------------------------------------------------------------
    $Id$
    xtcModified - community made shopping
    http://www.xtc-modified.org
    Copyright (c) 2010 xtcModified
    -----------------------------------------------------------------------------
    based on:
    (c) 2003 nextcommerce (metatags.php, v1.7 2003/08/14); www.nextcommerce.org
    (c) 2006 xt:Commerce (metatags.php, v.1140 2005/08/10); www.xt-commerce.de
    Released under the GNU General Public License
    -----------------------------------------------------------------------------
    Modified by Gunnar Tillmann (August 2006)
    http://www.gunnart.de
    -----------------------------------------------------------------------------
    AUTOMATISCHE METATAGS MULTILANGUAGE für xt:Commerce 3.04
    -----------------------------------------------------------------------------
    Version 0.97 / 16. Mai 2012 / D.Abromeit / Lucido Media GbR
    - Canonical-Tag Bugfix für Pagination
    - Title, Description, Robots: Diverse Änderungen nach aktuellen Empfehlungen
    - Keywords-Tag entfernt
    - Legacy Funktionen entfernt
    -----------------------------------------------------------------------------
    Version 0.96n / 13. Dezember 2010 / DokuMan / xtcModified
    - Unterstützung für Pagination
    -----------------------------------------------------------------------------
    Version 0.96m / 26. August 2010 / DokuMan / xtcModified
    - Unterstützung für "canonical"-Tag
    -----------------------------------------------------------------------------
    Version 0.96 / 21. Juni 2009
    - Umwandlung von Umlauten in Keywords statt in ae und oe JETZT in &auml; &ouml;
    - "Bindestrich-Wörter" (z.B. T-Shirt oder DVD-Player) werden in den Keywords nicht
    mehr getrennt
    - Metatags auch für ContentManager-Seiten (Achtung! Dazu Erweiterung erforderlich!)
    - Im ContentManager können auch automatische Metatags aus eingebundenen HTML- oder
    Text-Dateien erzeugt werden
    - Standard-Meta-Angaben durch Content-Metas auch mehrsprachig möglich. Dazu eine
    Seite namens "STANDARD_META" anlegen
    - Bei automatisch erzeugen Keywords oder Descriptions werden Wörter nach Zeilen-
    umbrüchen nicht mehr "zusammengezogen"
    - Eigene (mehrsprachige) Metas für die Shop-Startseite möglich - Dazu werden die
    Metas aus der "index"-Seite im ContentManager geholt
    - Seiten-Nummer im Title bei Artikel-Listen (also Kategorien, Sonderangebote etc.)
    - Eigener Title bei Suchergebnissen (Mit Seiten-Nummer, Suchbegriff, ggf. Hersteller
    und Kategorienname)
    - Bei allen Seiten, die nicht "Kategorie", "Startseite", "Content", "Produkt" o.ä.
    sind, wird der Title aus den Einträgen im $breadcrumb-Objekt zusammengesetzt
    - BugFix: BreadCrumb wird nicht mehr verkürzt
    -----------------------------------------------------------------------------
    Inspired by "Dynamic Meta" - Ein WordPress-PlugIn von Michael Schwarz
    http://www.php-vision.de/plugins-scripte/dynamicmeta-wpplugin.php
    ---------------------------------------------------------------------------*/


    // -----------------------------------------------------------------------------
    // Konfiguration...
    // -----------------------------------------------------------------------------

    // Max.-Längen wirken sich nur auf automatisch generierte Teile aus.
    $metaTitleLength = 90; // Max. Länge des titles (Anzahl Buchstaben) - default: 65
    $metaDesLength = 155; // Max. Länge der description (Anzahl Buchstaben) - default: 155

    $metaTitleSeparator = ' - '; // Trennzeichen zwischen Title-Tag-Teilen

    $addPagination = true; // Seiten-Nummern anzeigen?
    $addCatShopTitle = true; // Shop-Titel bei Kategorien anhängen?
    $addProdShopTitle = true; // Shop-Titel bei Produkten anhängen?
    $addContentShopTitle = true; // Shop-Titel bei Contentseiten anhängen?
    $addSpecialsShopTitle = true; // Shop-Titel bei Angeboten anhängen?
    $addNewsShopTitle = true; // Shop-Titel bei Neuen Artikeln anhängen?
    $addSearchShopTitle = true; // Shop-Titel bei Suchergebnissen anhängen?
    $addOthersShopTitle = true; // Shop-Titel bei sonstigen Seiten anhängen?
    // Einzelne Dateien auf noindex setzen (Liste der Dateinamen)
    $files_noindex = array(
    FILENAME_ACCOUNT,
    FILENAME_ADVANCED_SEARCH,
    FILENAME_ADVANCED_SEARCH_RESULT,
    FILENAME_ASK_A_QUESTION,
    FILENAME_COOKIE_USAGE,
    FILENAME_CREATE_ACCOUNT,
    FILENAME_CREATE_GUEST_ACCOUNT,
    FILENAME_LOGIN,
    FILENAME_LOGOFF,
    FILENAME_NEWSLETTER,
    FILENAME_PASSWORD_DOUBLE_OPT,
    FILENAME_SHOPPING_CART
    );

    // Einzelne Content-Seiten auf noindex setzen (Liste der coID's)
    $content_noindex = array(
    '0', //news
    #'1', //versandkosten
    '2', //datenschutz
    #'3', //agb
    '4', //impressum
    '7', //kontakt
    #'8', //sitemap
    #'9', //rueckgaberecht
    #'10', //zahlungsarten-info
    '11' //sicheres einkaufen
    );
    // -----------------------------------------------------------------------------
    // Ende Konfiguration
    // -----------------------------------------------------------------------------


    // -----------------------------------------------------------------------------
    // Title für "sonstige" Seiten
    // -----------------------------------------------------------------------------
    $breadcrumbTitle = end($breadcrumb->_trail);
    $breadcrumbTitle = $breadcrumbTitle['title'];


    // -----------------------------------------------------------------------------
    // noindex bei "unwichtigen" Seiten (bzw. Dateien)
    // -----------------------------------------------------------------------------
    $meta_robots = 'index,follow';
    if( in_array(basename($_SERVER['SCRIPT_NAME']),$files_noindex) )
    {
    $meta_robots = 'noindex,follow';
    }


    // -----------------------------------------------------------------------------
    // MultiLanguage-Metas
    // -----------------------------------------------------------------------------

    // Wenn wir auf der Startseite sind, Metas aus der Index-Seite holen
    if(
    basename($_SERVER['SCRIPT_NAME'])==FILENAME_DEFAULT &&
    empty($_GET['cat']) &&
    empty($_GET['cPath']) &&
    empty($_GET['manufacturers_id'])
    )
    {
    $ml_meta_where = "content_group = 5";
    }
    else // ...ansonsten Metas aus STANDARD_META holen
    {
    $ml_meta_where = "content_title = 'STANDARD_META'";
    }

    $ml_meta_query = xtc_db_query("
    select
    content_meta_title,
    content_meta_description,
    content_meta_keywords
    from
    ".TABLE_CONTENT_MANAGER."
    where
    ".$ml_meta_where."
    and languages_id = '".(int)$_SESSION['languages_id']."'
    ");
    $ml_meta = xtc_db_fetch_array($ml_meta_query,true);


    // -----------------------------------------------------------------------------
    // Mehrsprachige Standard-Metas definieren. Wenn leer, werden die üblichen genommen
    // -----------------------------------------------------------------------------
    #define('ML_META_DESCRIPTION',($ml_meta['content_meta_description'])?$ml_meta['content_meta_description']:META_DESCRIPTION);
    define('ML_TITLE',($ml_meta['content_meta_title'])?$ml_meta['content_meta_title']:TITLE);


    // -----------------------------------------------------------------------------
    // Seitennummerierung im Title (Kategorien, Sonderangebote, Neue Artikel etc.)
    // -----------------------------------------------------------------------------
    $Page = '';
    if( isset($_GET['page']) && intval($_GET['page'])==$_GET['page'] && $_GET['page'] > 1 && $addPagination )
    {
    // PREVNEXT_TITLE_PAGE_NO ist "Seite %d" aus der deutschen
    // bzw. "page %d" aus der englischen Sprachdatei ...
    $Page = trim(str_replace('%d','',PREVNEXT_TITLE_PAGE_NO)).' '.(int)$_GET['page'];
    }


    // -----------------------------------------------------------------------------


    /**
    * ueberfluessige leerzeichen und html-code entfernen,
    * umlaute und sonderzeichen wandeln, inhalt ggf. kuerzen
    *
    * @param string $str
    * @param int $maxlen
    * @param string $append
    *
    * @return string
    */
    function metaClean($str,$maxlen=false,$append='...')
    {
    $language_charset = strtoupper($_SESSION['language_charset']);

    $str = preg_replace('/<[^>]*>/',' ',$str); // more reliable than striptags()
    $str = html_entity_decode($str,ENT_QUOTES,$language_charset);
    $str = trim( preg_replace('/\s\s+/',' ',$str) );

    if( $maxlen > 0 && strlen($str) > $maxlen )
    {
    $maxlen -= strlen($append);
    $str = preg_replace('/\s+?\S*$/','',substr($str,0,$maxlen+1));
    $str = substr($str,0,$maxlen).$append;
    }

    return htmlentities($str,ENT_QUOTES,$language_charset);
    }


    /**
    * build / format meta-title
    *
    * @param bool $allow_appended_shopname
    * @param array $title
    *
    * @return string
    */
    function metaTitle($allow_appended_shopname,$title)
    {
    global $metaTitleLength, $metaTitleSeparator;

    // join given stuff
    $title = array_filter((array)$title,'metaClean'); //remove elements that would be empty
    $title = array_unique($title);

    $res = implode($metaTitleSeparator,$title);

    // append shopname
    if( $allow_appended_shopname && !empty($res) )
    {
    $shopname = ML_TITLE;
    $res_tmp = $res.$metaTitleSeparator.$shopname;

    // shopname isn't empty
    // && shopname isn't already contained in our current generated title
    // && new title length won't exceed our maximum if we append the shopname
    if( metaClean($shopname) && strpos($res,$shopname) === false && strlen($res_tmp) <= $metaTitleLength )
    {
    $res = $res_tmp;
    }
    }

    return $res;
    }


    // -----------------------------------------------------------------------------


    switch( basename($_SERVER['SCRIPT_NAME']) )
    {

    // -----------------------------------------------------------------------------
    // Daten holen: Produktdetails
    // -----------------------------------------------------------------------------
    case FILENAME_PRODUCT_INFO :

    if( $product->isProduct() )
    {
    // Description //
    if( !empty($product->data['products_meta_description']) )
    {
    $meta_descr = $product->data['products_meta_description'];
    $metaDesLength = false;
    }
    else
    {
    #$meta_descr = $product->data['products_name'].': '.$product->data['products_description'];
    }

    // Title //
    if( !empty($product->data['products_meta_title']) )
    {
    $meta_title = metaTitle($addProdShopTitle,array($product->data['products_meta_title']));
    }
    else
    {
    $meta_title = metaTitle($addProdShopTitle,array($product->data['products_name'],isset($product->data['manufacturers_name'])?$product->data['manufacturers_name']:'',$Page));
    }

    // Canonical //
    $canonical_url = xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id='.$product->data['products_id'],$request_type,false);
    }
    break;

    // -----------------------------------------------------------------------------
    // Daten holen: Kategorie
    // -----------------------------------------------------------------------------
    case FILENAME_DEFAULT :

    $startpage = true;

    // Sind wir in einer Kategorie?
    if( !empty($current_category_id) )
    {
    $categories_meta_query = xtDBquery("
    select
    categories_meta_description,
    categories_meta_title,
    categories_name,
    categories_description
    from
    ".TABLE_CATEGORIES_DESCRIPTION."
    where
    categories_id = '".(int)$current_category_id."'
    and language_id = '".(int)$_SESSION['languages_id']."'
    ");
    $categories_meta = xtc_db_fetch_array($categories_meta_query,true);
    $startpage = false;
    }

    $manu_id = $manu_name = false;

    // Nachsehen, ob ein Hersteller gewählt ist
    if( !empty($_GET['manu']) )
    {
    $manu_id = $_GET['manu'];
    $startpage = false;
    }
    if( !empty($_GET['manufacturers_id']) )
    {
    $manu_id = $_GET['manufacturers_id'];
    $startpage = false;
    }
    if( !empty($_GET['filter_id']) && !$manu_id )
    {
    $manu_id = $_GET['filter_id'];
    $startpage = false;
    }

    // ggf. Herstellernamen herausfinden
    if( $manu_id )
    {
    $manu_name_query = xtDBquery("
    select manufacturers_name
    from ".TABLE_MANUFACTURERS."
    where manufacturers_id = '".(int)$manu_id."'
    ");
    $manu_name = xtc_db_fetch_array($manu_name_query,true);
    $manu_name = (is_array($manu_name) ? implode('',$manu_name) : '');
    }

    // Description //
    if( !empty($categories_meta['categories_meta_description']) )
    {
    // ggf. Herstellername hinzufügen
    #$meta_descr = $categories_meta['categories_meta_description'].(($manu_name)?' - '.$manu_name:'');
    $meta_descr = $categories_meta['categories_meta_description'];
    $metaDesLength = false;
    }
    elseif( $categories_meta )
    {
    // ggf. Herstellername und Kategorientext hinzufügen
    #$meta_descr = $categories_meta['categories_name'].(($manu_name)?' - '.$manu_name:'').(($categories_meta['categories_description'])?' - '.$categories_meta['categories_description']:'');
    }

    // Title //
    if( !empty($categories_meta['categories_meta_title']) )
    {
    #$meta_title = metaTitle($addCatShopTitle,array($categories_meta['categories_meta_title'],$manu_name,$Page));
    $meta_title = metaTitle($addCatShopTitle,array($categories_meta['categories_meta_title'],$Page));
    }
    elseif( $categories_meta )
    {
    $meta_title = metaTitle($addCatShopTitle,array($categories_meta['categories_name'],$manu_name,$Page));
    }
    elseif( $startpage )
    {
    $meta_title = metaTitle(false,array(ML_TITLE));
    }

    // Canonical //
    if( xtc_not_null($cPath) )
    {
    $url_param_page = ( isset($_GET['page']) && intval($_GET['page'])==$_GET['page'] && $_GET['page'] > 1 ? '&page='.(int)$_GET['page'] : '' );
    $canonical_url = xtc_href_link(FILENAME_DEFAULT, 'cPath='.$cPath.$url_param_page,$request_type,false);
    }
    elseif( $startpage )
    {
    $canonical_url = xtc_href_link(FILENAME_DEFAULT, '', $request_type);
    }

    // Robots //
    if( xtc_not_null($cPath) )
    {
    if( isset($_GET['page']) && intval($_GET['page'])==$_GET['page'] && $_GET['page'] > 1 )
    {
    $meta_robots = 'noindex,follow'; // noindex bei kategorien ab seite 2
    }
    }

    break;

    // -----------------------------------------------------------------------------
    // Daten holen: Inhalts-Seite (ContentManager)
    // -----------------------------------------------------------------------------
    case FILENAME_CONTENT :

    // Robots //
    if( isset($_GET['coID']) && in_array($_GET['coID'],$content_noindex) )
    {
    $meta_robots = 'noindex,follow'; // Noindex bei bestimmten Content Seiten
    }

    $contents_meta_query = xtc_db_query("
    select
    content_meta_title,
    content_meta_description,
    content_meta_keywords,
    content_title,
    content_heading,
    content_text,
    content_file
    from
    ".TABLE_CONTENT_MANAGER."
    where
    content_group = '".(int)$_GET['coID']."'
    and languages_id = '".(int)$_SESSION['languages_id']."'
    ");
    $contents_meta = xtc_db_fetch_array($contents_meta_query,true);

    if( count($contents_meta) > 0 )
    {
    // Eingebundene Dateien auslesen
    if( !empty($contents_meta['content_file']) )
    {
    // Nur Text- oder HTML-Dateien erlauben
    if( preg_match('/\.(?:txt|html?)$/i',$contents_meta['content_file']) )
    {
    $contents_meta['content_text'] .= ' '.implode(' ', @file(DIR_FS_CATALOG.'media/content/'.$contents_meta['content_file']));
    }
    }

    // Title //
    if( !empty($contents_meta['content_meta_title']) )
    {
    $meta_title = metaTitle($addContentShopTitle,array($contents_meta['content_meta_title']));
    }
    else
    {
    $meta_title = metaTitle($addContentShopTitle,array($contents_meta['content_title'],$contents_meta['content_heading']));
    }

    // Description //
    if( !empty($contents_meta['content_meta_description']) )
    {
    $meta_descr = $contents_meta['content_meta_description'];
    $metaDesLength = false;
    }
    else
    {
    #$meta_descr = ($contents_meta['content_heading'])?$contents_meta['content_heading'].': ':'';
    #$meta_descr .= $contents_meta['content_text'];
    }
    }

    // Canonical //
    if( isset($_GET['coID']) )
    {
    $canonical_url = xtc_href_link(FILENAME_CONTENT,'coID='.$_GET['coID'],$request_type,false);
    }
    break;

    // -----------------------------------------------------------------------------
    // Title für Suchergebnisse
    // -----------------------------------------------------------------------------
    case FILENAME_ADVANCED_SEARCH_RESULT :

    // ggf. Herstellernamen herausfinden
    if( !empty($_GET['manufacturers_id']) )
    {
    $manu_name_query = xtDBquery("
    select manufacturers_name
    from ".TABLE_MANUFACTURERS."
    where manufacturers_id = '".(int)$_GET['manufacturers_id']."'
    ");
    $manu_name = xtc_db_fetch_array($manu_name_query,true);
    $manu_name = (is_array($manu_name) ? implode('',$manu_name) : '');
    }

    // ggf. Kategorien-Namen herausfinden
    if( !empty($_GET['categories_id']) )
    {
    $cat_name_query = xtDBquery("
    select categories_name
    from ".TABLE_CATEGORIES_DESCRIPTION."
    where categories_id = '".(int)$_GET['categories_id']."'
    and language_id = '".(int)$_SESSION['languages_id']."'
    ");
    $cat_name = xtc_db_fetch_array($cat_name_query,true);
    $cat_name = (is_array($cat_name) ? implode('',$cat_name) : '');
    }

    $meta_title = metaTitle($addSearchShopTitle,array($breadcrumbTitle,$Page,(isset($cat_name)?$cat_name:''),(isset($manu_name)?$manu_name:'')));
    break;

    // -----------------------------------------------------------------------------
    // Title für Angebote
    // -----------------------------------------------------------------------------
    case FILENAME_SPECIALS :

    $meta_title = metaTitle($addSpecialsShopTitle,array($breadcrumbTitle,$Page));
    break;

    // -----------------------------------------------------------------------------
    // Title für Neue Artikel
    // -----------------------------------------------------------------------------
    case FILENAME_PRODUCTS_NEW :

    $meta_title = metaTitle($addNewsShopTitle,array($breadcrumbTitle,$Page));
    break;

    // -----------------------------------------------------------------------------
    // Title für sonstige Seiten
    // -----------------------------------------------------------------------------
    default:

    $meta_title = metaTitle($addOthersShopTitle,array($breadcrumbTitle,$Page));
    break;
    // -----------------------------------------------------------------------------


    } // end switch


    // -----------------------------------------------------------------------------
    // ...und wenn nix drin, dann nochmal kurz aufräumen
    // -----------------------------------------------------------------------------

    // Title //
    if( empty($meta_title) )
    {
    $meta_title = '';
    }

    // Description //
    if( empty($meta_descr) )
    {
    $meta_descr = '';
    $metaDesLength = false;
    }

    // Robots //
    if( empty($meta_robots) )
    {
    $meta_robots = '';
    }

    // Canonical //
    if( empty($canonical_url) )
    {
    $canonical_url = '';
    }
    elseif( preg_match('#^https?://[^/]+/index\.php$#i',$canonical_url) )
    {
    $canonical_url = preg_replace('#^(https?://[^/]+/)index\.php$#i','$1',$canonical_url,1);
    }


    // -----------------------------------------------------------------------------


    $meta_title = metaClean($meta_title);
    if( !empty($meta_title) )
    {
    echo '<title>'.$meta_title.'</title>'."\n";
    }

    echo '<meta http-equiv="cache-control" content="no-cache" />'."\n";

    if( !empty($_SESSION['language_charset']) )
    {
    echo '<meta http-equiv="content-type" content="text/html;charset='.$_SESSION['language_charset'].'" />'."\n";
    }

    if( !empty($_SESSION['language_code']) )
    {
    echo '<meta http-equiv="content-language" content="'.$_SESSION['language_code'].'" />'."\n";
    echo '<meta name="language" content="'.$_SESSION['language_code'].'" />'."\n";
    }

    $meta_descr = metaClean($meta_descr,$metaDesLength);
    if( !empty($meta_descr) )
    {
    echo '<meta name="description" content="'.$meta_descr.'" />'."\n";
    }

    if( !empty($meta_robots) )
    {
    echo '<meta name="robots" content="'.$meta_robots.'" />'."\n";
    }

    if( !empty($canonical_url) )
    {
    echo '<link rel="canonical" href="'.$canonical_url.'" />'."\n";
    }

    ?>