ZIP archyvo kūrimas PHP. Numatytoji WordPress archyvų išvaizda Kuriant temą

Čia pateikiamos svarbiausios naujienos, kurias 2008 m. paskelbėme svetainėje.


Atnaujinimas (gruodžio 6 d.): Pridėtas trūkstamas ZIP saugos pataisymas

Po paskutinės alfa versijos buvo atlikta daug kitų papildymų ir patobulinimų, tačiau čia pateikiama trumpa svarbiausių pakeitimų apžvalga:

  • (dokumentacija buvo atnaujinta iki dabartinės būsenos)
  • ext/msql buvo pašalintas, o ext/ereg dabar pateiks E_DEPRECATED pranešimus
  • ext/mhash buvo pakeistas ext/hash, bet išlaikomas visas BC
  • PHP dabar naudoja cc kaip numatytąjį kompiliatorių, o ne gcc
  • Daugybė ext/pdo, ext/soap, srauto sluoksnio ir kitų klaidų pataisymų

Keletas po gaubtu pakeitimų taip pat reikalauja nuodugniai išbandyti esamas programas, siekiant užtikrinti, kad būtų sumažintos bet kokios atgalinio suderinamumo pertraukos.

Labai norėtume, kad kūrėjai, dizaineriai, vadybininkai ar bet kas kitas, besidomintis PHP programavimo kalba, prisijungtų prie mūsų, žadančiame būti nuostabaus renginio už labai priimtiną kainą:

  • Standartiniai bilietai: £60.00
  • Ankstyvas bilietas (iki lapkričio 8 d.): £50.00
  • Lengvieji bilietai: £35.00

* Patvirtinimas su jūsų įmonės laiško antrašte
**Su studento pažymėjimu. Yra ribotas sėdimų vietų skaičius

TAI KŪRIMO PERŽIŪRA – NENAUDOKITE GAMYBOS!

Šios alfa versijos leidimo tikslas yra paskatinti vartotojus ne tik aktyviai dalyvauti nustatant klaidas, bet ir užtikrinti, kad dokumentacijoje būtų pažymėtos visos naujos funkcijos ar būtinos atgalinio suderinamumo pertraukos. Praneškite apie visas išvadas arba .

Buvo daug kitų papildymų ir patobulinimų, tačiau čia pateikiama trumpa svarbiausių pakeitimų apžvalga:

  • (dokumentai gali būti pasenę)
  • Pridėta , (phar planuojama atlikti dar keletą alfa2 galvos) ir plėtinių
  • Pasirinktinai ciklinis šiukšlių surinkimas
  • Pasirenkamas MySQLnd pakeitimo tvarkyklės, skirtos libmysql, palaikymas
  • Windows senesnės nei Windows 2000 (Windows 98, NT4 ir kt.) nebepalaikomos ()
  • Naujos sintaksės funkcijos, pvz., , ribotas GOTO, trijų dalių trumpasis klavišas "?:"

Keletas po gaubtu pakeitimų taip pat reikalauja nuodugniai išbandyti esamas programas, siekiant užtikrinti, kad būtų sumažintos bet kokios atgalinio suderinamumo pertraukos. Tai ypač svarbu vartotojams, kuriems reikalingas nedokumentuotas Zend variklio kelių baitų palaikymas.

Mūsų geriausias pateikėjas Felixas De Vliegheris iš tikrųjų pats pateikė savo paskutinius pateikimus, nes, remiantis aukšta jo pateikimų kokybe, jam buvo suteiktos įsipareigojimo teisės į PHP saugyklą. Neišgirdome visų dalyvių atsiliepimų, tačiau raginame visus rašyti tinklaraštyje apie savo patirtį ir pateikti atsiliepimų, kaip patobulinti būsimus renginius.

