Kreiranje ZIP arhive u PHP-u. Zadani izgled WordPress arhiva U razvoju teme

Ovo su najvažnije vijesti koje smo objavili u 2008. godini na stranici.


Ažuriranje (6. decembar): Dodan je nedostajući zip sigurnosni popravak

Došlo je do velikog broja drugih dodataka i poboljšanja od posljednje alfe, ali evo kratkog pregleda najvažnijih promjena:

  • (dokumentacija je ažurirana na trenutno stanje)
  • ext/msql je uklonjen, dok će ext/ereg sada podići E_DEPRECATED obavještenja
  • ext/mhash je zamijenjen ext/hash, ali je pun BC zadržan
  • PHP sada koristi cc kao podrazumevani prevodilac, umesto gcc
  • Brojne ispravke grešaka za ext/pdo, ext/soap, stream sloj između ostalog

Nekoliko osnovnih promjena također zahtijeva dubinsko testiranje sa postojećim aplikacijama kako bi se osiguralo da su svi prekidi kompatibilnosti unatrag svedeni na minimum.

Voleli bismo da nam se programeri, dizajneri, menadžeri ili bilo ko drugi koji se interesuje za PHP programski jezik pridruže na onome što obećava da će biti sjajan događaj po veoma razumnoj ceni:

  • Standardne karte: £60.00
  • Early bird (do 8. novembra): £50.00
  • Povlaštene ulaznice: £35.00

* Potvrda sa zaglavljem pisma vaše kompanije
**Sa studentskom identifikacijom. Dostupno ograničeno sjedenje

OVO JE PREGLED RAZVOJA - NEMOJTE GA KORISTITI U PROIZVODNJI!

Svrha ovog alfa izdanja je da podstakne korisnike da ne samo aktivno učestvuju u identifikaciji grešaka, već i da osiguraju da su sve nove karakteristike ili neophodni prekidi kompatibilnosti unatrag navedeni u dokumentaciji. Molimo prijavite sve nalaze na ili .

Došlo je do velikog broja drugih dodataka i poboljšanja, ali evo kratkog pregleda najvažnijih promjena:

  • (dokumentacija je možda zastarjela)
  • Dodavanje , (phar je predviđen za još neke poslove kao glava alpha2) i proširenja
  • Opciono ciklično odvoz smeća
  • Opciona podrška za zamjenski drajver MySQLnd za libmysql
  • Windows stariji od Windows 2000 (Windows 98, NT4, itd.) više nisu podržani ()
  • Nove funkcije sintakse kao što su , ograničeni GOTO, ternarni prečac "?:"

Nekoliko osnovnih promjena također zahtijeva dubinsko testiranje sa postojećim aplikacijama kako bi se osiguralo da su svi prekidi kompatibilnosti unatrag svedeni na minimum. Ovo je posebno važno za korisnike kojima je potrebna nedokumentovana višebajtna podrška za Zend engine.

Naš najbolji podnosilac Felix De Vliegher je zapravo sam izvršio svoje poslednje podneske pošto je, na osnovu visokog kvaliteta njegovih podnesaka, dobio prava na urezivanje u PHP repozitorijum. Nismo dobili odgovore od svih učesnika, ali ohrabrujemo sve da bloguju o svom iskustvu i daju nam povratne informacije o tome kako poboljšati buduće događaje.

Sada bolje ikad nego nikad, evo 10 dobitnika obećane elePHPant nagradne igre koju sponzorira Nexen. Imajte na umu da me je Felix zamolio da ga ne uključujem u nagradnu igru, budući da već drži veliki broj slonova kod kuće.

  • Eric Stewart
  • Håvard Eide
  • Marc Veldman
  • Michelangelo van Dam
  • Rein Velt
  • Rob Young
  • Sami Greenbury
  • Sebastian Deutsch
  • Sebastian Schürmann
  • Stefan Koopmanschap

Mi ćemo Nexenu dostaviti e-mail adrese pobjednika, kako bi mogli dogovoriti isporuku elePHPants-a. Također za one koji se pitaju, možete nastaviti sa slanjem testova na . Malo hvala svim učesnicima i organizatorima TestFesta! Bez bezbroj ljudi koji su pomogli u organizaciji lokalnih događaja, implementaciji infrastrukture i recenzentima prijava, TestFest očito ne bi funkcionisao kao što je bio. Sigurno ćemo i u budućnosti raditi slične događaje na osnovu velikog uspjeha TestFesta 2008.

