it-swarm-es.tech

¿Dónde se define $ this-> baseurl en joomla?

Primero hice esta pregunta en stackoverflow.com (pregunta aquí ). En los comentarios, puede leer que sería mejor si hago esa pregunta aquí.

En mi sitio web de joomla estoy usando echo $this->baseurl; pero devuelve la url que contiene "/index.php". Quiero cambiar esto para eliminar "/index.php" de baseurl. Pero no puedo encontrar la línea de definición de $this->baseurl;.

Encontré este hilo pero esto se basa en la plantilla del propietario de la pregunta y en mi plantilla no hay algo como esto.

Sugerencias muy apreciadas :)

14
Therk

$this->baseurl; Es básicamente el acceso directo para JUri::base(). Obtiene la URL que ha especificado como la variable live_site En su archivo configuration.php. Si esto no tiene valor, utilizará algunos PHP magia basada en algunas variables.

Entonces, hagamos algunas pruebas. Por favor informe los resultados:

Prueba 1:

<?php
  echo 'Rule 1: ' . JUri::base() . '\n';
  echo 'Rule 2: ' . $_SERVER['PHP_SELF'] . '\n';
  echo 'Rule 3: ' . $_SERVER['REQUEST_URI'] . '\n';
  echo 'Rule 4: ' . $_SERVER['SCRIPT_NAME'] . '\n';
?>

Prueba 2:

<?php
    echo JUri::base();
    echo JUri::base(true);
?>

Prueba 3:

En la Configuración global (back-end de Joomla), intente configurar Reescritura de URL a Si esto no funciona, lea los Pasos 1 , 2 y 5 de sección Apache en esta página , e intente nuevamente.


Prueba 4:

En la parte superior del archivo index.php de su plantilla, agregue lo siguiente

<?php
    $this->baseurl = JUri::base();
?>
14
Lodder

$this->baseurl; Es un acceso directo que se utilizará desde el interior de una plantilla, en lugar de llamar al método JURI:base();, de la clase JURI. Es parte del núcleo y puede encontrarlo en /libraries/joomla/environment/uri.php (~line 218).

Si observa el método, verá que verifica en el archivo de configuración para ver si la variable $live_url Está definida. En caso afirmativo, devolverá esta URL; de lo contrario, pasará por una serie de otras verificaciones y devolverá su URI base real.

Lo más probable es que tenga la variable live_url definida en su configuration.php que incluye index.php al final. Mira allí ...

Otra posibilidad es que su plantilla/sistema de plantilla actual haya definido en alguna parte la propiedad $this->baseurl. Puede anular fácilmente el $this->baseurl Dentro de su plantilla redefiniéndolo nuevamente en la parte superior del archivo index.php De su plantilla, como: $this->baseurl = JURI::base();

* Actualización:

  • Mencioné dónde puede encontrar el método, pero esto no significa que deba ir allí y realizar modificaciones en el núcleo. Eso fue solo con fines informativos.

Actualización 2 - para futuras referencias

Para completar la información dada en esta publicación, la JURI::base($pathonly boolean) toma un argumento, el $pathonly Que es un tipo de datos booleanos - false es el defecto.

Con $pathonly = true, Solo devolverá la ruta al sitio.

Ejemplos:

<?php echo JURI::base(); ?> Would echo something like: http:://localhost/joomla25/
<?php echo JURI::base(true); ?> Would echo: /joomla25

Tenga en cuenta que cuando $ pathonly = true, se omite la barra diagonal final al final de la ruta URI.

8
FFrewin