Přehled odpovědí
-
AutorPříspěvky
-
neteyescz: Spíše zmizel text :-) Uživatel na to asi vzápětí přišel a už nám tu dotaz nenechal. A co mají znamenat černé obdelníky?
milosak: Výborně! V čem byl vlastně problém s původním pluginem AVH Extended Categories Widget? Proč nefungoval?
neteyescz: Díky :-) Ještě by se možná hodilo doplnit parametr category__and, který by řešil výpis příspěvků i v případě, kdy se shoduje několik použitých rubrik (tedy pokud by byl příspěvek zařazen třeba do dvou rubrik, tak aby se zobrazily pouze příspěvky, které jsou také zařazeny do obou stejných rubrik).
Zkuste to prosím trochu upřesnit. Jde o tento konkrétní problém s napojením na společnost Newton nebo jen obecný záměr zpracování nějakého XML zdroje?
Nemyslel jsem demo, ale zdrojové kódy :-) Koukám, že to ale bude asi placená šablona? Takže alespoň nějaký kousek kódu, kde se vyskytuje nějaký řetězec k překladu…
Tak ještě jsem se díval na inkriminovanou šablonu a problém je patrně v nastavení šablony. V menu Vzhled – Albizia Theme Options – Navigation Menu – Primary Navigation si můžete vybrat rubriky, které se budou v menu zobrazovat. A pokud nemáte žádné vybrané, tak jich autoři zobrazí automaticky pouze 9. Neptejte se mě proč je tam tento limit, ale myslím, že jde o to, aby se rubriky vešly na stránku a nepřesahovaly.
Menu pak využívá funkci wp_list_categories() s následujícími parametry (themes/albizia/includes/navigation.php):
title_li=&number=9Problém ale pak spočívá právě v tom, že jich je pouze 9, protože samotný dotaz do databáze bude směřovat na prvních 9 rubrik (a ve výchozím nastavení podle názvu). Takže pokud přidáte novou rubriku, tak se tam velmi pravděpodobně nezobrazí a nebo se zobrazí (je dost vysoko podle abecedy), ale třeba jako hlavní rubrika, protože jí bude chybět nadřazená rubrika. Vznikne tak vcelku zajímavý galymatyáš :-) Kromě vlastního menu ve WordPressu tak můžete používat nastavení přímo v šabloně, kde si jen zaškrtnete, které rubriky se budou na webu opravdu zobrazovat…
Postupně jsem se k tomuto tématu vracel a ještě než jsem stačil dodělat vlastní funkce, tak jsem našel plugin WyPiekacz, který je poměrně aktuální a měl by umět všechna možná omezení (dělky názvu, textu, počtu odkazů, atd). Vyzkoušejte a dejte prosím vědět…
Na tomto příkladu si můžeme zrovna představit jednu z drobných novinek WordPressu 3.4, a to filtr widget_posts_args (zdroj). Následující kód stačí nakopírovat do souboru functions.php v adresáři šablony nebo vytvořit samostatný plugin.
function separatista_nejnovejsi_prispevky( $args ) { if ( is_single() ) { $categories = get_the_category(); if ( $categories ) { $pocet_rubrik = 0; foreach ( $categories as $category ) { if ( $pocet_rubrik > 0 ) { $rubriky .= ','; } $rubriky .= $category->cat_ID; } } } $args['cat'] = $rubriky; return $args; } add_filter( 'widget_posts_args', 'separatista_nejnovejsi_prispevky' );Ošetřena by měla být i možnost, že je příspěvek zařazen ve více rubrikách. Bohužel podmínkou je využití nejnovější verze WordPressu, tedy WordPress 3.4 beta 1 (podrobnosti).
A jak toho dosáhnout v současné verzi WordPressu 3.3.1? Napadá mě např. ještě plugin WP Category Post List Widget. Novinkou by tam mělo být nastavení Current Category, což by mělo fungovat tak, jak potřebujete (nezkoušel jsem).
neteyescz: Přesně tak jsem to myslel, pouze s tím, že samotný kód ze serveru už možná nějaký div (či jiný HTML prvek) vrací, který pak stačí pouze nastylovat v souboru style.css. I uvedeném případě by bylo asi přehlednější oddělit HTML od CSS:
1) header.php
<div id="Fakaheda_banner">
Kód, obrázek či cokoliv jiného
</div>2) style.css
#Fakaheda_banner { z-index: 100; position: absolute; left: xy px; top: xy px; }Pěkné, ale myslím, že výhodou uvedeného pluginu je fakt, že si RSS ukázky “převede” na své vlastní články, se kterými pak může pracovat i méně zkušený uživatel např. pomocí widgetů, atd.
A ještě dodám, že řešení pomocí funkce post_password_required() by mělo být také možné. Nejdříve tedy necháte vypsat stránku a ještě než začne vlastní výpis příspěvků, tak doplníte podmínku (zdroj):
if( ! post_password_required() ) {
// Skript pro zobrazení tajného výpisu...
}
else {
// Bez hesla to nepůjde...
}Ale pozor, je to podobné řešení, které zmiňuje neteyescz, takže se všemi nevýhodami (příspěvky bude možné nalézt jinde (výpis rubriky, vyhledávání, atd).
Pokud by se uživatelé přihlašovali, tak existují zajímavá řešení v podobě pluginů, např. CaPa Protect, který by měl umět přesně to, co potřebujete.
Celé to bude trochu složitější, doplním základní poznámky…
Klasická ochrana heslem by měla bez problémů fungovat, ale pouze pro konkrétní obsah stránky či příspěvku. Takže na stránce bude ukryt pouze samotný obsah stránky. Pokud na stránce nevypisujete obsah této stránky, ale děláte tam nějaké specifické výpisy příspěvků, tak už to není obsah stránky a klasická funkce hesla se na to nevztahuje. Děláte to vlastním skriptem v souborech šablony a není to součást stránky.
Pokud zobrazujete vlastní výpis příspěvků na nějaké stránce, tak nepoužívejte query_posts(), ale raději WP_Query(), protože jde sekundární loop (smyčku).
Řešení, které popisuje neteyescz je také pouze částečné. Kód sice ochrání konkrétní stránku, ale jakýkoli příspěvek z “ukryté” stránky bude možné zobrazit jinde (výpis rubriky, vyhledávání, atd).
Nejjednodušší řešení je tak v podobě zmiňovaného pluginu Global Post Password, který jednoduše umožní nastavit jedno heslo pro všechny vybrané příspěvky. Na stránce tedy všichni uvidí výpis příspěvků (jejich názvy), ale k jejich obsahu se dostanou už pouze po zadání hesla.
Určitě by šlo ale nějak vyřešit i jejich “nezobrazování” na stránce, nejdříve bych se však chtěl ujistit, že jsem to celé správně pochopil.
Zkuste to ještě jednou :-)
V uvedených příkladech byla vždy chyba, takže to patrně nefungovalo. V prvním případě byl problém patrně ve funkci get_query_var(), kterou přiřazujete do pole (je třeba ji nejdříve přiřadit do proměnné). A v druhém případě šlo o použití neexistujícího parametru tag_id (správně je pouze tag).
Opravená ukázka (netestováno):
$strankovani = get_query_var( 'paged' );
query_posts( array( 'tag__and' => array( 2, 3 ), 'paged' => $strankovani ) );Smashing Magazine: Představen nástroj PrefixFree pro usnadnění práce s předponami prohlížečů v definicích CSS3.
Theme.fm: Návod na použití Google Analytics API pro práci se statistickými informacemi a jejich zobrazení přímo na webu či v administraci WordPressu.
Smashing Magazine: Jak umožnit vyhledávačům indexovat obsah webu, který využívá AJAX? Ukázka jak funguje hash tag, hash bang a podsouvání HTML obsahu vyhledávačům. A ještě podobný problém, tentokrát jak umožnit indexování a vyhledávání komentářů vložených na web pomocí pluginů pro Facebookové komentáře.
Wptuts+: Různé způsoby řešení pro získání ID rubrik z jejich URL.
Theme.fm: Jak automaticky nahrávat soubory (např. obrázky) ze zvolené URL adresy přímo do Knihovny médií ve WordPressu pomocí funkcí download_url() a media_sideload_image()?
WP Roots: Stylování vlastních menu ve WordPressu aneb podrobnosti o generovaném HTML a struktuře menu.
Smashing Magazine: Tvorba pokročilých šablon vizuálního editoru, kde můžete vytvořit např. speciální sloupce s trochu odlišným obsahem.
GetShopped.org: Ukázka přizpůsobení šablony pro vlastní eshop ve WordPressu fungující pomocí pluginu WP e-Commerce.
WordPress Publisher Blog: Práce s funkcemi pro validaci vstupních formulářových dat (validation) a ošetření výstupních dat (sanitization) ve WordPressu.
Díky za připomenutí tohoto vtipného “velikonočního vajíčka” ve WordPressu!
A už jen doplním, že jsme o něm také v minulosti informovali.
To bude potřeba vyzkoušet, důležité je zejména to, jaké HTML vrací ten PHP kód a tedy jak ho nastylovat, aby se zobrazoval přes obrázek v záhlaví. Máte někde nějakou ukázku? Samotný kód asi jednoduše vložíte do nějakého souboru šablony (patrně header.php), ale další úpravy už záleží na konkrétním obsahu… Možná také nebudete muset zasahovat do souborů šablony, ale bude stačit použít akci wp_head.
Aha, takže se to rozbilo přidáváním rubrik a podrubrik? To bude patrně nějaký problém v kódu šablony (pokud pro menu nepoužíváte nějaký plugin). Na webu je použita tato šablona Albizia (stejná verze)? Vypadá to, že se u ní již podobný problém s položkami menu u někoho vyskytl. Pokud je to ona, tak se na to můžeme zkusit podívat…
Tak to už nepůjde :-) Odvozená šablona může být zatím pouze do první úrovně, diskuze o dalších úrovních (tzv. Grandchild Theme) je ale vcelku zajímavá…
V tomto případě je tedy třeba upravovat pouze odvozenou šablonu (aby bylo možné alespoň automaticky aktualizovat původní šablonu). U odvozené šablony pak stačí zálohovat soubor style.css a functions.php, protože obvykle není potřeba toho více upravovat. Stačí úpravy vkládat na konce těchto souborů a po případné ruční aktualizaci je tam zase nakopírovat. Vlastní úpravy odvozené šablony, které by patřily do souboru functions.php, by mělo být možné také vložit do vlastního nezávislého pluginu.
Výše uvedený soubor je z původní šablony nebo z odvozené?
Místo úprav přímo v tomto souboru stačí vložit následující kód do souboru functions.php u odvozené šablony nebo do souboru s vlastním pluginem následující (pouze příklad):
remove_action('appthemes_footer', 'jr_do_footer');
add_action( 'appthemes_footer', 'moje_funkce' );
function moje_funkce() {
?>
<div class="inner">
<p>Nějaké moje zajímavé zápatí...</p>
</div><!-- end inner -->
<?php
} -
AutorPříspěvky