|
Úterý, 03 Listopad 2009 19:46 |
Dnes si ukážeme jak vytvořit druhý postranní panel ve wordpress šabloně. Defaultní šablona obsahuje pouze jeden postranní panel. To někdy nemusí stačit, zvláště pokud například v pravém panelu zobrazíme reklamu, nemusí nám jeden stačit. Využijeme článek o tvorbě šablony a upravíme původní šablonu tak, aby měla druhý postranní panel na levé straně.
Jak tedy na to. Nejprve si zkopírujeme soubor sidebar.php, který je uložený v adresáři šablony. Nyní ho přejmenujeme třeba na sidebar-levy.php. Nyní si musíme říct co všechno chceme ve sloupci zobrazovat. V pravém sloupci v naší původní šabloně zobrazujeme kategorie a archív. Do levého menu si tedy vložíme třeba přihlašovací formulář a informace o uživateli, který je právě přihlášen.
Jdeme tedy na to otevřeme si náš nově vytvořené soubor a do něho vložíme tento kód:
<div id="panel"> <?php if (!(current_user_can('level_0'))){ ?> <h2><?php _e('Přihlášení'); ?></h2> <form action="<?php echo get_option('home'); ?>/wp-login.php" method="post"> <input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" /> <input type="password" name="pwd" id="pwd" size="20" /> <input type="submit" name="submit" value="Přihlásit" /> <p> <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Pamatuj si mne</label> <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" /> </p> </form> <a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Ztracené heslo?</a> <?php } else { ?> <h2>Odhlásit</h2> <a href="<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">Odhlásit</a><br /> <a href="http://vasestranky.tld/wp-admin/">Admin</a> <?php }?> <h2><?php _e('Informace o uživateli'); ?></h2> <?php if (!(current_user_can('level_0'))){ echo 'Žádný uživatel není přihlášen'; } else{ get_currentuserinfo(); echo '<li>Už. jméno: ' . $current_user-> user_login . "</li>\n"; echo '<li>Email: ' . $current_user-> user_email . "</li>\n"; echo '<li>Level: ' . $current_user-> user_level . "</li>\n"; echo '<li>Jméno: ' . $current_user-> user_firstname . "</li>\n"; echo '<li>Příjmení: ' . $current_user-> user_lastname . "</li>\n"; echo '<li>Zobrazované jméno: ' . $current_user-> display_name . "</li>\n"; echo '<li>ID: ' . $current_user-> ID . "\n"; } ?> </div> <h2>
%3Cdiv%20id%3D%22panel%22%3E%0A%3C%3Fphp%20if%20%28%21%28current_user_can%28%27level_0%27%29%29%29%7B%20%3F%3E%0A%0D%0A%3Ch2%3E%3C%3Fphp%20_e%28%27P%C5%99ihl%C3%A1%C5%A1en%C3%AD%27%29%3B%20%3F%3E%3C%2Fh2%3E%0A%3Cform%20action%3D%22%3C%3Fphp%20echo%20get_option%28%27home%27%29%3B%20%3F%3E%2Fwp-login.php%22%20method%3D%22post%22%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22log%22%20id%3D%22log%22%20value%3D%22%3C%3Fphp%20echo%20wp_specialchars%28stripslashes%28%24user_login%29%2C%201%29%20%3F%3E%22%20size%3D%2220%22%20%2F%3E%0A%3Cinput%20type%3D%22password%22%20name%3D%22pwd%22%20id%3D%22pwd%22%20size%3D%2220%22%20%2F%3E%0A%3Cinput%20type%3D%22submit%22%20name%3D%22submit%22%20value%3D%22P%C5%99ihl%C3%A1sit%22%20%2F%3E%0A%3Cp%3E%0A%3Clabel%20for%3D%22rememberme%22%3E%3Cinput%20name%3D%22rememberme%22%20id%3D%22rememberme%22%20type%3D%22checkbox%22%20checked%3D%22checked%22%20value%3D%22forever%22%20%2F%3E%20Pamatuj%20si%20mne%3C%2Flabel%3E%0A%3Cinput%20type%3D%22hidden%22%20name%3D%22redirect_to%22%20value%3D%22%3C%3Fphp%20echo%20%24_SERVER%5B%27REQUEST_URI%27%5D%3B%20%3F%3E%22%20%2F%3E%0A%3C%2Fp%3E%0A%3C%2Fform%3E%0A%3Ca%20href%3D%22%3C%3Fphp%20echo%20get_option%28%27home%27%29%3B%20%3F%3E%2Fwp-login.php%3Faction%3Dlostpassword%22%3EZtracen%C3%A9%20heslo%3F%3C%2Fa%3E%0A%3C%3Fphp%20%7D%20else%20%7B%20%3F%3E%0A%3Ch2%3EOdhl%C3%A1sit%3C%2Fh2%3E%0A%3Ca%20href%3D%22%3C%3Fphp%20echo%20wp_logout_url%28urlencode%28%24_SERVER%5B%27REQUEST_URI%27%5D%29%29%3B%20%3F%3E%22%3EOdhl%C3%A1sit%3C%2Fa%3E%3Cbr%20%2F%3E%0A%3Ca%20href%3D%22http%3A%2F%2Fvasestranky.tld%2Fwp-admin%2F%22%3EAdmin%3C%2Fa%3E%0A%3C%3Fphp%20%7D%3F%3E%0A%0A%0D%0A%3Ch2%3E%3C%3Fphp%20_e%28%27Informace%20o%20u%C5%BEivateli%27%29%3B%20%3F%3E%3C%2Fh2%3E%0A%3C%3Fphp%0Aif%20%28%21%28current_user_can%28%27level_0%27%29%29%29%7B%0Aecho%20%27%C5%BD%C3%A1dn%C3%BD%20u%C5%BEivatel%20nen%C3%AD%20p%C5%99ihl%C3%A1%C5%A1en%27%3B%0A%7D%0Aelse%7B%0Aglobal%20%24current_user%3B%0Aget_currentuserinfo%28%29%3B%0Aecho%20%27%3Cul%3E%27%3B%0Aecho%20%27%3Cli%3EU%C5%BE.%20jm%C3%A9no%3A%20%27%20.%20%24current_user-%3Euser_login%20.%20%22%3C%2Fli%3E%5Cn%22%3B%0Aecho%20%27%3Cli%3EEmail%3A%20%27%20.%20%24current_user-%3Euser_email%20.%20%22%3C%2Fli%3E%5Cn%22%3B%0Aecho%20%27%3Cli%3ELevel%3A%20%27%20.%20%24current_user-%3Euser_level%20.%20%22%3C%2Fli%3E%5Cn%22%3B%0Aecho%20%27%3Cli%3EJm%C3%A9no%3A%20%27%20.%20%24current_user-%3Euser_firstname%20.%20%22%3C%2Fli%3E%5Cn%22%3B%0Aecho%20%27%3Cli%3EP%C5%99%C3%ADjmen%C3%AD%3A%20%27%20.%20%24current_user-%3Euser_lastname%20.%20%22%3C%2Fli%3E%5Cn%22%3B%0Aecho%20%27%3Cli%3EZobrazovan%C3%A9%20jm%C3%A9no%3A%20%27%20.%20%24current_user-%3Edisplay_name%20.%20%22%3C%2Fli%3E%5Cn%22%3B%0Aecho%20%27%3Cli%3EID%3A%20%27%20.%20%24current_user-%3EID%20.%20%22%5Cn%22%3B%0Aecho%20%27%3C%2Ful%3E%27%3B%0A%7D%0A%3F%3E%0A%3C%2Fdiv%3E%0D%0A%3Ch2%3E
Myslím, že kód ani moc vysvětlovat nemusím. Pokud je uživatel přihlášen zobrazí se mu odkazy na odhlášení a pod tím informace o něm. Pokud je uživatel odhlášen zobrazí se přihlašovací formulář a v informacích o uživateli so zobrazí, že není přihlášen viz. obrázky