Dabar geriau vėliau, nei niekada, štai 10 žadėto elePHPant loterijos, kurią remia Nexen, laimėtojų. Atkreipkite dėmesį, kad Feliksas prašė jo neįtraukti į loteriją, nes namuose jis jau gano nemažai dramblių.

  • Erikas Stewartas
  • Håvard Eide
  • Marcas Veldmanas
  • Mikelandželas van Damas
  • Reinas Veltas
  • Robas Youngas
  • Sami Greenbury
  • Sebastianas Deutschas
  • Sebastianas Schürmannas
  • Stefanas Koopmanšapas

Mes suteiksime Nexen laimėtojų el. pašto adresus, kad jie galėtų susitarti dėl elePHPants pristatymo. Taip pat tiems žmonėms, kuriems įdomu, galite toliau teikti testus . Šiek tiek ačiū visiems dalyviams ir TestFest organizatoriams! Be daugybės žmonių, padėjusių organizuoti vietinius renginius, diegti infrastruktūrą ir pateikti atsiliepimus, „TestFest“ akivaizdžiai nebūtų pavykę taip gerai, kaip buvo. Ateityje tikrai rengsime panašius renginius, remdamiesi didžiule TestFest 2008 sėkme.

PHP 5.2.6 saugumo patobulinimai ir pataisymai:

  • Ištaisytas galimas dėklo buferio perpildymas FastCGI SAPI, kurį nustatė Andrejus Nigmatulinas.
  • Ištaisytas sveikųjų skaičių perpildymas printf(), kurį nustatė Maksymilian Aciemowicz.
  • Ištaisyta saugos problema, aprašyta CVE-2008-0599, kurią nustatė Ryanas Permehas.
  • Ištaisytas saugiojo režimo apėjimas cURL, kurį nustatė Maksymilian Arciemowicz.
  • Tinkamai adresuokite neužbaigtus kelių baitų simbolius escapeshellcmd(), kuriuos nustatė Stefanas Esseris.
  • Atnaujintas PCRE paketas į 7.6 versiją

Kai reikia greitai parsisiųsti svetainės šaltinius iš serverio, net gana greitas SSH tunelis neužtikrina reikiamo greičio. Ir laukti reikia labai labai ilgai. Ir daugelis prieglobos paslaugų teikėjų nesuteikia šios prieigos, bet verčia jus tenkinti FTP, kuris yra daug kartų lėtesnis.

Asmeniškai sau esu įvardijusi išeitį. Nedidelis scenarijus įkeliamas į serverį ir paleidžiamas. Po kurio laiko gauname archyvą su visais šaltiniais. Ir vienas failas, net per senovinį FTP, atsisiunčiamas daug greičiau nei šimtas mažų.

Anksčiau šio tinklaraščio puslapiuose zipArchive biblioteka. Tačiau tada buvo kalbama apie archyvo išpakavimą.

Pirmiausia turime išsiaiškinti, ar serveris palaiko zipArchive. Ši populiari biblioteka yra įdiegta daugumoje prieglobos svetainių.

Biblioteka yra griežtai ribojama php ir serverio parametrų. Didžiulių duomenų bazių ir nuotraukų bankų archyvuoti negalima. Netgi senos geros 1C programos pagrindai apskaitai. Atrodytų, kad juose turėtų būti tik tekstiniai duomenys. Bet ne.

Patariu naudoti biblioteką tik archyvuojant palyginti mažas svetaines, kuriose yra daug mažų failų.

Patikrinkime, ar galima dirbti su biblioteka

If (!extension_loaded("zip")) ( grąžinti false; )

Jei viskas gerai, scenarijus bus vykdomas toliau.

Maža offtopic tokiems patikrinimams. Patikrinimai turėtų būti atliekami tokiu būdu, vengiant didelių struktūrų su įdėtais skliaustais. Tokiu būdu kodas bus išsamesnis ir lengviau derinamas. Palyginti

If(a==b)( if(c==d)( if(e==f)( echo "Visos sąlygos įvykdytos"; )else echo "e<>f"; )else echo "c<>d"; )else echo "a<>b;

ir šis kodas

