conecta(); /************************************************ INICIALIZACIÓN ************************************************/ // Idiomas $idiomas_aux = $bd->select("select valor from iw4_config where clave = 'show_langs'"); $idiomas = explode("||", $idiomas_aux[0]['valor']); $idiomas = str_replace("|", "", $idiomas); // Configuración $maximo_nivel_prioridad = 1; $factor_reduccion_seccion_por_nivel = 0.2; $factor_reduccion_item_dentro_seccion = 0.1; //if(!isset($_GET['showHiddenMenu']) || $_GET['showHiddenMenu'] != "true") { // for($i=0; $iselect("select iw4id, url_externa_".$idiomas[0]." from iw4_menu where id_padre = 0"); for($y=0; $yselect("select sitemap from iw4_identificadores where iditem = ".$homes[$y]['iw4id']." and tipomodulo = 0"); $homes[$y]['sitemap'] = $campo_sitemap_aux[0]['sitemap']; if(strpos($homes[$y]['url_externa_'.$idiomas[0]], $_SERVER['SERVER_NAME'])!==false) { if(!empty($homes[$y]['sitemap'])) { $aux_priofrec = explode("||", $homes[$y]['sitemap']); $aux_priofrec = str_replace("|", "", $aux_priofrec); $prioridad_aux = $aux_priofrec[0]; $frecuencia_aux = $changeFreq[$aux_priofrec[1]]; } else { $prioridad_aux = "1.0"; $frecuencia_aux = $changefreq_manual[10]; } $indice_sitemap =count($sitemap); $sitemap[$indice_sitemap]['loc'] = $homes[$y]['url_externa_'.$idiomas[0]]; $sitemap[$indice_sitemap]['changefreq'] = $frecuencia_aux; $sitemap[$indice_sitemap]['priority'] = $prioridad_aux; $idpadre = $homes[$y]['iw4id']; } } if($idpadre==0) exit; //------------------------------------------------ // Secciones e items indexables por iw4_menu_items //------------------------------------------------ $tablas_no_buscar_condiciones_especiales = array(); for($w=0;$wselect("select iw4id, nombre_".$idiomas[$w].", url_interna_".$idiomas[$w].", url_externa_".$idiomas[$w]." from iw4_menu where ".$sql_mostrar_secciones[$idiomas[$w]]." and (url_interna_".$idiomas[$w]." != '' or url_externa_".$idiomas[$w].") and id_padre > 0 and id_padre = '".$idpadre."' order by iw4id"); for($x=0;$xselect("select count(iw4id) as total from iw4_menu_contenido where mostrar = 1 and id_seccion = ".$secciones[$x]['iw4id']); // Si no tiene algún módulo if($tiene_contenido[0]['total'] == 0) { $add_new_url = false; //ver("no tiene modulos!!"); } // Si es una URL externa que no está dentro del propio dominio (si es un subdominio si) if(!empty($secciones[$x]['url_externa_'.$idiomas[$w]]) && empty($secciones[$x]['url_interna_'.$idiomas[$w]])) { $dominio_actual_arr = explode(".", $_SERVER['SERVER_NAME']); $dominio_menu_arr = explode(".", $secciones[$x]['url_externa_'.$idiomas[$w]]); if(strpos($dominio_actual_arr[1], $dominio_menu_arr[1])===false) { $add_new_url = false; } } else { //ver("prueba esto"); } // Comprobamos si existe una configuración predefinida para esta sección $campo_sitemap_aux = $bd->select("select sitemap from iw4_identificadores where iditem = ".$secciones[$x]['iw4id']." and tipomodulo = 0"); if(getMostrarEnSitemap($campo_sitemap_aux[0]['sitemap'])==false) { $add_new_url = false; } // Si la URL ya existía en el sitemap if(getDireccionExistente(strtolower($_SERVER['SERVER_NAME']."/".$secciones[$x]['url_interna_'.$idiomas[$w]].".html"), $campo_sitemap_aux[0]['sitemap'])===true) { $add_new_url = false; } // Añadimos if($add_new_url == true) { // Determinamos el nivel de la sección $nivel = getNivelSeccion($secciones[$x]['url_interna_'.$idiomas[$w]]); $indice_sitemap =count($sitemap); if(!empty($secciones[$x]['url_interna_'.$idiomas[$w]])) { $sitemap[$indice_sitemap]['loc'] = strtolower($_SERVER['SERVER_NAME']."/".$secciones[$x]['url_interna_'.$idiomas[$w]].".html"); } else { $sitemap[$indice_sitemap]['loc'] = $secciones[$x]['url_externa_'.$idiomas[$w]]; } // Con esta última suma conseguimos que la secciones padre tengan el mismo peso que la home (más que nada por los idiomas) $array_devuelto_prioridad_frecuencia = getPrioridadFrecuencia($campo_sitemap_aux[0]['sitemap'], $nivel, $secciones[$x]['iw4id'], 0); $sitemap[$indice_sitemap]['priority'] = $array_devuelto_prioridad_frecuencia['priority']; $sitemap[$indice_sitemap]['changefreq'] = $array_devuelto_prioridad_frecuencia['changefreq']; } // Items automáticos de esta sección $menu_contenido_aux = $bd->select("select config, tipomodulo from iw4_menu_contenido where id_seccion = ".$secciones[$x]['iw4id']." and mostrar = 1"); if(stripos($menu_contenido_aux[0]['config'], "select")!==false) { $tabla_automatica_arr = explode(" ", $menu_contenido_aux[0]['config']); for($q=0;$qselect("select identificador, sitemap, iditem from iw4_identificadores a, ".$tabla_automatica." b where a.idioma = '".$idiomas[$w]."' and a.tipomodulo = '".$menu_contenido_aux[0]['tipomodulo']."' and a.iditem = b.iw4id ".$condiciones_sql_especiales); for($p=0;$pselect("select word from iw4_diccionariodiseno order by word"); $letras = array(); foreach ($auxregistros as $word) { $letra = $word["word"][0]; $letras[] = $letra; } $letras = array_unique($letras); $sectionsletras = array(); $nnn = 0; foreach ($letras as $letra) { $sectionsletras[$nnn] = $secciones[$x]; $url = $_SERVER['SERVER_NAME']."/".$sectionsletras[$nnn]["url_interna_".$idiomas[$w]] . ".html?letter=".strtolower($letra); // Determinamos el nivel de la sección $nivel = getNivelSeccion($secciones[$x]['url_interna_'.$idiomas[$w]]); $indice_sitemap = count($sitemap); $sitemap[$indice_sitemap]['loc'] = strtolower($url); $es_item = true; $sitemap[$indice_sitemap]['priority'] = 0.6; $sitemap[$indice_sitemap]['changefreq'] = "monthly"; $nnn++; } } } $aux = $bd->select("select iw4id, nombre_".$idiomas[$w].", url_interna_".$idiomas[$w].", url_externa_".$idiomas[$w]." from iw4_menu where ".$sql_mostrar_secciones[$idiomas[$w]]." and (url_interna_".$idiomas[$w]." != '' or url_externa_".$idiomas[$w].") and id_padre > 0 and id_padre = '".$secciones[$x]["iw4id"]."' order by iw4id"); for ($yy=0; $yy < count($aux); $yy++) { $secciones[] = $aux[$yy]; } } // Items indexables por idioma // @@@@@@@@@@@@@@@@@@@@@@@@@@@ $identificador_seccion_primera_arr = explode("/", $secciones[0]['url_interna_'.$idiomas[$w]]); for($a=0;$aselect("select iditem, tipomodulo, sitemap from iw4_identificadores where identificador = '".$identificador_seccion_primera."'"); $tipomodulo_indexable = $bd->select("select distinct(tipomodulo) as tipomodulo from iw4_identificadores where tipomodulo != ".$tipomodulo_seccion[0]['tipomodulo']." and tipomodulo !=3"); $url_site_aux1 = $bd->select("select id_padre from iw4_menu where iw4id = ".$tipomodulo_seccion[0]['iditem']); $url_site_aux2 = $bd->select("select url_externa_".$idiomas[0]." as url_externa from iw4_menu where iw4id = ".$url_site_aux1[0]['id_padre']); $url_site = $url_site_aux2[0]['url_externa']; // Items normales for($z=0;$zselect("select iditem, id_seccion, id_modulo from iw4_menu_items where mostrar = 1 and tipomodulo = ".$tipomodulo_indexable[$z]['tipomodulo']." order by posicion asc"); } else { $items = $bd->select("select iditem, id_seccion, id_modulo from iw4_menu_items a, $tabla_manual b where a.iditem=b.iw4id and a.mostrar = 1 and a.tipomodulo = ".$tipomodulo_indexable[$z]['tipomodulo']." $condiciones_sql_especiales order by posicion asc"); } for($n=0; $nselect("select count(iw4id) as total from iw4_menu_contenido where iw4id = ".$items[$n]['id_modulo']." and mostrar = 1"); $seccion_item = $bd->select("select url_interna_".$idiomas[$w]." as url_interna from iw4_menu where iw4id = ".$items[$n]['id_seccion']); if(count($seccion_item)>0 && $modulo_item[0]['total']>0) { // Sólo si el item está dentro de alguna sección y pertenece a un módulo visible $identificador_item = $bd->select("select identificador, sitemap from iw4_identificadores where idioma = '".$idiomas[$w]."' and tipomodulo = ".$tipomodulo_indexable[$z]['tipomodulo']." and iditem = ".$items[$n]['iditem']); // Si queremos mostrar en el sitemap el item... $hayDetalle = true; // TRABAJOS, miramos si mostramos el detalle if ($tipomodulo_indexable[$z]['tipomodulo'] == 2) { $iditem = $items[$n]['iditem']; $idioma = $idiomas[$w]; $data = $bd->select("select * from iw4_trabajos where iw4id='$iditem'"); if (count($data) == 1) { $texto = $data[0]["texto_$idioma"]; if (trim($texto) == "") { $hayDetalle = false; } } } if(getMostrarEnSitemap($identificador_item[0]['sitemap'])==true && $hayDetalle) { if(empty($seccion_item[0]['url_interna'])) { $url = $url_site."/".$identificador_item[0]['identificador'].".html"; } else { $url = $url_site."/".$seccion_item[0]['url_interna']."/".$identificador_item[0]['identificador'].".html"; } // Determinamos el nivel de la sección $nivel = getNivelSeccion($seccion_item[0]['url_interna']); $indice_sitemap = count($sitemap); $sitemap[$indice_sitemap]['loc'] = strtolower($url); $es_item = true; $array_devuelto_prioridad_frecuencia = getPrioridadFrecuencia($identificador_item[0]['sitemap'],$nivel, $items[$n]['iditem'], $tipomodulo_indexable[$z]['tipomodulo'], $es_item); $sitemap[$indice_sitemap]['priority'] = $array_devuelto_prioridad_frecuencia['priority']; $sitemap[$indice_sitemap]['changefreq'] = $array_devuelto_prioridad_frecuencia['changefreq']; } } } } } //---------------------- // URL basadas en getiw4 //---------------------- for($i=0; $iselect("select iw4id, ".$cadena_sql_campos_indexables." from ".$getiw4_a_medida[$i]['tabla']." order by iw4id asc"); for($l=0; $l \n"; for($i=0; $i ".$sitemap[$i]['loc']." ".$sitemap[$i]['changefreq']." ".$sitemap[$i]['priority']." \n"; } echo ''; //------------------ // Funciones comunes //------------------ function getMostrarEnSitemap($campo_sitemap) { if(!empty($campo_sitemap)) { $campo_sitemap_arr = explode("||",$campo_sitemap); $campo_sitemap_arr = str_replace("|", "", $campo_sitemap_arr); if($campo_sitemap_arr[0]==0) { // Mostrar en el sitemap 1 return false; } } return true; } function getPrioridadFrecuencia($campo_sitemap_iw4_identificadores, $nivel, $iditem, $tipomodulo, $es_item = false) { global $maximo_nivel_prioridad; global $factor_reduccion_seccion_por_nivel; global $changeFreq; global $changefreq_manual; global $bd; global $factor_reduccion_item_dentro_seccion; if(!empty($campo_sitemap_iw4_identificadores)) { $aux_priofrec = explode("||", $campo_sitemap_iw4_identificadores); $aux_priofrec = str_replace("|", "", $aux_priofrec); $prioridad_aux = $aux_priofrec[1]/10; $frecuencia_aux = $aux_priofrec[2]; } else { $prioridad_aux = $maximo_nivel_prioridad-($nivel*$factor_reduccion_seccion_por_nivel)+$factor_reduccion_seccion_por_nivel; if($es_item == true) { $prioridad_aux = $prioridad_aux - $factor_reduccion_item_dentro_seccion; } $frecuencia_aux = $changefreq_manual[$prioridad_aux*10]; $prioridad_aux2 = $prioridad_aux*10; $bd->update("update iw4_identificadores set sitemap = '|1||".$prioridad_aux2."||".$frecuencia_aux."|' where iditem = ".$iditem." and tipomodulo = ".$tipomodulo); } $array_devuelto['priority'] = number_format($prioridad_aux, 1); $array_devuelto['changefreq'] = $frecuencia_aux; return $array_devuelto; } function getNivelSeccion($url) { $nivel = 0; $nivel_arr = explode("/", $url); for($y=0;$yselect("describe ".$tabla); for($q=0;$q ".date("Ymd").") "; } } return $cadena_sql_especiales; } ?>