Archívy Říjen 2018

rozhlas 19.10.2018

Autoklub Plochá dráha Kopřivnice Vás zve na 2. Fichtl day, který se uskuteční tuto sobotu 20. října v 9:30 hodin na letním stadionu v Kopřivnici. Plochá dráha dětí na kolech a jiných strojích se uskuteční ve 14:00 hodin. Bližší informace naleznete na webových stránkách klubu.

PHP počet pracovních dní v měsíci, svátky, velikonoce

Prostřednictvím této nehezky designované funkce zjistíme počet pracovních dní v daném měsíci nebo počet pracovních dní zbývajících do konce měsíce 🙂
Zohledňujeme státní svátky, velikonoce i velký pátek…

<?php 
echo workingDaysInThisMonth ( strtotime ( '2017-12-01' ) ); 

function workingDaysInThisMonth ( $date = false ) 
{ 
  if ( !$date ) { 
    $date = time (); 
  } 
  $holidays = [ 
     1 => [1 ],
     5 => [1, 5 ],
     7 => [5, 6 ],
     9 => [28 ],
     10 => [28 ],
     11 => [17 ],
     12 => [24, 25, 26 ]
 ];

 $easter = date ( 'd.m.Y', strtotime ( date ( 'Y-m-d', easter_date ( date ( 'Y', $date ) ) ) . ' +1 days' ) );
 $bigFriday = date ( 'd.m.Y', strtotime ( date ( 'Y-m-d', easter_date ( date ( 'Y', $date ) ) ) . ' previous friday' ) );
 $holidays[ date ( 'n', strtotime ( $easter ) ) ][] = ( int ) date ( 'j', strtotime ( $easter ) );
 $holidays[ date ( 'n', strtotime ( $bigFriday ) ) ][] = ( int ) date ( 'j', strtotime ( $bigFriday ) );
 for ( $m = 1; $m <= 12; $m++ ) {
  for ( $d = 1; $d <= date ( 't', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-01' ) ); $d++ ) {
   if ( date ( 'w', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-' . str_pad ( $d, 2, '0', STR_PAD_LEFT ) ) ) == 0 ) {
    $holidays[ date ( 'n', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-' . str_pad ( $d, 2, '0', STR_PAD_LEFT ) ) ) ][] = ( int ) date ( 'j', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-' . str_pad ( $d, 2, '0', STR_PAD_LEFT ) ) );
   }
   if ( date ( 'w', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-' . str_pad ( $d, 2, '0', STR_PAD_LEFT ) ) ) == 6 ) {
    $holidays[ date ( 'n', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-' . str_pad ( $d, 2, '0', STR_PAD_LEFT ) ) ) ][] = ( int ) date ( 'j', strtotime ( date ( 'Y', $date ) . '-' . str_pad ( $m, 2, '0', STR_PAD_LEFT ) . '-' . str_pad ( $d, 2, '0', STR_PAD_LEFT ) ) );
   }
  }
 }

 $days = 0;
 $tomorrow = date ( 'Y-m-d', strtotime ( '+1 day', $date ) );
 $today = date ( 'Y-m-d', $date );
 if ( date ( 'n', strtotime ( $tomorrow ) ) != date ( 'n', strtotime ( $today ) ) ) {
  return $days;
 }

 for ( $d = date ( 'j', strtotime ( $tomorrow ) ); $d <= date ( 't', strtotime ( $tomorrow ) ); $d++ ) {
  if ( !in_array ( $d, $holidays[ date ( 'n', strtotime ( $tomorrow ) ) ] ) ) {
   $days++;
  }
 }
 return $days;
}

Webové stránky www.gauss.cz

Moje realizace stránek prodejce elektronických komponent z oboru starších nebo těžko dostupných výrobních řad. Stránky v několika jazykových variantách jsou postavené na WordPress a obsahují katalog součástek vytvořený pomocí Custom post types. Katalog obsahuje přibližně 88 000 položek, i přes toto množství je listování katalogem nebo vyhledávání poměrně rychlé.

Jako obtížné se jeví takto vysoký objem položek katalogu dostat na dobré pozice v google.com, struktura html obsahuje klíčová slova s názvy komponent a je také doplněn příslušný soubor sitemap s odkazy na jednotlivé stránky katalogu. Soubor sitemap byl předán google.com prostřednictvím Nástrojů pro webmastery. Kompletní zaindexování zřejmě bude nějakou dobu trvat.

gauss-cz

Přechod e-shopu Smrtihlav.cz ze Zencart na Opencart

E-shop Smrtihlav.cz, provozovaný od roku 2005 v systému Zencart prošel přechodem na systém Opencart. Samotná konverze dat, včetně různých korekcí konverzního softwaru trvala asi 4 hodiny. Více než dvojnásobek času obnášelo překlopení šablony vzhledu, které se nakonec dostalo nového vzhledu. Výrobu šablony včetně vzhledu jsem provedl bez pomoci grafika, vzhled tedy není profesionální. Jestliže je požadován profi vzhled, potom zapojuji některého grafika, což znamená min. 6 000  Kč za výrobu samotné grafiky, a dále je nutno připočíst cenu implementace vzhledu do e-shopu. Obrázek v záhlaví pochází z Flickr.com, autor umožňuje komerční použití i modifikaci, v obrázku je tedy decentně ukryto i označení autora fotografie.

V převáděném e-shopu nejsou žádné „speciality“, jsou jen ukryty některé funkcionality, jako je např. Seznam přání, Slevové kupóny atd. Když tedy odmyslíme řadu různých modifikací prostřednictvím Override Engine, velmi užitečné je např. cachování seznamu kategorií včetně počtu produktů, náhodně vybírané produkty při vstupu do kategorie obsahující podkategorie apod. Při přechodu musíme také myslet na to, že ve vyhledávačích zůstávají indexované stránky pod původními adresami, které v Opencart vypadají jinak. Např.

http://www.smrtihlav.cz/kalhoty-bdu-potisk-camo-vz95-p-1456.html (Zencart)
http://www.smrtihlav.cz/camo-vz-95/kalhoty-bdu-potisk-camo-vz-95 (Opencart)

V Opencartu jsem tedy doplnil funkci, která umí starší odkazy přesměrovat na správné produkty v novém e-shopu.

Smrtihlav.cz Zencart

Smrtihlav.cz Zencart

Smrtihlav.cz Opencart

Smrtihlav.cz Opencart

Modifikace Opencart

Když běžný uživatel – obsluha administrační části poprvé vstoupí do administrace Opencart, potřebuje výpis zboží podle kategorií stejně jako v Zencart. Opencart však tuto možnost nemá. Potřebujeme tedy tuto funkcionalitu doprogramovat. Bohužel Opencart nemá takový systém pluginů jako např. WordPress, pro Opencart existuje modifikační systém vQmod, který pracuje na principu nahrazování částí původního PHP kódu. Nejprve je nutné najít v původním kódo požadovaný řádek nebo místo, kde potřebujeme implementovat novou funkcionalitu. Potom speciálním zápisem definujeme náhradu kódu prostřednictvím XML souboru – to je záležitost pro masochisty.

Naštěstí existuje Override Engine, kde jednoduše definujeme potomka existující PHP třídy a vložíme proceduru či funkci, která nahrazuje původní. Toto je pohodlné a efektivní. Zde je příklad provedené modifikace pro výpis produktů podle kategorií a řada dalších úprav, které umožní efektivnější správu produktů, rychlé úpravy cen, řazení do multistorů, nastavení filtrů apod.

modifikace-opencart

Přechod ze systému Zencart na Opencart

Je jistě zajímavá skutečnost, že doposud nemalé množství e-shopů udržuji v systému Zencart. Struktura zdrojového kódu je proti dnešním systémů doslova guláš a modifikace bývaly někdy ukrutné. Po předchozích testech Magento e-shopu jsem došel k systému Opencart. Jeho MVC struktura je velmi přehledná a za určitých okolností umožňuje rozsáhlé modifikace funkcí bez zásahu do originálního kódu – o tom někdy později.

Nastal tedy okamžik, kdy máme celkově tisíce položek v různých e-shopech na Zencartu a nebylo reálné toto ručně překlopit do e-shopu na jiné platformě. Po rozboru struktury databáze Opencart jsem vytvořil konverzní software, který převede kompletní obsah, tedy produkty, atributy, kategorie a samozřejmě i registrované zákazníky a jejich objednávky do databáze Opencart. Zákazníci se přihlašují původními údaji.

MySQL záloha ze vzdáleného serveru na lokální počítač automaticky

Počet spravovaných webů pomalu roste a pomalu není čas vše vkládat do referencí, měl bych doplnit alespoň instalované e-shopy (ano, stále v Zencart, Magento je složitý na low cost řešení). A protože v podstatě všechny weby, které jsem vyrobil používají MySQL databázi a různí útočníci z Brazílie nebo Číny se snaží weby nabourat, vyvstala otázka efektivního automatického zálohování databází. (Pokračování textu…)

Automatická aktualizace WordPress

V poslední době často vycházejí bezpečnostní opravy WordPress a samozřejmě také aktualizace různých pluginů a aktualizace obojího přes FTP klienta je nepohodlná. Jak tedy efektivně aktualizovat? (Pokračování textu…)

Prokopr – Portál rozvoje podnikání Kopřivnicka

Navštivte webové stránky Prokopr.cz

Hlavním účelem vzniku Centra podnikání a rozvoje tedy byla snaha, aby v kopřivnickém regionu existoval subjekt, který by poskytoval pomoc a podporu začínajícím i existujícím malým a středním podnikatelům a napomáhal tak rozvoji podnikání v regionu a tvorbě nových pracovních míst. Pracovníci společnosti jsou schopni poradit komukoliv, kdo má v úmyslu začít podnikat, ať už s výběrem vhodné právní formy, získáním živnostenského oprávnění a s dalšími povinnostmi a záležitostmi, které s podnikáním souvisí.

(Pokračování textu…)

WordPress – šablony kategorií s pluginem Idealien Category Enhancements

Na většině webů, které jsem postavil na WordPress jsem použil plugin Idealien Category Enhancements. Tento plugin umí nastavit jednu šablonu pro celou Rubriku i podrubriky, šablona se tedy dědí. Navíc je také možné nastavit některé podrubrice jinou šablonu, než má nadřazená rubrika. Uvedený plugin je potřebný při tvorbě webu, který má více sekcí s odlišným obsahem sidebarů. (Pokračování textu…)