it-swarm-es.tech

¿Cuál es el método correcto para obtener el alias de la página activa?

Quiero cargar algunos JS pero solo en la página donde se necesita.

Estoy tratando de usar el alias del artículo activo para determinar eso.

Mi código en el archivo component.php es:

   $path = &JFactory::getURI()->getPath();
   $length = strlen($path);

   for ($i = $length; $i >= 0 ; $i--)
         if ($path[$i] == '/')
            return substr($path, $i + 1, $length - $i - 1);

   $alias = $path;

y esta parte en la <cabeza>:

if ($alias == "elearning")) { ?>
    <script src="/media/system/js/ddslick.js" type="text/javascript"></script>
<?php } ?>

Simplemente no parece funcionar.
¿Alguna sugerencia de dónde me estoy equivocando?

6
BodgeIT

Una posibilidad es modificar ligeramente el diseño para permitir más controles de plantilla. Esto no está directamente relacionado con la obtención del alias del artículo, sino con otro enfoque.

Para hacer esto, agregue este campo dentro del archivo templateDetails.xml

<field name="htmllayout" type="list" default="center"
    label="HTML Layout"
    description="Dynamic layout style from index.php"
    filter="Word"
>
    <option value="main">main</option>
    <option value="raw">Raw</option>
</field>

Puede agregar tantas opciones como necesite, tengo 2 allí como ejemplo. Esto creará una configuración en el administrador de plantillas. Abrir la plantilla en el administrador de plantillas también debería permitirle cambiar esa configuración. La clave es dejar la plantilla actual en main, luego duplicar la plantilla (solo duplica la configuración, no los archivos). En esta segunda plantilla, puede cambiar el diseño HTML y usar la pestaña "asignación de menú" para especificar qué página puede usarla. Entonces, en el caso de un alias de un artículo, siempre que el artículo tenga un elemento de menú asociado (probablemente con el mismo alias) debería ser bastante fácil asignar esa plantilla al alias especificado (y todos los demás).

Básicamente, tendrá una plantilla especificada para usar solo con páginas específicas.

Sin embargo, esto también requiere algunas modificaciones en index.php.

agregue lo siguiente a la parte superior del archivo, dentro del primer bloque php:

$htmllayout = $this->params->get('htmllayout');

Luego, en cualquier lugar donde necesite especificar algo diferente para un diseño especial, haga lo siguiente:

<?php if($htmllayout=='LAYOUTNAME'): ?>
anything you need here
<?php endif; ?>
1
Jordan Ramstad

Si habla del alias del artículo, invoque el modelo de contenido o léalo desde la base de datos.

Si está hablando del alias en la url, obtenerlo no es fácil: Joomla tiene muchas formas de generarlo: será diferente si llega al artículo:

  • a través de un blog o una lista de categorías, se basará en el alias del artículo;
  • a través de un elemento de menú directo, se basará en el alias del elemento de menú;
  • a través de una búsqueda, Joomla decide;
  • tienes una extensión SEF? haces tus propias reglas

Y esto es solo para la última sección del alias; la primera parte (o 'ruta') depende de la navegación que lo llevó al artículo.

Para darle una idea de lo complejo que es esto, una extensión SEF convencional invoca la interfaz para obtener el alias, ya que obviamente descubrieron que no era confiable generar un alias en el back-end.

En pocas palabras: olvida el alias.

Formas de evitar esto: $ input = JFactory :: getApplication () -> input;

  • Use la identificación del elemento del menú: $ input-> get ('Itemid');
  • Utilice el nombre del componente/vista: $ input-> get ('opción'). '.' . $ input-> get ('view') ;;
  • Use la identificación del artículo: $ input-> get ('id'); (pero verifique si option = com_content & view = article)

Espero que esto responda a su pregunta.

1
Riccardo Zorn

Si desea cargar un js solo en ciertas páginas, intente usar jumi. Eso me sorprendió. http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content/102

0
Eva Farkasne