Php, mysql si altele

Crearea unui panou de logarare in WordPress

in Php, mysql si altele, Web - 24.11.2010 - Fara comentarii

WordPress este una din cele mai fiabile si folosite platforme de tip CMS din lume insa, in ciuda avantajelor pe care le ofera, are si parti negre. Spre exemplu, logarea!

Un administrator care foloseste WordPress va trebui sa introduca in bara domeniu/wp-admin pentru a accesa panoul, iar un eventual buton de logare in sidebar ar putea deranja simplii vizitatori. Cu ajutorul acestui articol, puteti introduce un buton de logare discret, care sa nu deranjeze utilizatorii si care sa va permita o navigare mai simpla in interiorul panoului de administrare.

Pentru a introduce butonasul de logare direct in header nu trebuie decat sa urmati cativa simpli pasi:

1.Localizati fisierul header.php al temei folosite – In WordPress, temele sunt stocate in directorul themes, din cadrul /wp-content.

2.Editarea header.php pasul 1 – Cu ajutorul unui editor de texte, editati fisierul header.php, adaugand inaintea  urmatorul cod:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">// <![CDATA[
$(document).ready(function(){
$(".btn-slide").click(function(){
$("#slide-panel").slideToggle("slow");
});
});
// ]]></script>

3.Editarea header.php pasul 2 – Folosind aceeasi tehnica de editare, adaugati dupa  urmatorul cod:

<div id="slide-panel"><!--SLIDE PANEL STARTS-->
&lt; ?php if ( ! is_user_logged_in() ){ ?&gt;&nbsp;
<h2>Login</h2>
<div>
<div><form action="&lt;?php echo get_option('home'); ?&gt;/wp-login.php" method="post">
<label for="log">Username : </label>
<input id="log" name="log" size="20" type="text" value="&lt;?php echo wp_specialchars(stripslashes($user_login), 1) ?/&gt;" />
<label for="pwd">Password : </label>
<input id="pwd" name="pwd" size="20" type="password" /> <input name="submit" type="submit" value="Login" /> <label for="rememberme">
<input id="rememberme" checked="checked" name="rememberme" type="checkbox" value="forever" /> Remember me</label>
<input name="redirect_to" type="hidden" value="&lt;?php echo $_SERVER['REQUEST_URI']; ?/&gt;" />
</form></div>
<div><a href="&lt;?php echo get_option('home'); ?&gt;/wp-register.php">Register</a> |
<a href="&lt;?php echo get_option('home'); ?&gt;/wp-login.php?action=lostpassword">Recover password</a></div>
</div>
<!--loginform ends-->
&lt; ?php } else { ?&gt;
<div>
<h2>Control Panel</h2>
<ul>
<li><a href="&lt;?php echo get_option('home'); ?&gt;/wp-admin/">Dashboard</a></li>
|
<li><a href="&lt;?php echo get_option('home'); ?&gt;/wp-admin/post-new.php">Write new Post</a></li>
|
<li><a href="&lt;?php echo get_option('home'); ?&gt;/wp-admin/page-new.php">Write new Page</a></li>
|
<li><a title="Logout" href="&lt;?php echo wp_logout_url( get_bloginfo('url') ); ?&gt;">Logout</a></li>
</ul>
</div>
<!--loginform ends-->
&lt; ?php }?&gt;

</div>
<!--SLIDE PANEL ENDS-->
<div><a href="#">&lt; ?php if ( ! is_user_logged_in() ){ ?&gt;Login&lt; ?php } else { ?&gt;Logout&lt; ?php }?&gt;</a></div>
<!--LOGIN BUTTON TEXT-->

4.Editarea style.css – In acelasi director ar trebui sa se afle si fisierul style.css. Folosind aceeasi tehnica de editare, adaugati in primul rand din style.css urmatoarele:

* {margin:0; padding:0; outline:0;}
#slide-panel{ background-color:#000;border-bottom-style:solid;border-bottom-width:2px;display:none;height:100px;margin:auto;}
.slide {width:950px; margin:auto;}
.btn-slide:link, .btn-slide:visited{color:#fff; float:right; display:block;font-size:14px; text-transform:uppercase; font-weight:bold;height:26px; padding:3px 0 3px 0;line-height:22px;text-align:center;text-decoration:none;width:100px; background-color:#000; font-family:Arial;}
.loginform {width:950px; margin:auto; color:#999; font-family:Arial, Helvetica, sans-serif;}
.formdetails {color:#FFF; font-size:12px;padding:5px;}
.formdetails input{border:none; padding:2px 5px 2px 5px; background-color:#EFEFEF;}
.loginregister {color:#999; padding:5px;}
.loginregister a:link, .loginregister a:visited {color:#FFF; font-size:11px; text-decoration:underline;}
.loginform h2 {padding:10px 10px 10px 0; font-size:18px; font-weight:normal; text-transform:uppercase;}
.loginform ul li {display:inline;}
.loginform ul li a:link, .loginform ul li a:visited {color:#FFF; font-size:12px; text-decoration:underline;}

5.Vizualizati rezultatele – Pentru a vizualiza rezultatele, puteti ordona un refresh la pagina, iar daca nu sunteti multumit de cum se afiseaza in pagina, puteti sterge codurile introduse, iar totul revine la normal!

O alternativa la .htaccess – url rewrite

in Funny, Php, mysql si altele, Web - 07.10.2009 - 4 comentarii

Azi am vazut cea mai tare solutie posibila de url rewrite. Pentru cine nu stie ce este aceea url rewrite, sunt acele link-uri “frumoase” dintr-un site. De exemplu: www.site.ro/notebook-toshiba/123 in loc de www.site.ro/produs.php?id=123. Aceasta rescriere a linki-urilor este o solutie eleganta care face calea linkurilor mai usor descifrabila dar care si ajuta la optimizare.
Acest lucru se face foarte usor folosind un fisier .htaccess pe server in care se scrie urmatoarea regula (pentru exemplul de mai sus):

RewriteRule ^([^/\.]+)/([0-9]+)$ produs.php?id=$2 [L]

Adica i se spune serverului ca orice link de forma www.site.ro/text/numar sa duca catre fisierul produs.php?id=numar, textul nu ne intereseaza neaparat.

Foarte clar si foarte simplu de implementat. Cam toate site-urile in ziua de azi folosesc asa ceva.

Dar exista si o alternativa!!! Am vazut azi prin scripturile unui site urmatoarele link-uri www.site.ro/categorii/un-nume-de-categorie.php, sau www.site.ro/produs/un-nume-de-produs.php. La prima vedere pare a fi folosit un .htaccess, dar ce rost mai are acel “.php” la sfarsit? Dupa care am tras concluzia ca nu exista nici o regula si ca defapt fiecare produs are un fisier si ca practic site-ul ar fi in totatitate static. Insa am gasit o mare baza de date cu multe categorii si produse. Am zis ca nu se poate, exista o baza de date, trebuie sa fie si un .htaccess sau o regula de rescriere… Ei bine, nu exista… dar nici paginile nu sunt statice…

Care este de fapt implementarea rescrierii de url?
mai departe »

Algoritm de cautare si ordonare dupa relevanta in php

in Php, mysql si altele, Web - 02.10.2009 - 8 comentarii

De curand am fost nevoit sa fac un algortim de cautare a unor produse ceva mai special. Iata ce idee mi-a venit si ce am reusit sa fac.

Sa zicem ca facem o cautare dupa “amplificator cablu si antena tv”. Facand aceasta cautare cu o simpla spargere in cuvinte si folosind LIKE ‘%cuvant%’ in mysql se pare ca nu vom obtine o ordine foarte ok, insa vom obtine rezultatele de care avem nevoie. Daca sa zicem cautarea a intors peste 100 de rezultate, trebuie afisate produsele cele mai apropiate de cautarea efectuata.

Dupa ce sunt puse rezultatele cautarii intr-un vector, algoritmul le prelucreaza astfel:

1. Primele inregistrari si cele mai importate vor fi cele care au toate cuvintele in titlu si in aceasi ordine (nu conteaza daca au intre ele caractere ciudate sau spatii, precum ignora si anumite cuvinte mici, gen: “si”, “ca”, “de”…)

2. Dupa aceea se fac urmatoarele combinatii de cuvinte: “amplificator cablu”, “amplificator antena”, “amplificator tv”, “amplificator cablu antena”, “amplificator cablu tv”, “amplificator antena tv”, “cablu antena”, “cablu antena tv”, “cablu tv”, “antena tv”. Cu alte cuvinte se formeaza combinatii intre cuvinte insa numai de la stanga spre dreapta. Un exemplu mai simplu: 1, 2, 3, 4. Combinatiile posibile vor fi 1 2, 1 3, 1 4, 1 2 3, 1 2 4, 1 3 4, 2 3, 2 4, 2 3 4, 3 4. Daca am face combinatii sau permutari intre cuvinte am obtine mai multe variante insa si multe irelevante (si-asa unele sunt irelevante), de exemplu am obtine “tv antena”, sau “tv amplificator” care in general sunt folosite invers. Am mers pe ideea ca la fel cum un user ii da un nume logic produsului sau, la fel si cautarea va fi destul de logica, insa de ce nu, la urma urmei pot fi incluse si acele combinatii de cuvinte.

mai departe »