Archive for the ‘Web’ Category

Навигация по категории.

В вордпрессе есть встроенная навигация по страницам prev_link next_link, но она ищет вообще по всем страницам. Мне тут понадобилось сделать такую же, только в пределах одной категории.

<ul>
 <?php
 $category = get_the_category();
 $catID = $category[0]->term_id;
 $myposts = get_posts('numberposts=2&offset=2&category=$catID');
 $t = 0;
 foreach($myposts as $post) :
 setup_postdata($post);
 if($t == 0){$class = "first";}
 if($t == 1){$class = "last";}
 $t++;
 ?>
 <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endforeach; ?>
 </ul>

Чем еще полезен пример — позволяет вытащить инфу с массива категории. Я его постоянно ищу.
Вторая строка дает массив $category[0], в котором есть след вещи:

[term_id]
[name]
[slug]
[term_group]
[term_taxonomy_id]
[taxonomy]
[description]
[parent]
[count]
[object_id]
[cat_ID]
[category_count]
[category_description]
[cat_name]
[category_nicename]
[category_parent]

Т.е. можно вытащить отдельно имя категории — $category[0]->name;

P.S. Надо быть проще..

<ul>
<?php
$prevPost = get_previous_post();
?>
<li><a href="<?php echo get_permalink($prevPost->ID);?>"><?php echo $prevPost->post_title;?></a></li>
<?php
$prevPost = get_next_post();
?>
<li><a href="<?php echo get_permalink($prevPost->ID);?>"><?php echo $prevPost->post_title;?></a></li>
</ul>

Градиенты на CSS 3

Скоро, скоро он придет и всем вебмастерам станет жить легче. Тени для текста и круглые уголки уже есть, теперь вот появилась градиентная заливка цветом. Фишка крайне полезная, у многих сайтов есть градиенты, но если раньше надо было колдовать гиф-полосками шириной в 1пиксель, просто широкими картинками в шапку, то теперь можно сделать все легко и просто. Видно только в продвинутых браузерах

#linearBg1 {
    height: 100px;
    background-color: #1a82f7;
    background-image: -moz-linear-gradient(100% 100% 180deg, #2F2727, #1a82f7) !important;
    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#1a82f7), to(#2F2727)) !important;
    background-image: url(images/linear_bg_1.png);// fallback image
}
 

И слева направо

#linearBg2 {
    height: 100px;
    background-color: #1a82f7; /* fallback color */
    background-image: url(images/linear_bg_2.png); /* fallback image */
    background-image: -moz-linear-gradient(100% 100% 90deg, #2F2727, #1a82f7);
    background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#1a82f7), to(#2F2727));
}
 

И сверху вниз

#radialBg {
    width: 100px;
    height: 100px;
    background-image: url(images/radial_bg.png);// fallback image
    background-position: center center;
    background-image: -moz-radial-gradient(center 45deg, circle closest-corner, #2F2727 0%, #1a82f7 100%);
    background-image: -webkit-gradient(radial, center center, 10, center center, 80, from(#2F2727), to(#2F2727));
}
 

И по кругу
Как угодно можно заливку делать.
Совместимость? Ну, для старых браузеров в цсс прописана картинка, если не поймет заливку то выведет ее. Есть и другое решение — по принципу кто не с нами, тот против нас. У кого браузер не понимает таких красот, тому сайт не показывать )) Или вообще завешивать его ))
Вот тут подсмотрел.

Заливка файлов на радикал PHP

Если нет желания забивать сервер картинками, то данный скриптец поможет. Он грузит картинку с веба (урл) на радикал, возвращает адрес картинки на радикале.

$postdata = "upload=yes&F=&URLF=".$imagelink."&O=yes&M=640&JQ=85&J=yes&IM=7&VM=180&R=0&VE=yes&V=Увеличить&X=&FS=";
$page = FetchUrl("http://www.radikal.ru/action.aspx", $postdata, NULL, NULL, NULL);
preg_match("!id=\"input_link_1\" value=\"(.*?)\"!si", $page, $imageUrl);
$imageUrl = $imageUrl[1];