Sigurnosna poboljšanja i popravci u PHP 5.2.6:

  • Ispravljeno moguće prekoračenje bafera steka u FastCGI SAPI-ju koje je identifikovao Andrej Nigmatulin.
  • Popravljeno prekoračenje cijelog broja u printf() koje je identificirao Maksymilian Aciemowicz.
  • Ispravljen sigurnosni problem detaljno opisan u CVE-2008-0599 koji je identifikovao Ryan Permeh.
  • Popravljeno zaobilaženje safe_mode u cURL-u koje je identifikovao Maksymilian Arciemowicz.
  • Pravilno adresirati nepotpune višebajtne znakove unutar escapeshellcmd() koje je identifikovao Stefan Esser.
  • Nadograđen PCRE u paketu na verziju 7.6

Kada trebate brzo preuzeti izvore web stranica sa servera, čak ni relativno brz SSH tunel ne pruža potrebnu brzinu. I morate čekati jako, jako dugo. I mnogi hosting provajderi ne pružaju ovaj pristup, već vas tjeraju da se zadovoljite FTP-om, koji je mnogo puta sporiji.

Za sebe lično, pronašao sam izlaz. Mala skripta se učitava na server i pokreće. Nakon nekog vremena dobijamo arhivu sa svim izvorima. A jedan fajl, čak i preko starog FTP-a, preuzima se mnogo brže od stotinu malih.

Prethodno na stranicama ovog bloga, biblioteka zipArchive. Međutim, tada je bilo pitanje raspakivanja arhive.

Prvo, moramo saznati da li server podržava zipArchive. Ova popularna biblioteka je instalirana na velikoj većini hosting lokacija.

Biblioteka je strogo ograničena php i serverskim parametrima. Ogromne baze podataka i foto banke se ne mogu arhivirati. Čak i osnove dobrog starog 1C programa za računovodstvo. Čini se da bi trebali sadržavati samo tekstualne podatke. Ali ne.

Savjetujem vam da koristite biblioteku samo kada arhivirate relativno male web lokacije s velikim brojem malih datoteka.

Provjerimo da li je biblioteka dostupna za rad

If (!extension_loaded("zip")) (vrati false; )

Ako je sve u redu, skripta će nastaviti da se izvršava.

Mali offtopic za takve provjere. Provjere bi se trebale vršiti na ovaj način, izbjegavajući velike strukture sa ugniježđenim zagradama. Na ovaj način će kod biti atomičniji i lakši za otklanjanje grešaka. Uporedite

If(a==b)( if(c==d)( if(e==f)( echo "Svi uslovi su ispunjeni"; )else echo "e<>f"; )else echo "c<>d"; )else echo "a<>b;

i ovaj kod

If(a!=b) exit("a<>b); if(c!=d) exit("c<>d); if(e!=f) exit("e<>f); echo "Svi uslovi su ispunjeni";

Kod je ljepši i ne prerasta u ogromne ugniježđene strukture.

Oprostite na nevezanosti za temu, ali htio sam podijeliti ovo otkriće.

Sada napravimo objekat i arhivu.

$zip = novi ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) (vrati false; )

gdje je $destination puna putanja do arhive. Ako je arhiva već kreirana, tada će joj se dodati datoteke.

$zip->addEmptyDir(str_replace($source . "/", "", $file . "/"));

gdje je $source puna putanja do naše kategorije (koju smo prvobitno arhivirali), $file je puna putanja do trenutnog foldera. Ovo se radi tako da arhiva ne sadrži pune putanje, već samo relativne.

Dodavanje datoteke funkcionira na sličan način, ali morate je prvo pročitati u string.

$zip->addFromString(str_replace($source . "/", "", $file), file_get_contents($file));

Na kraju morate zatvoriti arhivu.

Vrati $zip->close();

Mislim da nema potrebe objašnjavati kako proći kroz sve datoteke i poddirektorije u folderu. Guglaj, nešto slično Rekurzivno obilaženje foldera u php

Ova opcija mi je odgovarala

