pátek 29. dubna 2011

PHP APC (PHP proxy)

PHP proxy APC je takové zařízení, které cachuje provoz PHP stránek a v případě opětovného vyžádání téže stránky tak vrátí uživateli výsledek mnohem a mnohem rychleji než kdyby to probíhalo klasickou cestou (zpracováním kódu PHP, dotazem do databáze, atd.).

V Debianu se instaluje takto

aptitude install php-apc

Poté je potřeba restartovat server Apache

/etc/init.d/apache2 restart

Tím je instalace hotová a vše začíná ihned fungovat. O tom jak to funguje se dozvíte rozbalením souboru /usr/share/doc/php-apc/apc.php.gz a jeho přesunutím někam kde lze pohodlně spouštět.

Pokud budete chtít měnit některá nastavení, podívejte se do souboru /etc/php5/apache2/conf.d/apc.ini a pročtěte si dokumentaci. Je s tím trochu potíž a i když lákavě vypadadají především direktivy apc.shm_segments a apc.shm_size nemusí vždy vše fungovat tak jak má.

apc.shm_size udává velikost sdílené operační paměti (cachované paměti systému) a standardně je v Debianu 30MB (je to dáno nastavením (/proc/sys/kernel/shmmax).

apc.shm_segments udává počet segmentů (částí) o výše uvedené velikosti, standardně je jen 1. Osobně mi změna tohoto parametru nefungovala a naopak apc.shm_size fungovalo v rozporu s dokumentací. V souboru /etc/php5/apache2/conf.d/apc.ini jsem nechal následující:

extension=apc.so
apc.shm_size=64

A tím nastavil velikost sdílené paměti oproti všem očekáváním na 64MB.

Formuláře v Drupalu

Na formuláře v Drupalu se používá modul Webform. Tento modul standardně zobrazuje u vytvořeného formuláře informace o autorovi a datu vytvoření formuláře a další.
Skrytí těchto informací není v Drupalu 7 na první pohled snadné, ale můžete si pomoci např. úpravou souboru css/webform.css (ten najdete v adresáři s modulem webform). Zde přidejte řádek:

.submitted-info {
        display:none;
}

Používáte-li cache, nezapomeňte ji vymazat.

středa 13. dubna 2011

OpenCart a čeština wysiwyg editoru

Opencart používá wysiwyg editor ckeditor. Protože ten standardně přepisuje české symboly na HTML entity, je potřeba do souboru admin/view/javascript/ckeditor/config.js přidat řádek

config.entities = false;

Dál už to bude fungovat tak jak má.

pátek 8. dubna 2011

Jak na Marinelli a aktivní parent menu

Téma Marinelli v Drupalu standardně nezobrazuje jako aktivní rodičovské menu určitého podmenu. To se dá při zapnutém Mega-Drop Down menu zapnout takto:

Do souboru template.php přidejte:

function menu_tree_full($menu_name = 'navigation') {
  $tree = array();
  if (!isset($menu_output[$menu_name])) {
    $tree = menu_find_active_trail(menu_tree_all_data($menu_name));
  }
  return $tree;
}

/**
* Wrapper function
*/
function menu_find_active_trail(&$menu_tree) {
  $item = menu_get_item();
  _menu_find_active_trail($menu_tree, $item);
  return $menu_tree;
}
/**
* Recursive function to find the active menu and the active trail in the given tree.
*/
function _menu_find_active_trail(&$menu_tree, $item) {
  foreach($menu_tree as &$menu_item) {
    $link = &$menu_item['link'];
    if ($link['href']==$item['href']) { // Found the exact location in the tree
      $link['active'] = TRUE;
      $link['in_active_trail'] = TRUE;
      return true;
    } else {
      if ($menu_item['below']) {
        $result = _menu_find_active_trail($menu_item['below'], $item);
        $link['in_active_trail'] = $result;
        if ($result)
        {
          $link['active'] = TRUE;
          $link['in_active_trail'] = TRUE;
          return true;
        }
      }
    }
  }
  return false;
}

A v souboru theme/theme.inc upravte okolo řádku 102-105


  // primary links markup
  if (theme_get_setting('menu_type') == 2) { // use mega menu
    $vars['mainmenu'] = theme('mega_menu', array('menu' => menu_tree_all_data(theme_get_setting('menu_element'))));
  }

na


  // primary links markup
  if (theme_get_setting('menu_type') == 2) { // use mega menu
    $vars['mainmenu'] = theme('mega_menu', array('menu' => menu_tree_full(theme_get_setting('menu_element'))));
  }

Konečně v témže souboru okolo řádku 129 přidejte


      if ($value['link']['in_active_trail']) {
        $options['attributes']['class'] = array('active');
      }

Více informací najdete zde nebo v denním tisku. 

sobota 2. dubna 2011

Správná URL adresa v Moodle 2

Moodle 2 nově kontroluje URL adresu přes kterou uživatel přistupuje k instalaci Moodle. Abyste se vyhnuli následující otravné hlášce:

Incorrect access detected, this server may be accessed only through "http://www.server.cz" address, sorry.
Please notify server administrator.

Stačí upravit v souboru config.php tento řádek:

$CFG->wwwroot   = 'http://'.$_SERVER['SERVER_NAME'];

Tím se nastaví adresa serveru vždy na tu správnou hodnotu ať už k němu přistupujete s www. nebo bez něj. Možná by také bylo dobré nastavit přepis URL adres přímo na serveru, ale ve většině případů to bude zbytečnost.

pátek 1. dubna 2011

Jak na vlastní CSS styly v Moodle

Soubor s vlastním CSS stylem umístěte do adresáře style vašeho aktivního (aktuálního) tématu. Aby se soubor začal používat, musíte to nastavit v souboru config.php v adresáři s tématem.

$THEME->sheets = array(
    'core',
    'pagelayout',
    'menu',
    'vlastni'
);

kde slovo vlastni znamena jméno souboru vlastni.css s přidaným stylem.

Aby se změna vůbec projevila a protože to takto nic neudělá, musíte v nabídce Správa stránek - Vzhled - Motivy - Nastavení motivu zapnout volbu Režim úprav grafického motivu. Tím budete moci naživo sledovat prováděné změny.

Po dokončení provedených změn se doporučuje výše uvedené zaškrtávací tlačítko opět zapnout, a tím snížit zátěž serveru.