a:8:{s:4:"name";s:18:"efb_tag_technorati";s:6:"author";s:3:"efb";s:10:"author_uri";s:32:"http://www.elfloridobyte.com.com";s:7:"version";s:3:"0.1";s:11:"description";s:77:"inserta enlaces a tags de technorati basados en keywords, section y category ";s:4:"help";s:1423:"

	<p>Este plugin inserta enlaces a tags de technorati basados en las palabras definidas como keywords en la entrada individual, en los nombres de las categorias (category1 y category2) asignadas al post y en el nombre de la seccion a la que pertenece. Discrimina categorias y secciones con mas de un termino en su definicion.</p>
	<p>Una vez instalado y activado, inserte la etiqueta <strong>&lt;txp:efb_tag_technorati /&gt;</strong> en el lugar donde quiera mostrar sus tags.</p>
	<p>Puede emplear lo siguientes atributos:</p>

<p><strong>contenedor</strong>: determina la etiqueta que contiene el conjunto de los enlaces. Puede usar 'div', 'ul', 'ol', o 'p'. 

<p><strong>clase</strong>: especifica el estilo para el contenedor.</p>

<p><strong>linea</strong>: define los separadores de linea, en su caso, de cada enlace. Puede emplear 'p' o 'br'. Si son determinados, anulan la accion del atributo 'contenedor', salvo en el caso que este sea definido como 'div'.</p>

<p><strong>clasep</strong>: especifica el estilo para la linea.</p>

<p>En el caso de no especificar ningun atributo, el plugin devuelve los enlaces en una linea y separados por un espacio en blanco.</p>

<p>Ejemplo de uso: <strong>&lt;txp:efb_tag_technorati contenedor='div' clase='red' linea='p' /&gt;</strong> devuelve un 'div' con estilo 'red' que contiene los enlaces a los tags de technorati contenidos en etiquetas 'p'.


	
";s:4:"code";s:1666:"
function efb_tag_technorati($atts) {

global $thisarticle;

if (is_array($atts)) extract($atts);
$contenedor  = isset($contenedor)  ? $contenedor : "";
$clase = isset($clase) ? $clase : "";
$linea = isset($linea) ? $linea : "";
$clasep = isset($clasep) ? $clasep : "";

if ($thisarticle[keywords]){$ptt = explode(",",$thisarticle[keywords]);}

$s = $thisarticle['section'];
$rs = safe_row("title","txp_section","name='$s' limit 1");
if ($rs['title']){$ptt[] = $rs['title'];}

if ($thisarticle[category1]){$ptt[] = $thisarticle[category1];}
if ($thisarticle[category2]){$ptt[] = $thisarticle[category2];}

if ($ptt)
	{
	reset ($ptt);
	$ett = '';
	if (empty($linea)) {
		if ($contenedor != '') {
			$ett .= '<'.$contenedor;
			if ($clase != '') {$ett .= ' class="'.$clase.'"';}
			$ett .= '>';}}
	else {
		if ($contenedor == 'div') {
			$ett .= '<'.$contenedor;
			if ($clase != '') {$ett .= ' class="'.$clase.'"';}
			$ett .= '>';}}
	foreach ($ptt as $a) {
		if(count(explode(" ", $a))<2)	 {
			$enlace = '<a href="http://technorati.com/tag/'.$a.'" title="technorati : '.$a.'" rel="tag">'.$a.'</a> ';
			if ($linea != '') {
				if ($linea == 'br') {$ett .= $enlace.'<br />';}
				if ($linea == 'p') {
					$ett .= '<p';
					if ($clasep != '') {$ett .= ' class="'.$clasep.'"';}	
					$ett .= '>'.$enlace.'</p>';
					}}
			else {
				if (($contenedor == 'ul') | ($contenedor == 'ol')) {$ett .= '<li>'.$enlace.'</li>';}
				else {$ett .= $enlace;}}}}}

	if (empty($linea)){if ($contenedor != ''){$ett .= '</'.$contenedor.'>';}}
	else {if ($contenedor == 'div') {$ett .= '</'.$contenedor.'>';}}

return $ett;
		
}
";s:3:"md5";s:32:"cd241f14eeb1ec5442e744a46d37446f";}