Nyní máme levé menu hotové, podívejme se tedy ještě na soubor index.php který musíme ještě trochu upravit. Otevřeme si ho a upravíme div s ID=obsah tatko:
<div id="obsah"> <div id="levy"> <?php get_sidebar('levy'); ?> </div> <div id="center"> <h1>Obsah</h1> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><?php the_title(); ?></h1> <h4>Posted on <?php the_time('F jS, Y') ?></h4> <p><?php the_content(__('(celý článek...)')); ?></p> <hr> <?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> </div> <div></div> </div>
%3Cdiv%20id%3D%22obsah%22%3E%0A%20%3Cdiv%20id%3D%22levy%22%3E%0A%20%3C%3Fphp%20get_sidebar%28%27levy%27%29%3B%20%3F%3E%0A%20%3C%2Fdiv%3E%0A%20%3Cdiv%20id%3D%22center%22%3E%0A%20%3Ch1%3EObsah%3C%2Fh1%3E%0A%20%3C%3Fphp%20if%20%28have_posts%28%29%29%20%3A%20while%20%28have_posts%28%29%29%20%3A%20the_post%28%29%3B%20%3F%3E%0A%20%3Ch1%3E%3C%3Fphp%20the_title%28%29%3B%20%3F%3E%3C%2Fh1%3E%0A%20%3Ch4%3EPosted%20on%20%3C%3Fphp%20the_time%28%27F%20jS%2C%20Y%27%29%20%3F%3E%3C%2Fh4%3E%0A%20%3Cp%3E%3C%3Fphp%20the_content%28__%28%27%28cel%C3%BD%20%C4%8Dl%C3%A1nek...%29%27%29%29%3B%20%3F%3E%3C%2Fp%3E%0A%20%3Chr%3E%0A%20%3C%3Fphp%20endwhile%3B%20else%3A%20%3F%3E%0A%20%3Cp%3E%3C%3Fphp%20_e%28%27Sorry%2C%20no%20posts%20matched%20your%20criteria.%27%29%3B%20%3F%3E%3C%2Fp%3E%0A%20%3C%3Fphp%20endif%3B%20%3F%3E%0A%20%3C%2Fdiv%3E%0A%20%3Cdiv%3E%3C%2Fdiv%3E%0A%20%3C%2Fdiv%3E
Všimněme si hlavně funkce
get_sidebar('levy');
ta nám vkládá náš soubor sidebar-levy, již je všem jasné proč jsme soubor pojmenovali právě tak jak jsme ho pojmenovali, parametr funkce tvoří název souboru za pomlčkou. Nyní již máme panel v šabloně. Musíme ho ještě dostylovat v kaskádových stylech. Vložíme do souboru style.css tyto tvě definice:
#levy{ float:left; width:200px; } #center{ float:right; width:370px; -
}
%23levy%7B%0A%20float%3Aleft%3B%0A%20width%3A200px%3B%0A%7D%0A%23center%7B%0A%20float%3Aright%3B%0A%20width%3A370px%3B%0A%20%0A%7D
Tím by mělo být hotovo, samozřejmě by se měli nastavit nějaké okraje panelů a obsahové části, ale pro demonstraci určitě stačí.
Celá šablona nyní vypadá takto:

Opět si můžete stáhnout celou šablonu pro kontrolu. V případě dotazů pište do diskuse.
|