Štítek Programování ×

Android Apache Ant Chrome CSS Data Databáze Desocializace Download ESRI Facebook Flash GIS Google Google Maps GPS Hardware HTML Hudba Internet iOS iPhone Jak na to jQuery Kindle mapa Maps Mapy Mashup Mobile MySQL Nezařazeno Obrázky PHP Programování Silverlight Software Studentská tvorba Test Video Všechno možné Webdesign Weblbinky Windows Wordpress Zajímavosti

14. 1. 2012

Minifikace CSS pomocí PHP

Pro minifikaci CSS existuje řada nástrojů (např. YUI Compressor), nejraději však používám klasické PHP:

$regex = array(
  "`^([\t\s]+)`ism" => '',
  "`([:;}{]{1})([\t\s]+)(\S)`ism" => '$1$3',
  "`(\S)([\t\s]+)([:;}{]{1})`ism" => '$1$3',
  "`\/\*(.+?)\*\/`ism" => "",
  "`([\n|\A|;]+)\s//(.+?)[\n\r]`ism" => "$1\n",
  "`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism" => "\n"
);

$css = preg_replace(array_keys($regex), $regex, file_get_contents(__DIR__ . '/style.css'));

file_put_contents(__DIR__ . '/style.min.css', $css);
#css, #php, #php-minifikace-css, #programovani
10. 1. 2011

Přidání užitečných CSS tříd do WordPress

WordPress má několik funkcí, které se starají o generování seznamu CSS tříd. První z nich se jmenuje body_class a generuje seznam tříd pro tag body. Její správné použití (v header.php) by mělo vypadat takto:

<body <?php body_class(); ?>>

Funkce vygeneruje celkem bohatý seznam různých CSS tříd, v závislosti na právě zobrazeném obsahu. Tyto třídy je pak možné využívat při stylování jak celého webu, tak konkrétní stránky. Výsledný HTML kód vypadá třeba takto:

<body class="page page-id-4 logged-in"> 

Jenže já si bohužel nikdy nepamatuji jaké ID která stránka má. A nepřipadá mi přehledné, stylovat obsah stránek pomocí nicneříkajících čísel. Vždy mi zde prostě chyběl nějaký dobře zapamatovatelný, snadno čitelný a jedinečný identifikátor – jakým vždy byl slug příspěvku.

Slug, jako třídu, přidáte jednoduše! Do function.php ve svém template stačí přidat následující kód:

function body_class_filter($class)
{
  global $post;
  if (is_page())
  {
    $class[] = $post->post_name;
  }
  // + bonus přidávající třídu se jménem webu
  $class[] = sanitize_title(get_option('blogname'));
  return $class;
}

add_filter('body_class', 'body_class_filter');

Alternativní způsob je ještě jednodušší a počítá s využitím funkce post_class  v page.php. Na patřičné místo (obvykle k nějakému obalovému DIV tagu) stračí vložit:

<?php post_class(basename(get_permalink())); ?>
#jak-na-to, #php, #programovani, #wordpress
3. 10. 2010

Snadné stránkování ve WordPress bez pluginu

Pokud chcete své příspěvky ve WordPress stránkovat, musíte obvykle sáhnout po nějakém pluginu. Což rozhodně není ideální řešení. Stránkování obsahu je prostě základní funkce. Je škoda, že to WordPress neumí bez nějakého zbytečného pluginu!

Jenže on to umí. V administraci se stránkování obsahu používá téměř všude. Což mimo jiné znamená, že na to existuje funkce. Stačí ji tedy jen dobře použít:

$pagination = array(
	'base' => str_replace('91919', '%#%', get_pagenum_link(91919)),
	'format' => 'page/%#%',
	'total' => ceil($wp_query->found_posts / get_settings('posts_per_page')),
	'current' => absint( get_query_var( 'paged' ) ),
	'show_all' => false,
	'prev_next' => true,
	'prev_text' => __('&laquo; Previous'),
	'next_text' => __('Next &raquo;'),
	'end_size' => 3,
	'mid_size' => 5,
	'type' => 'plain',
	'add_args' => false,
	'add_fragment' => ''
);

echo paginate_links($pagination);

Funkce paginate_links má řadu vstupních parametrů, které jsou podrobně popsány v dokumentaci.

Nejdůležitější je samozřejmě total - měl by obsahovat počet stránek. Ten jsem vypočítal jako zaokrouhlený podíl celkového počtu příspěvku a počtu příspěvků na stránku (tohle se nastavuje se v administraci).

Parametr current by měl obsahovat číslo aktuálně prohlížené stránky. Zjistíte jej snadno pomocí get_query_var. Další dva neméně důležité parametry jsou base a format – pomocí kterých se tvoří URL odkazu.

Base by měl obsahovat základní část URL. Což je ta část, které se při procházení jednotlivých stránek nemění. Nenapadl mě lepší způsob, než zavolat funkci get_pagenum_link. Řetězec %_% bude při tvorbě URL nahrazen obsahem parametru format.

Format je ono samotné stránkování. Měl by obsahovat tu část URL, která se bude měnit. V mém příkladu využívám tzv. hezké URL. Takže číslo stránky je očekávané za page. Řetězec %#% bude nahrazen čísly. Výsledná URL tak bude vypadat například takto http://www.nabito.net/page/2

Ostatní parametry jsou spíš doplňkové.

#jak-na-to, #programovani, #wordpress
17. 8. 2010

Odstranění otravné hlášky o nutnosti upgrade WordPress

Určitě ji znáte, otravnou žlutou hlášku, která Vás informuje o nutnosti Aktualizace WordPress. Zde je postup, jak ji nadobro zrušit (funguje ve všech verzích).

# 2.3 to 2.7:
add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );

# 2.8 to 3.0:
remove_action( 'wp_version_check', 'wp_version_check' );
remove_action( 'admin_init', '_maybe_update_core' );
add_filter( 'pre_transient_update_core', create_function( '$a', "return null;" ) );

# 3.0:
add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );

Tenhle kousek kódu stačí vložit do function.php ve Vašem template a máte na vždy pokoj od aktualizací. Netřeba připomínat, že se tomu stejně jednou nevyhnete :) .

#jak-na-to, #programovani, #wordpress
26. 4. 2010

Přidání tlačítka Facebook like do WordPress

Tlačítko Like, které znáte z Facebook, opustilo své  rodiště a postupně dobývá nové internetové světy. Najdete jej nově také zde (nabito.net).

Přidání tlačítka Facebook Like do WordPress je snadné. Stačí si do function.php ve wp-content/templates/vas_template přidat tohle:

function the_facebook_like($method = 'like')
{
  ?><iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=button_count&amp;show-faces=true&amp;width=500&amp;action=<?= $method?>&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:100%; height:30px; float:right;"></iframe><?php
}

Do header.php (také ve vas_template) je zase dobré přidat do html hlavičky tyto meta tagy, aby Facebook věděl s kým má tu čest.

<meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
<meta property="og:title" content="<?php wp_title(); ?>" />
<meta property="og:type" content="blog" />

No a nakonec si můžete své tlačítko přidat kde budete potřebovat. Například do index.php (také ve vas_template).

<div class="entry">
<?php the_content('Čti zbytek...', false); ?>
<?php the_facebook_like() ?>
</div>

Funkci the_facebook_like je možné volat tam, kde je dostupná proměnná $post (single.php, page.php atd.).

#facebook, #php, #programovani