Existe alguma maneira de adicionar JS / CSS à página de rodapé?


Respostas:


17

O footerbloco não oferece nenhum suporte para js diretamente, como a cabeça.

Mas há um bloco com o nome no before_body_endqual você pode adicionar tudo o que deseja com modelo ou bloco de texto.

Gostaria de pensar no seu próprio modelo e no tipo de bloco Mage_Page_Block_Html_Head, então você pode usar o que o @Dexter recomendou.

Não, você precisa de algo assim, você não tem nenhum bloco page / html_head para se referir também:

<!-- get the block which we want our content in -->
<reference name="before_body_end">
    <!-- add another block of type page/html_head to have all the great functionality to add/remove css and js stuff -->
    <!-- it is important to set your own template, because the head block has a defined default template page/head.phtml which has all the stuff of the head. Using this will bring a lot of problems -->
    <block type="page/html_head" name="scripts_in_footer" template="YOUR TEMPLATE">
        <!-- add whatever you want as you are used to in the head via the standard magento api -->
        <action method="addItem"><type>skin_css</type><name>css/styles.css</name></action>
    </block>
</reference>

E dentro do seu modelo, você precisa:

<?php // and to echo the whole stuff later in the template, you need to add the code, so the added js/Css files are echoed ?>
<?php echo $this->getCssJsHtml() ?>
<?php echo $this->getChildHtml() ?>

obrigado pela resposta @fabian blechschmidt. Eu adicionei algo assim, mas sem sorte e exceção também. <default> <reference name = "before_body_end"> <action method = "addItem"> <type> skin_js </type> <name> js / test.js </name> <params /> </action> </ reference > </default>
Mark

atualizou a resposta, você precisa de um bloco!
Fabian Blechschmidt 28/02

você é o HOMEM !!! Kudos..Obrigado pela resposta .. Mas ficarei feliz se você me explicar um pouco sobre o código, bem como para uma melhor compreensão .. #
Mark Mark

Adicionados alguns comentários. Se você tiver mais perguntas, faça-as - perguntas concretas :-) #
Fabian Blechschmidt

11
o nome correto do bloco é: <reference name = "before_body_end"> e não <reference name = "before_body_ends">
Tomas Dermisek

3

A parte do cabeçalho e rodapé é renderizada pelo módulo Página no magento. Para ver os modelos de cabeçalho e rodapé, vá para

app / design / frontend/ <your_package> /<your_theme> /template / page / html / footer.phtml

Dê uma olhada em outros arquivos na pasta da página também. Lá você pode ver header.phtmlqual seção de cabeçalho de renderização de cada página. head.phtmluse para adicionar arquivos js e css aplicáveis ​​a todas as páginas do magento.

Veja também os arquivos na pasta da página. Esses arquivos serão renderizados para cada página de acordo com a especificação de layout de uma página específica.

Faça um estudo sério sobre este módulo. Vai lhe ajudar bastante.

editar

Você pode adicionar seus css e js através do page.xml. Eu acho que vai resolver o seu problema. Vamos para

app / design / frontend/ <your_package> /<your_theme> / layout / page.xml

e adicione esse trecho de código no seu defeault handle. (Você pode ver muitos arquivos js e css adicionados nesse identificador. Basta adicionar esse código abaixo desses códigos)

 //this will add your js
 <action method="addItem">
     <type>skin_js</type>
     <name>js/yourjsfile.js</name>
 </action>  
 //this will add your css file
 <action method="addItem">
     <type>skin_css</type>
     <name>js/yourcssfile.css</name>
 </action>

É isso aí. Agora, verifique se os arquivos js e css personalizados estão no local

  skin/frontend/<your_package> /<your_theme>/js/yourjsfile.js
  skin/frontend/<your_package> /<your_theme>/css/yourcssfile.css

Boa sorte para o seu trabalho.


Eu não trabalho com o page.xml . No meu local.xml , tenho que incluir o método xml. Sua postagem editada sugere apenas como posso adicionar um JS / CSS em arquivos xml (que não é a questão).
Mark

@ Mark: no seu qn, não há dicas para usar o arquivo local.xml para o seu trabalho. Seu qn exige que você precise adicionar js e css ao rodapé. Minha atualização fará esse trabalho perfeitamente. De alguma forma, por que você precisa do arquivo local.xml para esse fim?
Rajeev K Tomy

Sendo um desenvolvedor Mage que mantém padrões, por que alguém usaria o page.xml? Seu código <action method="addItem"> <type>skin_js</type> <name>js/yourjsfile.js</name> </action>adicionará JS no <head> e não no rodapé !!!
Mark

2

Use XML para isso. Para adicionar Js no rodapé, chame a referência de rodapé. O código será algo parecido com isto

<reference name="footer">
   <action method="addJs"><script>js/file.js</script></action>
</reference>

Para adicionar JS na pasta de capa, você pode usar o seguinte código

    <reference name="footer">
    <action method="addItem"><type>skin_js</type><name>js/test.js</name></action>
</reference>

Para adicionar css, você pode usar o seguinte código xml

<reference name="footer">
    <action method="addCss"><stylesheet>css/layout.css</stylesheet></action>
</reference>

ou você também pode usar

<reference name="footer">
<action method="addItem"><type>skin_css</type><name>css/styles.css</name></action>
  </reference>

Método inválido Mage_Page_Block_Html_Footer :: addJs
Mark

@ Mark: Isso acontece porque a classe Footer não possui um método chamado "addJs". Para obter mais informações, dê uma olhada no seguinte: magento.stackexchange.com/questions/15904/…
pablofiumara

2

Para javascript, você já pensou em usar onload ou $ (document) .ready () do jquery?

Isso permitiria que você colocasse seu código no cabeçalho como na configuração típica, mas não o execute até que o conteúdo que seu js está fazendo referência seja carregado.

Seu código js filename.js seria semelhante a:

$(document).ready( function(){
   your custom js here
});

O código para o seu layout teria a seguinte aparência: (Obviamente, você precisará adicionar os diretórios apropriados conforme os tiver configurado.)

<reference name="head">
   <action method="addItem"><type>js</type><name>js/jquery/jquery.js</name></action>
   <action method="addItem"><type>js</type><name>js/filename.js</name></action>
</reference>

1

Sim, existe uma maneira, mas você deve adicionar via código, como abaixo, adicionar este código na parte inferior do arquivo 1column.phtml, pouco antes do final da <body>tag.

<script src="<?php echo $this->getSkinUrl('js/jquery.noConflict.js') ?>"></script>

Um mau conselho, porque você não deseja copiar seu código em todos os modelos.
Fabian Blechschmidt 28/02

não podemos adicionar js no rodapé via xml, então eu uso esse fluxo.
Keyul Shah

11
Dê uma olhada na minha resposta. Seu fluxo resolve o problema, mas você precisa copiar o código em todos os modelos raiz.
Fabian Blechschmidt 28/02

1

Eu recomendo o módulo mediarox pagespeed para ajudar você a otimizar seu javascript (e css) e melhorar a classificação de informações do google pagespeed.

Ele funciona analisando a saída html do Magento e executando uma ação de recortar e colar no código para mover o javascript para a parte inferior do código html. O processo é rápido, mas é melhor usado em conjunto com um cache de página inteira para armazenar em cache as alterações html.

Mais informações sobre como este módulo funciona e podem ajudá-lo a melhorar a classificação da velocidade da página aqui:

http://blog.gaiterjones.com/magento-google-pagespeed-jscsshtmlminify-optimisation/

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.