Child theme – contango

Zvolené téma obsahuje celkem 15 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  admin a poslední změna je stará 9 let, 10 měsíců.

Aktuálně je na stránce zobrazeno 16 příspěvků - 1. až 16. (z celkem 16)
  • Autor
    Příspěvky
  • #18358

    peeeeeta
    Participant
    Web

    Zdravím,
    dneska jsem zjistil, jaké výhody má vytvořit child theme. Tak jsem tak chtěl učinit, ale jedna věc mi nefunguje a to, že když si vytvořím child theme k šabloně contango, tak se mi berou soubory se složky lib z hlavní šablony a ne child šablony. Jak prosím vás docílím toho, aby se načetly soubory ze složky lib, ale z child šablony?
    Děkuji moc

    Attachments:
    #18375

    admin
    Keymaster
    Web

    Šablona Contango má v adresáři lib nějaké funkce podobné frameworku, které by asi neměly být v odvozené šabloně moc upravovány a proto to asi ani nepodporuje. V souboru functions.php je hned na začátku:

    require_once( trailingslashit( get_template_directory() ) . ‘lib/init.php’ );

    Funkce get_template_directory() bude vždy vracet adresář nadřazené šablony, i když bude použita šablona odvozená. Jinak by se musela použít funkce get_stylesheet_directory(). Autoři to ale asi tak nechtějí, protože by se musely zkopírovat patrně všechny soubory z adresáře lib a tím trochu ztrácí na efektu možnost odvozené šablony.

    Jakou tam potřebujete provést úpravu? Možná by to šlo řešit i jinak než úpravou natvrdo ve zdrojových souborech?

    #18385

    peeeeeta
    Participant
    Web

    No já jsem zkoušel i dosadit get_stylesheet_directoty(), ale stále se mi to načítalo z hlavní šablony.

    No já potřebuji udělat šablonu responsní a všechny úpravy se právě dělají v souboru 960.css, pak chci vyhodit odkaz na google font.

    #18395

    Musilda
    Participant
    Web

    Zkus použít

    Upravil admin: Špatně zadaný odkaz (neměl text, ale pouze title):

    <a href="http://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri" title="get_stylesheet_directory_uri"></a>

    #18396

    Musilda
    Participant
    Web

    Sakra, nechce to brát odkaz – get_stylesheet_directory_uri

    #18397

    peeeeeta
    Participant
    Web

    Musilda: Ano to jsem také zkoušel.

    #18399

    Musilda
    Participant
    Web

    Tak zkus ještě dirname( get_bloginfo('stylesheet_url')) a pak už nevím :-)

    #18404

    peeeeeta
    Participant
    Web

    Nevím jak to tam vložit.
    Hází mi to bílou obrazovku.
    Místo kódu

    /** Load the Core Files */
    require_once( trailingslashit( get_template_directory() ) . 'lib/init.php' );

    Jsem vložil

    /** Load the Core Files */
    require_once( trailingslashit(dirname(get_bloginfo('stylesheet_url'))) . 'lib/init.php' );

    Co je tedy prosím vás špatně?

    #18405

    Musilda
    Participant
    Web

    To nevím, ale možností, jak to řešit pomocí get_bloginfo je více. Především bych si definoval proměnnou a tu použil při require, protože se to pak bude měnit jen na jednom místě.

    Další možné řešení: $my_child = get_bloginfo('url').'/wp-content/themes/moje-child/'.soubor.css';

    #18406

    peeeeeta
    Participant
    Web

    Problém je v tom, že get_bloginfo vrací přímo url, což se danému kódu nelíbí. Potřeboval bych něco, co vypíše /home/nazevwebu/wp-content/...

    #18409

    admin
    Keymaster
    Web

    Než se člověk dostane k počítači, tak to tady dneska docela žije :-)

    Funkce get_stylesheet_directory_uri(), a vlastně každá s koncovkou *_uri() je pro URL adresu, zatímco potřebujete výše zmiňovanou get_stylesheet_directory(). Problém není v tom, že by nefungovala, ale protože tím řešíte pouze načtení souboru lib/init.php.

    Schválně několik ukázek:

    get_template_directory() – /wp-content/themes/contango (původní šablona)

    get_stylesheet_directory() – /wp-content/themes/contango-child (správně odvozená šablona). To samé vrací i get_stylesheet_directory_uri(), ale s http na začátku.

    dirname(get_bloginfo(‘stylesheet_url’)) – také odvozená šablona, ale zase s http na začátku, což nepotřebujeme. Proto se také objevuje bílá stránka, soubor lib/init.php to nenajde a proběhne Fatal error. To samé je pak v případě get_bloginfo('url').

    Hlavní finta je ale v tom, že sice načtete správně soubor lib/init.php z odvozené šablony, ale ten zase hned zpátky odkazuje na původní nadřazenou šablonu:

    define( 'CONTANGO_DIR', trailingslashit( get_template_directory() ) );

    Takže musíte ještě upravit soubor lib/init.php v odvozené šabloně a použít zmiňovanou funkci get_stylesheet_directory(), aby se i další soubory načítaly odtud.

    #18410

    admin
    Keymaster
    Web

    Stejně bych ale tyto úpravy raději zvážil…

    Google fonty jsou načítány pomocí akce wp_enqueue_script, takže je lze odebrat i bez dalších úprav pomocí functions.php přímo v odvozené šabloně a nemusíte vůbec zasahovat do adresáře lib v původní šabloně. A to samé je soubor 960.css, který by měl jít upravovat přímo prostřednictvím souboru style.css v odvozené šabloně. Není tedy žádný důvod provádět zásahy do adresáře lib, což patrně ani autoři šablony nechtěli.

    #18422

    Musilda
    Participant
    Web

    Tak se vykašli na funkce WordPressu a zkus to s $_SERVER[‘DOCUMENT_ROOT’], nebo dirname(__FILE__) .

    #18425

    peeeeeta
    Participant
    Web

    Admin: Jak tedy mám do function zapsat, aby se google font nenačítal?
    S tím, že můžu vložit úpravy do hlavního CSS jsem si to také myslel, ale když jsem tak učinil, tak mají prioritu ty v 960.css, tak že to bohužel nefunguje a zásah musím udělat. S tím problémem, že v init.php je zase odkaz na původní šablonu jsem si také potom všiml. Bohužel jsem neměl tolika času vše ještě vyzkoušet.

    Chtěl jsem se zeptat může se odvozená šablona od Contango jmenovat třeba Odvozena-sablona ? nebo to musí byt contango-child? Díky

    #18572

    peeeeeta
    Participant
    Web

    Tak už tu mám jenom poslední problém v rodičovské šabloně je

    require_once( trailingslashit( get_template_directory() ) . 'lib/init.php' );

    a v odvozené je

    require_once( trailingslashit( get_stylesheet_directory() ) . 'lib/init.php' );

    Ovšem soubory se mezi sebou mlátí, jak tedy mohu pomocí functions.php odstranit to přidání souboru v rodičovské šabloně?
    Děkuji

    #18593

    admin
    Keymaster
    Web

    Co to znamená, že se spolu soubory “mlátí”? :-)

    V rodičovské šabloně patrně nemůže zůstat funkce get_template_directory(), protože bude odkazovat vždy zpátky na rodičovskou šablonu. Nejdříve je tedy zpracováván soubor functions.php z rodičovské šablony a následně ještě z té odvozené. Takže se asi načtou postupně oba soubory. Zkusil bych se vrátit k původně navrhovanému řešení, tedy nechat framework tam, kam ho autoři umístili a pustit se do úprav trochu jinak.

    V rámci odvozené šablony můžete např. snadno zrušit načítané Google fonty (šablona je k tomu přizpůsobena):

    add_action( 'wp_enqueue_scripts', 'separatista_deregister_font', 2 );
    function separatista_deregister_font() {
    	wp_deregister_style( 'contango-google-fonts' );
    }

    Myslím, že úprava kaskádových stylů také nebude moc problematická…

    P.S. Odvozená šablona se může jmenovat libovolně, důležitý je tam zápis v souboru style.css:

    Template: contango

Aktuálně je na stránce zobrazeno 16 příspěvků - 1. až 16. (z celkem 16)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti