Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - PhenfiX

#21
PHP / Re: Problema con preg_replace
12 Abril 2008, 03:05 AM
Mira, para que me entiendas posteo los códigos:

TPL:
<table cellpadding="3" width="100%" border="0">
  <tr>
    <td width="35" style="vertical-align: top;">
      <img src="{icon}" alt="{icon}">
    </td>
    <td>
      <b>{tdownload}:</b> <a href="{url}">{name}</a> <small>({size})</small> <b>{tclicks}:</b> {clicks} <br />
      <b>{tadded}:</b> {date} <br />
      <b>{tclicks}:</b> {clicks}
    </td>
  </tr>
  <tr>
    <td colspan="2">{description}</td>
  </tr>
</table>


Functions:

### Load Download Page Template
function DownloadsManager_DownloadsPage($content) {
  global $wpdb, $table_prefix, $iconsdir;
  if(!preg_match("|<!--download table-->|", $content))
    return $content;
  $start = strpos($content, '<!--download table-->');
  $before = substr($content, 0, $start);
  $after = substr($content, 21+$start);
  $dmTemplate = 'wp-content/plugins/downloads-manager/page-download-template.tpl';
  $handle = @fopen($dmTemplate, 'r');
  if(!$handle)
    return __('Error... Unable to load page template. Search page-download-template.tpl in your plugin folder!','downloads-manager');
  $dmTemplateContent = fread($handle, filesize($dmTemplate));
  $content = "";
  $cats = $wpdb->get_results("SELECT id, name FROM ".$table_prefix."dm_category");
  if(!empty($cats)) {
    foreach($cats as $cat) {
      $rows = $wpdb->get_results("SELECT d.id,d.name,d.link,d.icon,d.category,d.description,d.date,d.clicks FROM ".$table_prefix."dm_downloads d WHERE d.category='".$cat->id."'", ARRAY_A);
      if(!empty($rows)) {
        $content .= "<h2 style=\"border-bottom: 1px dotted #CCC\">".$cat->name."</h2>";
        foreach($rows as $row) {
          $row['icon'] = $iconsdir.'/'.$row['icon'];
          $row['date'] = date('d/m/Y', $row['date']);
          $row['size'] = FileSizeOf($row['link']);
          $row['url'] = dm_get_url_type($row['id']);
          $dmTemplateContent = preg_replace('/\{(t)([^}]*)}/e', __('\\2','downloads-manager'), $dmTemplateContent);
          $content .= preg_replace('/\{([^}]*)}/e', '$row[\\1]', $dmTemplateContent);
        }
      }
    }
  }
  fclose($handle);
  $content = $before.$content.$after;
  return $content;
}

?>


Y el código que quiero instertar:

<?php

$agent 
$_SERVER['HTTP_USER_AGENT'];
$pos strpos($agent"Firefox");

if (
$pos == false) { ?>


<div>
Texto si no está usando FF
</div>

<? }else{ ?>

AQUÍ DEBE IR EL TPL

<? } ?>


Como ves, el código del TPL va en medio del script, y resulta bastante difícil hacerlo de otra forma.
Es un widget de Wordpress, por lo que modificar el fuctions afectaría a otras areas.

Para llamar al script se debe poner en el post:
<!--download table-->
...y esto muestra la tabla. Si añado PHP al post marca error.

Como te digo, la única solución (sin tener que modificar todo el widget) es encontrar la manera de camuflar el php, o bien, como tu dices, darle otro valor al corchete, e ahí el problema.
#22
PHP / Re: Problema con preg_replace
11 Abril 2008, 09:03 AM
Pues si, es justamente eso.

Tengo 2 ficheros, un functios.php y un template.tpl, juntos trabajan bien, pero me resulta muy complicado añadir un trozo de PHP al TPL.

El TPL es esto:
<table cellpadding="3" width="100%" border="0">
  <tr>
    <td width="35" style="vertical-align: top;">
      <img src="{icon}" alt="{icon}">
    </td>
    <td>
      <b>{tdownload}:</b> <a href="{url}">{name}</a> <small>({size})</small> <b>{tclicks}:</b> {clicks} <br />
      <b>{tadded}:</b> {date} <br />
      <b>{tclicks}:</b> {clicks}
    </td>
  </tr>
  <tr>
    <td colspan="2">{description}</td>
  </tr>
</table>


Como verás no es nada complicado, solo que el functions remplaza los corchetes por variables. Esta línea lo hace:

$content .= preg_replace('/\{([^}]*)}/e', '$row[\\1]', $dmTemplateContent);

No puedo añadir PHP al TPL porque se remplazan. No puedo añadir PHP al functions por que es una página SOLO de funciones. No puedo añadir PHP al index porque marca error.
La única solución que se me ocurre es intentar, como ya lo había mencionado, camuflar los corchetes del PHP insertados en el TPL.

Ya le di dos repasadas a Google y no logro hacerlo.
Lo que también se podría hacer es añadir al functions otro simbolo, y este usarlo para que se convierta en corchete, solo que no se hacerlo :P
#23
PHP / Re: Problema con preg_replace
11 Abril 2008, 02:15 AM
Gracias por tu respuesta.