FetchUrl моя универсальная функция для курла, я ее под все подряд юзаю, поэтому там много левого кода. При желании можно поудалять половину.

function FetchUrl($url, $postvars, $timeout, $ref, $blank){
 sleep($timeout);                         
 echo @date("r")." fetching $url\r\n";              
 $ch = curl_init();   
 if(isset($postvars)){
 echo @date("r")." $postvars\r\n";                    
 curl_setopt($ch, CURLOPT_POST, 1); 
 curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); 
 }
//        curl_setopt($ch, CURLOPT_PROXY, $proxy);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);       
//        curl_setopt($ch, CURLOPT_HEADER, true);           
 curl_setopt($ch, CURLOPT_TIMEOUT,15);               
 curl_setopt($ch, CURLOPT_ENCODING, 'gzip');         
 curl_setopt($ch, CURLOPT_COOKIEJAR, "c1.txt");    
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6 FirePHP/0.3");     
 curl_setopt($ch, CURLOPT_COOKIEFILE, "c1.txt");     
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  
 curl_setopt($ch, CURLOPT_URL, trim($url));
 curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
 curl_setopt($ch, CURLOPT_REFERER, $ref);                                                                  
 $result = curl_exec($ch);     
 if($blank == "1"){    
     $result = preg_replace("/\n/", "", $result);
     $result = preg_replace("/\r/", "", $result);
 } 
 curl_close($ch);                                                                                        
 return $result;                                                                                              
 } 

Одно имя категории, разные родители.

Полночи бился с этим тупняком.

Суть — есть сайт, две основных категории — Ищу работу и Требуются. В них подкатегории. Подкатегории одинаковые, потому что слесари могут и требоваться и искать работу.

Постим туда через xml-rpc. Например, Иванов Иван, ищет слесаря в свою фирму. Т.е. категория слесарь родителя Требуются. Но при постинге не указывается родитель, указывается только имя категории — слесарь. И постится в тот родитель, который создан раньше. В моем случае Иванов Иван уже не ищет слесаря, а сам хочет им поработать.

Почитал доки по xml-rpc, ничего так и не нашел. Выход нашел, но не очень красивый.

Вот как тут быть?

А php будет в cpp компилится

Фейсбук решил так свою проблему с нагрузкой — заюзал HipHop и получил расширение нагрузки до 400 миллиардов показов страниц в месяц.

Because of this, it’s been challenging to scale Facebook to over 400 billion PHP-based page views every month.

HipHop ретранслирует пхп в плюсы, потом компилит бинарники.
Все подробности на оффблоге
Может скоро и не надо будет си, на пхп накатал, код ретранслировал и порядок? ))

ZenCoding — плагин для верстки

Наткнулся тут в ридере на статейку.
Есть такая штука, зовется ZenCoding.
Что делает:
Например надо вбить шапку

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ru">
<head>
 <title></title>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>

</body>
</html>

Делается это одной командой:

html:4t

а вот так можно забить выпадающий список:

select>option#item-$*3
<select name="" id="">
<option value="" id="item-1"></option>
<option value="" id="item-2"></option>
<option value="" id="item-3"></option>
</select>

Крайне удобная штука.
Я юзаю gedit, плагин для него можно слить тут

Многопоточность в php

Оффициальной нет, сразу скажу. Есть только многочисленные костылики. Примеры, в основном, будут полезны в сео софте.

Встала вобщем задача передо мной — накатать многопоточный нескажу что, причем не просто многопоточный, а чтобы еще и потоками можно было управлять, как в том же делфи. То есть, чтобы можно было поток остановить, запустить, запауазить, возобновить и потоки еще должны оповещать о своем состоянии, мол в данный момент выполняю то-то. Read On…

css.php