własny szablon - override js data-main, jak?
Wyniki 1 do 3 z 3

Temat: własny szablon - override js data-main, jak?

  1. #1
    Debiutant
    Dołączył
    16-02-2016
    Skąd
    Krosno
    Wpisy
    8
    Punkty
    2

    Joomla! 3.5 własny szablon - override js data-main, jak?

    Mam takie pytanie jak dodać wstawienie js wraz z data-main czyli konfig dla reciurejs

    ogólnie wstawienie recuirejs z data-main w head jest takie
    Kod PHP:
    <script data-main="<?php echo $this->baseurl ?>/templates/<?php echo $this->template?>/js/main" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template?>/js/vendor/require.js"></script>
    a jak wstawić jako override do head
    Kod PHP:
    $doc->addScript(); 
    aby uwzględnić data-main i czy w ogóle jest to możliwe
    także jquery nie potrzebuje wprost z joomli, gdyż załatwia to recuirejs poprzez config main (biblioteka pluginów jquery, bootstrap, wow, domReady itp oraz inicjalizację dla wszystkich stron)
    przykładowy template:

    Kod PHP:
    <?php
    defined
    ('_JEXEC') or die;

    $app             JFactory::getApplication();
    $doc             JFactory::getDocument();
    $user            JFactory::getUser();
    $this->language  $doc->language;
    $this->direction $doc->direction;

    // Output as HTML5
    $doc->setHtml5(true);
    $doc->setMetadata('X-UA-Compatible''IE=edge');
    $doc->setMetaData('viewport''width=device-width, initial-scale=1');
    $doc->setGenerator('');

    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/mootools-more.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/mootools-core.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/core.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/modal.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);
    unset(
    $doc->_scripts[JURI::root(true) . '/media/jui/js/bootstrap.min.js']);

    $doc->addStyleSheet('https://fonts.googleapis.com/css?family=Lato:400,700%7CSriracha&subset=latin-ext');
    $doc->addStyleSheet('templates/' $this->template '/css/bootstrap.min.css');
    $doc->addStyleSheet('templates/' $this->template '/css/style.css');

    ?>
        <!DOCTYPE html>
        <html lang="<?php echo $this->language?>">
        <head>
            <jdoc:include type="head" />
            <script data-main="<?php echo $this->baseurl ?>/templates/<?php echo $this->template?>/js/main" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template?>/js/vendor/require.js"></script>
            <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
            <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
            <![endif]-->
        </head>
        <body>
                    <jdoc:include type="modules" name="menu" />
                    <jdoc:include type="modules" name="logo" />
                    <jdoc:include type="modules" name="karuzela" />
                    <jdoc:include type="component" />
                    <jdoc:include type="modules" name="footer" />
                    <jdoc:include type="modules" name="endbody" />    
        </body>
        </html>

    takie rozwiązanie jak w template jest otyle złe ze jeśli dam inicjalizację skryptów to zawsze inicjalizacja jest powyżej czyli

    Kod HTML:
    <script type="text/javascript">
            require(['main'], function () {
                require(['page/strona']);
            });
    </script>
    <script data-main="/template/xx/js/main" src="/template/xx/js/vendor/require.js"></script>
    tymczasowo zrobiłem w ten sposób ze zainstalowałem dodatek "Sourcerer" i tworząc moduły ze skryptem umieszczam w pozycji "endbody" przed </body>
    Z kolei "SriptsDown" odpada o ile działa ładnie przenosi skrypty przed </body> jeśli strona nie ma wymuszonego html5 to jest w porządku, natomiast gdy jest ustawiony html5 to z treści robią się krzaczki na stronie.

    oraz jak wywalić scrypt JCaption tworzony przez joomle?
    Kod HTML:
    <script type="text/javascript">
      jQuery(window).on('load',  function() {
        new JCaption('img.caption');
      });
    </script>

  2. Pani Reklamowa
    Pani Reklamowa jest aktywna
    Avatar Panny Google

    Dołączył
    19-08-2010
    Skąd
    Internet
    Postów
    milion
    Pochwał
    setki
  3. #2
    Wiarus Jac awatar
    Dołączył
    22-12-2005
    Skąd
    Szczecin/Warszawa/Bieszczady
    Wpisy
    1 321
    Punkty
    182

    Domyślny

    JCaption ostatnio usuwałem tak:

    Kod PHP:
    <?phpunset($this->_scripts[JURI::root(true).'/media/system/js/caption.js']);if (isset($this->_script['text/javascript'])){ $this->_script['text/javascript'] = preg_replace('%window\.addEvent\    (\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%',     ''$this->_script['text/javascript']);if (empty($this->_script['text/javascript']))unset($this->_script['text/javascript']);}?>
    Zapracowany po uszy, cały czas kilka projektów na tapecie.
    Od 2005 roku indywidualne projekty Joomla - www.studioalfa.pl.
    Polecam darmowe templatki Joomla.

    Nie pomagam w kwestiach związanych z Joomla na Facebooku! Forum Joomla jest tutaj.

  4. #3
    Debiutant
    Dołączył
    16-02-2016
    Skąd
    Krosno
    Wpisy
    8
    Punkty
    2

    Domyślny

    Dzięki wielkie, działa Twój sposób usuwania jCaption tylko troche inaczej zastosowałem przez override ale oba sposoby działają identycznie
    Kod PHP:
    $this->_script['text/javascript'] = preg_replace('%jQuery\(window\).on\(\'load\',\s*function\(\)\s*\{\s*new\s*JCaption\(\'img.caption\'\)\;\s*\}\)\;\s*%'''$this->_script['text/javascript']);
    if (empty(
    $this->_script['text/javascript'])) unset($this->_script['text/javascript']); 

    "data-main" trzeba sobie jednak darować tylko normalnie w head dopiąć jak mam teraz, bo joomla chyba nie przewiduje poprzez override z dopisaniem opcji data-main do js,

Podobne tematy

  1. Własny szablon: jak umożliwić edycję modulów od frontu?
    przez Qulka na forum Szablony, formatowanie wyglądu
    Odpowiedzi: 0
    Ostatni post/autor: 20-06-2015, 19:46
  2. Własny szablon
    przez sysek na forum Szablony, formatowanie wyglądu
    Odpowiedzi: 4
    Ostatni post/autor: 05-01-2012, 15:50
  3. Własny kod html, php , js w Joomla 1.5
    przez crazyluki na forum Rozszerzenia - problemy z obsługą, zarządzaniem
    Odpowiedzi: 1
    Ostatni post/autor: 27-07-2011, 09:08
  4. Własny szablon
    przez record na forum Szablony, wygląd, formatowanie
    Odpowiedzi: 3
    Ostatni post/autor: 03-01-2010, 13:07

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •