Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Child theme – contango
Štítky: Contango, Font, get_stylesheet_directory(), get_template_directory(), Odvozená šablona, wp_enqueue_script()
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ů.
-
AutorPříspěvky
-
16. dubna 2014 (2:51) #18358
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 mocAttachments:
17. dubna 2014 (14:01) #18375Š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?
17. dubna 2014 (15:52) #18385No 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.
18. dubna 2014 (8:40) #18395Zkus 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>
18. dubna 2014 (8:58) #1839618. dubna 2014 (9:03) #1839718. dubna 2014 (9:14) #1839918. dubna 2014 (10:10) #18404Neví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ě?
18. dubna 2014 (11:05) #18405To 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';
18. dubna 2014 (11:17) #18406Problé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/...
18. dubna 2014 (12:36) #18409Než 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.18. dubna 2014 (12:43) #18410Stejně 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.
18. dubna 2014 (16:06) #18422Tak se vykašli na funkce WordPressu a zkus to s $_SERVER[‘DOCUMENT_ROOT’], nebo dirname(__FILE__) .
18. dubna 2014 (19:53) #18425Admin: 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
8. května 2014 (10:25) #18572Tak 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ěkuji10. května 2014 (15:57) #18593Co 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
-
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.