Me resulta bastante complicado explicarte por que no puedo hacerle como tú dices, ya lo intente de 4 formas, las 4 que se me ocurrieron.

Como propones: Genera conflicto en la linea antes mencionada.
Como yo decía: Modifica los {corchetes por otro símbolo.
Metiendo include no marca ni error ni funciona.

Si fueran simples páginas lo modificaría sin esfuerzo, el problema es que estoy hablando de un widget de Wordpress, y para hacerlo funcionar necesito meterle php antes y despues, y al hacerlo genera conflictos con un fuctions.php bastante complicado para mi entendimiento.

Lo que me interesa saber, y no he encontrado ni siquiera en php.net, es si puedo de alguna manera ignorar, o camuflar los corchetes anteponiendole otro símbolo.
Los corchetes son los que me causan problema.

Gracias
#24
PHP / Problema con preg_replace
10 Abril 2008, 20:47 PM
Hola a todos!

Esta vez tengo un problema que al parecer es de fácil solución, solo que no la encuentro  :¬¬

Resulta que tengo esta fracción de código:


    <td>
      <b>{tdownload}:</b> <a href="{url}">{name}</a> <small>({size})</small> <b>{tclicks}:</b> {clicks} <br />
      <b>{tadded}:</b> {date} <br />
      <b>{tclicks}:</b> {clicks}
    </td>


En un fichero TPL (el que es usado para los templates), y al mismo le quiero insertar un poco de PHP, pero me topo con este otro fragmento de código:


$content .= preg_replace('/\{([^}]*)}/e', '$row[\\1]', $dmTemplateContent);


Que se encuentra en un fichero PHP, y que mediante include se combinan.

El problema, obviamente, es que al insertar código PHP en el fichero TPL, este me es remplazado por otros caracteres.

Ejemplo, si inserto "if ($pos == false) { ?>" el simbolo "{" se cambia por otro.

Me gustaría saber como puedo hacer para insertar PHP en el TPL, ya sea que ignore el preg_replace o que use otros caracteres.

No se si me expliqué, pero creo que si :P

Gracias por adelantado.
#25
PHP / Re: Detección del navegador
29 Marzo 2008, 17:49 PM
OK. No lo he probado, pero yo creo que si funciona.

¿Y en JS cómo sería?, tal vez me sea más práctico implementarlo con JS, el problema es que el texto oculto se mostraría en el código fuente sin importar el navergador ¿no?, y con PHP no existe ese problema.

Bueno, dejame probar el script y te digo si funcionó.
#26
PHP / Detección del navegador
29 Marzo 2008, 02:24 AM
He encontrado varios scripts que detectan el navegador, pero no encuentro forma de modificarlos a mis necesidades.

En concreto, lo que busco es un script que si detecta FireFox (cualquier versión, cualquier SO) muestre un pedazo de código en HTML, y si detecta otro navegador muestra otro pedazo de código.

Así por ejemplo, si usan IE (u otro) les pongo que descargen FireFox, y si usan FireFox les digo que instalen X plug in.

El script que uso es este, pero solo funciona si no se usa FF. No he podido modificarlo para que muestre otro mensaje si se usa FF.

<?php

$agent 
$_SERVER['HTTP_USER_AGENT'];
$pos strpos($agent"Firefox");

if (
$pos === false) { ?>


Muestra texto si NO está usando FireFox

<? } ?>


Algún experto que me eche una manita, se lo voy a agradecer un montón.

Saludos!
#27
Juegos y Consolas / XBOX Chip virtual
13 Enero 2006, 22:08 PM
¿Alguien sabe algo del tema?. estuve buscando y encontré esto: http://www.megagames.com/xbox/xbox_utils.shtml

He escuchado que se pueden jugar respaldos sin necesidad del chip físico sino con un programa, pero no lo he confirmado y me gustaría saber si algiuien de ustedes lo ha probado y como le funciona, ah, y donde encontrarlo

Saludos
#29
No es necesario un programa complicado para hacer algo tan sencillo. Usa el Irfanview, que además de hacer eso con solo dos teclas sirve como un visualizador de imágenes, videos y flash (y es gratis)
#30
Jeje, muy gracioso Soplo

Ya en serio, la cuenta no pienso regalarsela al que más se conecte, tampoco al que más puntos tenga, ni a alguien que sea camarada, quiero regalarsela a alguien que SI vaya a utilizarla todo el año y que de preferencia no sea español; no es por discriminar pero a los españoles nada les cuesta levantar el teléfono y hacer la orden


Escanéa lunas con tan sólo un clíck:

Conviértete en Comandante Ogame por 1,09 Euros al dos semanas.

Funciones premium:

*Mensajes comfortables*
*Lista de construcción*
*Visión del Imperio*
*Visión mejorada de la Galaxia*



La cuenta que regalo tiene un valor de 26.16 euros así que aprovechen la oportunidad