Illyés Edit képe

Az időjárás részleg CCK+Views alapú. A szerkesztőség kézzel viszi fel az adatokat, gondolom a szlovák meteorológiai szolgálattól vásárolják az információt.

A valutaárfolyamokra saját modul készült, annak idején még én írtam és a Szlovák Nemzeti Bank XML formátumú közleményeit dolgozta fel. Közben Szlovákia bevezette az eurót, és úgy tudom, a kollégák átírták a modult úgy, hogy az Európai Központi Bank szerveréről szedje le az adatokat.

Egyébként érdemes a forráskódba belenézni, abból többnyire meg lehet állapítani, hogy milyen modul generálja a kimenetet.

Illyés Edit képe

Nem csak nem javasolt, de szerintem nem is lehet. A legtöbb kiegészítő modulnál a legújabb 5-ös kiadásról lehet lépni az aktuális 6-osra, verzióugrás egyáltalán nem támogatott és teljesen bizonytalan kimenetelű.

Illyés Edit képe

Akkor érdemes lesz átugrani Pozsonyba, Hojtsy Gábor előadására.

Az alapcsomagban és a kiegészítő modulokban is rendszeresen találnak biztonsági réseket, pedig – legalábbis az alaprendszert – nem kispályás játékosok írják. Saját fejlesztésű modulnál, sminknél, amit rajtad kívül más nem is lát, még könnyebben becsúszik a hiba. Szerénység és némi paranoia a megfelelő hozzáállás a biztonsági kérdésekhez, a kérdezőnél ezek úgy látom megvannak. :)

0
0
Illyés Edit képe

$_GET-ből kiszedett értékek validálásáról ne feledkezzünk meg!

Ha nem akarod az URL-t „elcsúfítani”, akkor saját modulban:

<?php
function MYMODULE_views_pre_render(&$view) {
  $myviews = array(
    // nézetek neve, ahol meg akarod jeleníteni a taxonómia leírást
    'myview',
  );
  if (in_array($view->name, $myviews)) {
    $terms = array_keys($view->display['default']->display_options['filters']['tid']['value']);
    $term = taxonomy_get_term($terms[0]);
    $description = filter_xss_admin($term->description);
    $view->display_handler->set_option('header', $description);
  }
}
?>
0
0
Illyés Edit képe

Készítesz egy nézetet, ami létrehoz egy blokkot, ami termékeket listáz. Az argumentumnál pedig beállítod a termékkód mezőt, aztán Provide default argument > PHP kód, és azzal átadod a nézetnek a termékkódot – amit, ha jól látom, akár URL-ből ki tudsz halászni, ott van minden termék URL végén.

<?php
$product_id = explode('/', $_GET['q']);
$product_id = $product_id[6];
$product_id = explode('-', $product_id);
array_pop($product_id);
return $product_id = implode('-', $product_id);
?>

Vagy valami hasonló. Még igazgatni kell, hogy ne dobáljon warningokat, ha nem a várt URL-t kapja, továbbá validálni (vagy a $product_id elemeit (int)-tel semlegesíteni).

0
0
Illyés Edit képe

Csak halkan mondom, ha nem szabványos az argumentum, akkor neked kell PHP kóddal validátort írni.

0
0
Illyés Edit képe

Nem értem a kérdést. A „divat” cikk az egy node, és eltűnik a content-je, ha kiteszed rá a kapcsolódó termékek Views blokkot?

0
0
Illyés Edit képe

a views validálni fogja az argumentumot, ha kell még azt is validálja, hogy a megfelelő szótárban létezike e a szám amit kapott a custom phptól.

Ha megmondod neki, hogy validáljon. Az kimaradt a bemásolt nézetből, azért szóltam.

ez a fenti modul mit változtat amúgy az urlen? mert azt nem látom. azt látom, hogy a view headerbe teszi a descriptiont, de az meg nem pakolható sehova, ott van és kész. ellenben egy blokkot könnyen tehetsz bárhova.

Egy általános megoldást adtam arra az esetre, ha nem tudja/akarja az URL query-ből venni az értéket. Ha az URL-ed http://example.com/furgeroka, akkor csak a $view-ből lehet a tid értéket kiszedni.

0
0
Illyés Edit képe

De mire kell ez a link neked? Miért nem jó a Drupal alapértelmezett nyelvváltója? (Van nyelvváltó blokk is, meg minden node oldalon a linkek között is.)

0
0
Illyés Edit képe

Magam sem értem egyébként, miért nem biztonságos a basic

A basic azt nézi, hogy megvan-e az argumentum, és szükség esetén, hogy numerikus-e.

<?php
 /**
   * Provide a basic argument validation.
   *
   * This can be overridden for more complex types; the basic
   * validator only checks to see if the argument is not NULL
   * or is numeric if the definition says it's numeric.
   */
  function validate_argument_basic($arg) {
    if (!isset($arg) || $arg === '') {
      return FALSE;
    }
 
    if (isset($this->definition['numeric']) && !isset($this->options['break_phrase']) && !is_numeric($arg)) {
      return FALSE;
    }
 
    return TRUE;
  }
?>

Egy tid argumentumnál alapesetben nem lehet probléma, de simán össze lehet kattintgatni olyan nézeteket, ami biztonsági kockázatot jelent a webhely számára (pl. tipikus probléma, hogy megkerülik a hozzáférés-korlátozásokat, lekérhetővé tesznek olyasmit, amit nem kellene illetékteleneknek látnia).

Az alapszabály az, hogy mindig a lehető legszigorúbb validálást kell alkalmazni a lehető legkorábban. Ha tudjuk, hogy az argumentumnak numerikusnak kell lennie, akkor használjuk a numerikus validálást, és már az első körben dobjuk vissza az argumentumot, ha nem megy át. Ha tudjuk, hogy az argumentumnak numerikusnak kell lennie és a Fürgerókák szótárban lévő kategóriák azonosítói között kell lennie, akkor arra kell validálni, stb. Főleg akkor, ha a Views erre kényelmes kattintós megoldásokat kínál. ;)

vagy hogy miért/mitől változna meg az URL a fenti megoldás alapján

Természetesen nem változik. Arra az esetre írtam, ha az URL-jeid nem úgy néznek ki, hogy http://example.com/valami?tid=1234 hanem úgy, hogy http://example.com/furgeroka

0
0