Funkcija Zip($source, $destination)( if (!extension_loaded("zip") || !file_exists($source)) (vrati false; ) $zip = new ZipArchive(); if (!$zip->open( $destination, ZIPARCHIVE::CREATE)) (vrati false; ) $source = str_replace("\\", "/", realpath($source) if (is_dir($source) === true)( $files). = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST foreach ($file kao $file)( $file = str_replace("\\", "/", $file); // Zanemari "."); i ".." folderi if(in_array(substr($file, strrpos($file, "/")+1), array(".", ".."))) nastavak $file = realpath($file $file = str_replace("\\", "/", $file if (is_dir($file) === true)( $zip->addEmptyDir(str_replace($source . "/", ""); , $file ) )else if (is_file($file) === true)( $zip->addFromString(str_replace($source . "/", "", $file), file_get_contents($). file) ) ) )else if (is_file($source) === true)( $zip->addFromString(basename($source), file_get_contents($source)); ) return $zip->close(); )

Jučer su me pitali na forumu kreiranje ZIP arhiva u PHP-u. Malo sam razmislio i shvatio da bi ova tema bila interesantna velikom broju ljudi, jer ZIP arhiviranje u PHP-u veoma popularna tema. I u ovom članku ću pokazati primjer, kako kreirati ZIP arhivu koristeći PHP skriptu.

Odmah ću vam dati primjer kreiranje ZIP arhive, a onda ću to pažljivo komentarisati:

$zip = novi ZipArchive(); //Kreirajte objekat za rad sa ZIP arhivama
$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Otvori (kreiraj) arhivu archive.zip
$zip->addFile("index.php"); //Dodajte datoteku index.php u arhivu
$zip->addFile("styles/style.css"); //Dodajte datoteku styles/style.css u arhivu
$zip->close(); //Završi rad sa arhivom
?>

Kao rezultat izvršavanja ove skripte, vidjet ćete ZIP arhiva, koji će imati datoteku u korijenu index.php, a također će biti kreiran direktorij stilova, koji će sadržavati datoteku style.css. Mislim da je ovo sve očigledno i logično. A sada ću prokomentarisati šta smo uradili sa vama:

  • Kreirao objekat ZipArchive koristeći konstruktor.
  • Kreirao arhivu koristeći metodu otvori() objekt ZipArchive. Proslijedili smo naziv arhive ( archive.zip) i konstanta ZIPARCHIVE::CREATE, koji javlja da ako arhiva ne postoji, onda se mora kreirati.
  • Metoda addFile() dodaje fajlove u arhivu. Prvo smo dodali fajl " index.php", koji se nalazi u istom direktoriju sa skriptom. Zatim smo dodali datoteku style.css, također označavajući ispravnu putanju do njega u odnosu na skriptu.
  • Metoda zatvori() završava rad sa arhivom. Uvek ga pokrenite da biste oslobodili računarske resurse i da biste izbegli razne probleme povezane sa radom ove skripte i drugih skripti kojima je potreban pristup ovoj arhivi.

Na ovaj jednostavan način možete automatski kreirati ZIP arhive koristeći PHP. U sljedećem članku ćemo razgovarati s vama, kako izvući zip arhivu putem php-a.

Internet arhiv nudi više 15,000,000 knjige i tekstovi koji se mogu besplatno preuzeti. Postoji i kolekcija koju može pozajmiti bilo ko sa besplatnim nalogom na sajtu.

Alternativno, naš prijenosni stoni skener također se može kupiti i koristiti na licu mjesta u bibliotekama i arhivima. Da biste pročitali više o našem TT Scribeu, posjetite.

Od 2005. godine, Internet arhiv sarađuje i gradi digitalne kolekcije sa preko 1.100 bibliotečkih institucija i drugi dobavljači sadržaja. Partnerstva uključuju: , the i the . Ove kolekcije su digitalizirane iz različitih tipova medija uključujući: i široku lepezu . Značajan doprinos su dali partneri iz Sjeverne Amerike (i biblioteke) i , koji predstavljaju više od 184 jezika.


Internet arhiv podstiče našu globalnu zajednicu da doprinese fizičkim predmetima, kao i da učitava digitalne materijale direktno u Internet arhiv. Ako imate digitalne stavke koje želite da dodate u Internet arhivu, molimo vas da napravite novu stavku koristeći interfejs za otpremanje. Kliknite ovdje da biste primijenili određenu Creative Commons licencu Creative Commons licencu da biste priopćili kako se materijal može koristiti.

Za donaciju fizičkih knjiga ili predmeta, kontaktirajte info@site


Besplatno za čitanje, preuzimanje, štampanje i uživanje. Neki imaju ograničenja za masovnu ponovnu upotrebu i komercijalnu upotrebu, pogledajte kolekciju ili sponzora knjige. Pružajući gotovo neograničen pristup ovim tekstovima, nadamo se da ćemo potaknuti široku upotrebu tekstova u novim kontekstima od strane ljudi koji ih možda ranije nisu koristili.

Jasno je da je kreatorima predložaka lakše koristiti standardne funkcije i oznake WordPress šablona za prikaz standardnih prikaza svih stranica web stranice, ali ovo stvara ujednačen izgled i osjećaj prijelaza na iste stranice stranice.

Odmah ću vam pokazati šta dobijamo kao rezultat.

Vrsta WordPress arhiva: arhiva kategorija prije promjena
Arhiva sekcija sa uklonjenim sličicama i linkom za više detalja.

Bitan! Pošto je ovaj zadatak riješen promjenom šablonskog koda, prije rada radimo (baza podataka + fajlovi sajta). Osim toga, izrađujemo dvije kopije radnog predloška, ​​jednu za uređivanje, drugu za vraćanje neispravnih uređivanja.

Promjena izgleda WordPress arhiva

Da biste promijenili izgled WordPress arhiva, morate pronaći, odnosno odrediti koji fajl u vašem radnom predlošku prikazuje arhive. U većini šablona, ​​sve arhive izlaze u jednoj datoteci, koja se zove (archive.php).

Ponavljam, da bismo bili sigurni od gubitka stranice, ne koristimo uređivač u administrativnom panelu stranice, već uređujemo prethodno napravljene sigurnosne kopije datoteka šablona.

U uređivaču teksta (kao što je Notepad++), otvorite datoteku archive.php i počnite uređivati. U datoteci archive.php (na kraju datoteke) tražimo funkciju koja prikazuje arhivski blog:

Ime je ime datoteke koja se koristi za izlaz arhivskog bloga.

Prva ideja za završetak zadatka je jednostavna: potrebno je promijeniti kod datoteke koja izlazi arhive (content.php), odnosno ukloniti nekoliko funkcija iz nje i time promijeniti izgled svih arhiva stranice (kategorije, autori, datumi itd.).

Ali postavlja se pitanje, ako promijenimo kod datoteke šablona, ​​ona će se vratiti u svoje prethodno stanje nakon prvog ažuriranja šablona, ​​ovo nam ne treba. Stoga nećemo uređivati ​​datoteku content.php, već je kopiramo i kreiramo sopstvenu datoteku pod drugim imenom, na primjer content-cat.php i uredimo je.

Tražimo funkciju u datoteci koja prikazuje sličice. Funkcija sličica bit će na vrhu. Uklanjamo izlaz sličice.

ilii uklonite red s 'Pročitaj više', 'ime šablona'.

Snimamo kreiranu i uređenu datoteku content-cat.php i učitavamo je u direktorij stranice u folderu radnog šablona. Ovaj fajl će se pojaviti u administrativnom panelu sajta na kartici Izgled→Uređivač.

Pređimo na drugi korak. U datoteci koja izlazi iz arhive (archive.php), promijenite naziv datoteke content u content-cat .

Čuvamo i gledamo rezultat. Ako nešto nije u redu, sistem će prikazati grešku, datoteku greške i liniju greške. Da ispravite grešku, vratite sačuvane datoteke šablona rezervne kopije na njihovo mesto i ponovite sve ponovo.

Savjet. Ako želite da pročitate više o oznakama šablona i standardnim WordPress funkcijama, obratite pažnju na ovu stranicu: https://wp-kama.ru. Ovo nije reklama ili čak veza, ova stranica je jasnija od službene WordPress stranice u odjeljku sa predlošcima i oznakama funkcija.

U razvoju teme

Po mom mišljenju, tema objava na WordPress stranicama zahtijeva nastavak. U narednim objavama govorit ću o temama: i.

WordPress Codex

Skriveni tekst

the_post_thumbnail funkcija

Funkcija

the_post_thumbnail

Svrha

Funkcija_post_thumbnail daje html kod minijature posta, praznu vrijednost ako nema slike.

Aplikacija

Ova oznaka šablona, ​​funkcija_post_thumbnail, mora se koristiti interno

Upotreba

the_post_thumbnail(string|niz $size = "post-sličica", string|niz $attr = "")

Izvor

Fajl: wp-includes/post-thumbnail-template.php

Funkcija the_post_thumbnail($size = "post-thumbnail", $attr = "") ( echo get_the_post_thumbnail(null, $size, $attr); )

Opcije

$size (niz/niz)

Veličina sličice za primanje. To može biti niz sa uslovnim veličinama: sličica, srednja, velika, puna ili niz od dva elementa (širina i visina slike): niz(60, 60).

Default: 'post-thumbnail', odnosno veličina koja je postavljena za trenutnu temu funkcijom set_post_thumbnail_size()

$attr (niz/niz)

Niz atributa koje je potrebno dodati u rezultirajuću html img oznaku (alt je alternativni naziv).

Default:

Primjer

" title= "_("permalink"), the_title_attribute("echo=0")); ?>"> !}get("layout", "imgwidth"), $SMTheme->get("layout", "imgheight")), array("class" => $SMTheme->get("layout","imgpos") . " Featured_image")); if (!is_single())( ?>
mob_info