Magento 2 - ¿Cómo agregar archivos CSS personalizados en la cabeza?


8

En Magento 1.x, puedo agregar los archivos CSS en la cabeza usando el ayudante como se muestra a continuación.

<reference name="head">
    <action method="addCss"><stylesheet helper="module/helperclass/helperfunction"/></action>
</reference>

¿Alguien sabe cómo hacer esto en Magento 2?


¿Lo resolviste? o tienes alguna alternativa en esto. avíseme si descubre algo
— Dev

1
lo siento, aún no tengo solución. ahora, agregué este código <link rel = "stylesheet" type = "text / css" media = "all" href = "<? php echo $ _helper-> getCSSFile ()?>"> en "after.body.start " envase.
— Mike

Encontré la solución, verifique la respuesta a continuación.
— Mike

Respuestas:


9

No necesita ayuda, puede usar este código a continuación en su diseño:

<head>
    <css src="Namespace_YourModule::css/styles.css"/>
</head>

Porque necesito agregar un archivo css dinámico.
— Mike

¿Puede proporcionar el ejemplo de src para el módulo de contacto si deseo agregar el archivo style.css en la página con el formulario de contacto? Intenté <css src = "Magento_Contact :: css / styles.css" /> pero no funcionó ... Me falta el flujo de magento aparentemente. El archivo styles.css está en la carpeta module-contact / view / css / ...
— Lachezar Raychev

Hola @LachezarRaychev, si manejas la interfaz, necesitas crear un styles.cssarchivo ../view/frontend/css/style.css. Con el backend, necesitas crear un styles.cssarchivo ../view/adminhtml/css/style.css.
— Thao Pham

probé eso y puse # contact-form {border: 1px solid blue! important; } no funcionó ... el archivo está a la vista / frontend / css / styles.css y <css src = "Magento_Contact :: css / styles.css" /> está en contact_index_index.xml en <head> </head> elemento ... sin borde azul alrededor del formulario ... realmente extraño ...
— Lachezar Raychev

Nvm ... tuve que crear la carpeta Magento_Contact en static / frontend / Magento / luma / sv_SE y dentro crear la carpeta css / y poner dentro el archivo styles.css ... ahora funciona. Solo pensé que de esa manera importaría el formulario del archivo dentro del módulo contact / view / frontend / css / folder ...
— Lachezar Raychev

8

Intenta estos pasos.

  1. Cree un archivo CSS en este directorio. app / design / frontend / Vendor / theme / web / css / customcss.css
  2. Cree el archivo default_head_blocks.xml si no existe en esta ruta app / design / frontend / Vendor / theme / Magento_Theme / layout / default_head_blocks.xml

Poner el siguiente código en default_head_blocks.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
        <css src="css/customcss.css" />
    </head>
</page>

¡¡Espero que esto te ayude!!


¿Necesito ejecutar algún comando gruñido después de hacer esto?
— TheBlackBenzKid

1
El nombre del archivo CSS es dinámico. ahora, agregué este código <link rel = "stylesheet" type = "text / css" media = "all" href = "<? php echo $ _helper-> getCSSFile ()?>"> en "after.body.start "contenedor, ¿cómo puedo agregar este código en <head>?
— Mike

6

Encontré la solución yo mismo.

En el diseño del archivo xml.

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="head.additional">
            <block class="Magento\Framework\View\Element\Template" name="block_name" template="custom_head.phtml" />
        </referenceContainer>
    </body>
</page>

En el archivo custom_head.phtml

<link rel="stylesheet" type="text/css" media="all" href="<?php echo $_helper->getCSSFile()?>">

1

Crear modelo personalizado

agregar espacio de nombres de archivo xml / YourModule / view / frontend / layout / default_head_blocks.xml

este archivo cambiará el diseño de la cabeza utilizando la configuración de la página. Lea más en http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html#layout-types-conf

ejemplo de contenido de archivo

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <css src="Namespace_YourModule::css/custom.css" />
    </head>
</page>

luego agregue el archivo CSS en esta ruta de espacio de nombres / YourModule / view / frontend / web / css / custom.css


Gracias por la respuesta. Funcionó para mi. Ahora css se aplica en todas las páginas que usan este archivo.
— Vinay Sikarwar

¿Me pueden ayudar? ¿Cómo puedo aplicarlo ahora solo en la página del producto?
— Vinay Sikarwar

No estoy seguro de esto, pero ¿qué pasa con la clase de cuerpo .catalog-product-view que Magento usa en la página de productos, podría heredar las propiedades CSS de ella?
— Mohamed Abo Badawy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.