If(a!=b) exit("a<>b); if(c!=d) exit("c<>d); if(e!=f) exit("e<>f); echo "Visos sąlygos įvykdytos";

Kodas yra gražesnis ir neperauga į didžiules įdėtas struktūras.

Atsiprašau, kad ne į temą, bet norėjau pasidalinti šiuo atradimu.

Dabar sukurkime objektą ir archyvą.

$zip = naujas ZIPArchyvas (); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) ( return false; )

kur $destination yra visas kelias į archyvą. Jei archyvas jau buvo sukurtas, failai bus pridėti prie jo.

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

kur $source yra visas kelias į mūsų kategoriją (kurią iš pradžių archyvavome), $failas yra visas kelias į dabartinį aplanką. Tai daroma taip, kad archyve būtų ne visi keliai, o tik santykiniai.

Failo pridėjimas veikia panašiai, tačiau pirmiausia turite jį perskaityti į eilutę.

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

Pabaigoje turite uždaryti archyvą.

Grąžinti $zip->close();

Nemanau, kad reikia aiškinti, kaip pereiti per visus aplanke esančius failus ir pakatalogius. Google, kažkas panašaus Rekursyvus aplankų perėjimas php

Šis variantas man tiko

Funkcija Zip($source, $destination)( if (!extension_loaded("zip") || !file_exists($source)) ( return false; ) $zip = new ZipArchive(); if (!$zip->open() $destination, ZIPARCHIVE::CREATE)) ( return false; ) $source = str_replace("\\", "/", realpath($source)); if (is_dir($source) === true)( $failai = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($failai kaip $failas)($failas = str_replace("\\", "/", $failas); // Ignoruoti "." ir ".." aplankai if(in_array(substr($failas, strrpos($failas, "/")+1), array(".", ".."))) tęsti; $failas = realpath($failas ); $failas = str_replace("\\", "/", $failas); if (yra_katalogas($failas) === true)( $zip->addEmptyDir(str_replace($source . "/", "") , $failas . "/")); )else if (is_failas($failas) === true)( $zip->addFromString(str_replace($source . "/", "", $failas), failas_get_contents($ failas)); ) ) )else if (yra_failas($source) === true)( $zip->addFromString(bazinis pavadinimas($šaltinis), failo_gauti_turinys($šaltinis)); ) return $zip->close(); )

Vakar forume manęs paklausė ZIP archyvų kūrimas PHP. Truputį pagalvojau ir supratau, kad ši tema bus įdomi daugeliui žmonių, nes ZIP archyvavimas PHP labai populiari tema. Ir šiame straipsnyje parodysiu pavyzdį, kaip sukurti ZIP archyvą naudojant PHP scenarijų.

Leiskite man iš karto pateikti pavyzdį ZIP archyvo kūrimas, o tada atidžiai pakomentuosiu:

$zip = naujas ZIPArchyvas (); //Sukurkite objektą darbui su ZIP archyvais
$zip->open("archive.zip", ZIPARCHIVE::CREATE); //Atidaryti (sukurti) archyvą archyvas.zip
$zip->addFile("index.php"); //Pridėkite failą index.php į archyvą
$zip->addFile("styles/style.css"); //Pridėkite failą styles/style.css prie archyvo
$zip->close(); //Baigti darbą su archyvu
?>

Vykdydami šį scenarijų pamatysite ZIP archyvas, kurios šaknyje bus failas index.php, taip pat bus sukurtas katalogas stiliai, kuriame bus failas stilius.css. Manau, kad visa tai aišku ir logiška. O dabar pakomentuosiu, ką su jumis padarėme:

  • Sukūrė objektą ZipArchyvas naudojant konstruktorių.
  • Sukurtas archyvas naudojant metodą atviras() objektas ZipArchyvas. Perdavėme archyvo pavadinimą ( archyvas.zip) ir konstanta ZIPARCHYVE::CREATE, kuris praneša, kad jei archyvo nėra, jį reikia sukurti.
  • Metodas Pridėti failą() prideda failus į archyvą. Pirmiausia pridėjome failą " index.php", kuris yra tame pačiame kataloge su scenarijumi. Toliau mes įtraukėme failą stilius.css, taip pat nurodant teisingą kelią iki jo scenarijaus atžvilgiu.
  • Metodas Uždaryti() baigia darbą su archyvu. Visada paleiskite jį, kad atlaisvintumėte kompiuterio išteklių ir išvengtumėte įvairių problemų, susijusių su šio scenarijaus ir kitų scenarijų, kuriems reikia prieigos prie šio archyvo, veikimu.

Šiuo paprastu būdu galite automatiškai sukurkite ZIP archyvus naudodami PHP. Kitame straipsnyje aptarsime su jumis, Kaip išskleisti zip archyvą per php.

Interneto archyvas siūlo daugiau 15,000,000 nemokamai parsisiųsti knygas ir tekstus. Taip pat yra kolekcija, kurią gali pasiskolinti visi, turintys nemokamą svetainės paskyrą.

Arba mūsų nešiojamąjį stalinį skaitytuvą taip pat galima įsigyti ir naudoti vietoje bibliotekose ir archyvuose. Norėdami daugiau sužinoti apie mūsų TT Scribe, apsilankykite.

Nuo 2005 m. Interneto archyvas bendradarbiauja ir kūrė skaitmenines kolekcijas su daugiau nei 1100 bibliotekų įstaigų ir kiti turinio tiekėjai. Partnerystės apima: , ir . Šios kolekcijos yra suskaitmenintos iš įvairių laikmenų, įskaitant: , ir daugybę įvairių . Daug prisidėjo partneriai Šiaurės Amerikoje (ir bibliotekos) ir , atstovaujantys daugiau nei 184 kalboms.


Interneto archyvas skatina mūsų pasaulinę bendruomenę prisidėti prie fizinių elementų, taip pat įkelti skaitmeninę medžiagą tiesiai į interneto archyvą. Jei turite skaitmeninių elementų, kuriuos norėtumėte įtraukti į interneto archyvą, naudokite naują elementą naudodami įkėlimo sąsają. Spustelėkite čia, kad pritaikytumėte konkrečią Creative Commons licenciją, kad praneštumėte, kaip medžiaga gali būti naudojama.

Dėl fizinių knygų ar daiktų dovanojimo kreipkitės info@svetainė


Nemokamai skaityti, atsisiųsti, spausdinti ir mėgautis. Kai kuriems taikomi masinio pakartotinio ir komercinio naudojimo apribojimai. Žr. knygos kolekciją arba rėmėją. Suteikdami beveik neribotą prieigą prie šių tekstų, tikimės paskatinti žmones, kurie anksčiau jų nenaudojo, plačiai naudoti tekstus naujuose kontekstuose.

Akivaizdu, kad šablonų kūrėjams lengviau naudoti standartines funkcijas ir „WordPress“ šablonų žymas, kad būtų rodomi standartiniai visų svetainės puslapių rodiniai, tačiau taip sukuriama vienoda išvaizda ir perėjimo į tuos pačius svetainės puslapius jausmas.

Iš karto parodysiu, ką mes gauname kaip rezultatą.

„WordPress“ archyvų tipas: kategorijų archyvas prieš pakeitimus
Skyrių archyvas su pašalintomis miniatiūromis ir nuoroda, kad gautumėte daugiau informacijos.

Svarbu! Kadangi ši užduotis išspręsta pakeitus šablono kodą, prieš darbą atliekame (duomenų bazė + svetainės failai). Be to, darome dvi darbinio šablono kopijas, vieną – redagavimui, antrą – netinkamo redagavimo atkūrimui.

„WordPress“ archyvų išvaizdos keitimas

Norėdami pakeisti „WordPress“ archyvų išvaizdą, turite rasti, tiksliau, nustatyti, kuris failas jūsų darbiniame šablone rodo archyvus. Daugumoje šablonų visi archyvai išvedami į vieną failą, kuris vadinamas (archive.php).

Kartoju, kad neprarastume svetainės, nenaudojame redaktoriaus svetainės administraciniame skydelyje, o redaguojame anksčiau padarytas šabloninių failų atsargines kopijas.

Teksto rengyklėje (pvz., Notepad++) atidarykite failą archive.php ir pradėkite redaguoti. Archyvo.php faile (failo pabaigoje) ieškome funkcijos, rodančios archyvo tinklaraštį:

Pavadinimas yra failo, kuris naudojamas archyvo tinklaraščiui išvesti, pavadinimas.

Pirmoji užduoties atlikimo idėja yra paprasta: turime pakeisti failo, kuris išveda archyvus (content.php), kodą, būtent, pašalinti iš jo keletą funkcijų ir taip pakeisti visų svetainės archyvų išvaizdą (kategorijas, autorius, datas ir kt.).

Bet kyla klausimas, jei pakeisime šablono failo kodą, po pirmojo šablono atnaujinimo jis grįš į ankstesnę būseną, mums to nereikia. Todėl mes neredaguosime turinio.php failo, o nukopijuosime ir sukursime savo failą kitu pavadinimu, pvz., content-cat.php ir jį redaguosime.

Faile ieškome funkcijos, rodančios miniatiūras. Miniatiūros funkcija bus viršuje. Pašaliname miniatiūros išvestį.

arbair pašalinkite eilutę su „Skaityti daugiau“, „šablono pavadinimas“.

Sukurtą ir redaguotą failą content-cat.php išsaugome ir įkeliame į svetainės katalogą darbinio šablono aplanke. Šis failas bus rodomas svetainės administravimo skydelyje, esančiame skirtuke Išvaizda → Redaktorius.

Pereikime prie antrojo žingsnio. Faile, iš kurio išvedami archyvai (archive.php), pakeiskite failo pavadinimo turinį į content-cat .

Išsaugome ir žiūrime į rezultatą. Jei kažkas negerai, sistema parodys klaidą, klaidos failą ir klaidos eilutę. Norėdami ištaisyti klaidą, grąžinkite išsaugotus atsarginių kopijų šablonų failus į savo vietą ir pakartokite viską dar kartą.

Patarimas. Jei norite daugiau sužinoti apie šablonų žymas ir standartines „WordPress“ funkcijas, atkreipkite dėmesį į šią svetainę: https://wp-kama.ru. Tai nėra reklama ar net nuoroda, ši svetainė yra aiškesnė nei oficiali WordPress svetainė šablonų ir funkcijų žymų skiltyje.

Plėtojant temą

Mano nuomone, pranešimų temą „WordPress“ svetainėse reikia tęsti. Kituose įrašuose kalbėsiu temomis: ir.

WordPress Codex

Paslėptas tekstas

funkcija_post_thumbnail

Funkcija

the_post_thumbnail

Tikslas

Funkcija_post_thumbnail išveda įrašo miniatiūros vaizdo html kodą, tuščią reikšmę, jei vaizdo nėra.

Taikymas

Ši šablono žyma, funkcija the_post_thumbnail, turi būti naudojama viduje

Naudojimas

the_post_thumbnail(string|masyvas $size = "post-thumbnail", string|masyvas $attr = "")

Šaltinis

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

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

Galimybės

$dydis (eilutė / masyvas)

Miniatiūros dydis, kurį reikia gauti. Tai gali būti eilutė su sąlyginiais dydžiais: miniatiūra, vidutinė, didelė, pilna arba dviejų elementų masyvas (vaizdo plotis ir aukštis): array(60, 60).

Numatytas: ‘post-thumbnail’, tai yra dydis, kurį dabartinei temai nustato funkcija set_post_thumbnail_size()

$attr (eilutė / masyvas)

Atributų masyvas, kurį reikia pridėti prie gautos html img žymos (alt yra alternatyvus pavadinimas).

Numatytas:

Pavyzdys

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