Illyés Edit képe

Az ilyeneket speciális szolgáltatóknak kell kiszolgálnia

Igen, szerintem is ebben kellene gondolkodnia a Szakdolgozónak. Még lehet, hogy üzletileg is életképes lenne egy ilyen önkormányzatokra specializálódott Bryght-szerű szolgáltató.

0
0
Illyés Edit képe

Illyés Edit képe

Aries alighanem arra gondolt, hogy a node-ok megjelenítését a node.tpl.php sablon segítségével ajánlott végezni, az ugyanis pont erre van kitalálva...;)

Miért akarnád mondjuk egy admin oldalon megvizsgálni, hogy van-e az (éppen nem létező) $node-ban csatolt fájl?

0
0
Illyés Edit képe

Az állandó elemek egyike egy, a képernyő jobb oldalán megjelenő terület, ami minden oldalon jelen van, de bizonyos esetekben kell, hogy tartalmazza a node-hoz csatolt képeket.

Gondolom, csak node oldalakon kell, hogy a csatolt képek megjelenjenek. Nekem ez logikailag egy blokk a jobb oszlopban, aminek a megjelenítését a block.tpl.php-ben szabályozom.

Egyelőre számomra továbbra sem világos, ez most hogy függ össze a kérdésemmel.

Nagyon könnyű a tpl.php fájlokban kódolási hibát, biztonsági rést hagyni. Érdemes mindig arra gondolni, hogy a template fájlok lényegében HTML fájlok, amelyekben PHP változókat íratunk ki – és nem PHP fájlok, amelyekbe itt-ott bedobunk egy kis HTML-t.

Rossz gyakorlat:

<?php
foreach($node->files as $file)
     {
        $imagePath = $file->filepath;
        $imageTitle = $file->description;
       if($imagePath != "") {
          print '<div class="image-attach-body"><img src="'.base_path().'/'.$imagePath.'" alt="" title="'.$imageTitle.'"  class="image image-thumbnail "/></div>';
       }
     }  
?>

Helyes gyakorlat:

<div class="image-attach-body">
<img src="<?php print $base_path; ?>/<?php print $imagepath; ?>" alt="" title="<?php print $imagetitle; ?>"  class="image image-thumbnail "/>
</div>

...ahol az $imagepath, $imagetitle változókat a template.php-n keresztül adod át át a tpl.php fájlnak. Tehát template fájlban nem programozunk, csak változókat íratunk ki, aztán örülünk, hogy minden biztonságos, szépen működik, tiszta, száraz érzés...:)

0
0
Illyés Edit képe

Az admin/settings/error-reporting oldalon megadhatsz saját 403-as oldalt, ami lehet a /user is. Login után szerintem magától visszavisz az előző címre, de ezt le kell csekkolni. Ha nem, akkor a login formot beteszed egy node-ba, megbuherálod (drupal_goto()), és beállítod 403-asként.

0
0
Illyés Edit képe

legrosszabb esetben a template.php-ban kell ezt a tartalmat előállítanom

A template.php azért van, hogy ott programozzunk. Például ott deklarálok saját változókat és töltöm fel őket értékekkel, aztán átadom őket a template fájlok számára (a tpl.php nevű fájlok a sminkmappában), ahol ki tudom őket íratni HTML címkék közé. Ez nem "legrosszabb eset", hanem így van a rendszer kitalálva.

template.php:

<?php
function  _phptemplate_variables($hook, $vars) {
   switch($hook) {
     case 'sajatsablon' :
        $vars['egyikvaltozo'] = 'izé';
        $vars['masikvaltozo'] = 'valami';
        break;
   }
   return $vars;
}
?>

sajatsablon.tpl.php:

<h1><?php print $egyikvaltozo; ?></h1>
<p><?php print $masikvaltozo; ?></p>

HTML végeredmény:

<h1>izé</h1>
<p>valami</p>

Ha nem tudom a kívánt változókat a template.php segítségével átadni a template fájloknak – mert mondjuk az az érték, amivel a változómat feltölteném a $node objektumban van, ami nem érhető el a template.php-ből – akkor nem a tpl.php fájlokat kezdem el összekuszálni, hanem modult írok a feladatra.

Nem értjük, miért nem megy az általad megadott PHP kód, és el lehet kezdeni debuggolni, de szerintem gyorsabban el lehet jutni a működő megoldáshoz, ha szabályosan használjuk a Drupal template-ező rendszerét.

a "Helyes gyakorlat" alatti rész továbbra is csak egy kép megjelenítésére alkalmas...

A template fájlok többször meghívhatók. Például a node.tpl.php, block.tpl.php is annyiszor fog meghívódni, ahány node/blokk van az oldalon.

Készítesz egy kis modult, ami lekéri az aktuális node-hoz csatolt képeket, végigmegy rajtuk egy ciklussal, theme_image függvény segítségével elkészíti a HTML kimenetet, amit végül betesz egy blokkba. A blokkot pedig beteszed a jobb oszlop régiódba.

A theme_image függvényt a template.php-ben, a blokk megjelenést a block.tpl.php-ben (vagy ennek valamelyik alváltozatában) kedvedre alakíthatod. Mindkettő pont annyiszor fog meghívódni, ahányszor szükséged van rá – és ha betartod az elnevezési konvenciókat, akkor teljesen magától.

0
0
Illyés Edit képe

Tudtok-e olyan kiegészítő modulról, amelyel megoldható az, hogy a viewban (node listában) bepipált (kiválasztott) node-okon egyetlen kattintással tudja a felhasználó átállítani a feldolgozttságot nem feldolgozotról, feldolgozás alattira például. Tehát csoportosan megváltoztatni a kijelölt node-ok kategóriáját?

Az /admin/content/node oldalon van egy ilyen jellegű interfész, onnan tudsz kódot/ötleteket lopni egy saját modul számára.

Frissítés: Lásd Thamas fenti linkjét (Views Bulk Operations) – pontosan ezt csinálja:

As an example, the module comes with a re-implementation of the Content admin page. To access it, just go to the URL admin/content/node2.

0
0
Illyés Edit képe

csak ftp-n keresztül egy könyvtárba és kézi importálás, ezt nem akarom a felhasználókra bízni :-)

A mass upload nem azt jelenti, hogy ftp-n keresztül töltenek fel? Ha nem ftp, akkor hogyan szeretnéd?

Egyébként galériára a legrugalmasabb megoldás a CCK + Imagefield + Imagecache.

0
0
Illyés Edit képe

A Drupal 6-ban végre lehetővé vállt, hogy mindenféle PHP smink tudás nélkül, csupán CSS sminkeket készíthessünk a Drupal alap HTML kódjára építve.

Erre eddig is volt lehetőség, bármelyik meglévő smink CSS fájljainak módosításával. A CSS designereket az riasztja el – és a profi themereket az idegesíti –, hogy nem kapnak szabad kezet a CSS struktúra kialakításakor. Mindenkinek megvan a kedvenc módszere arra, hogy hogyan rétegezze egymásra a stíluslapokat úgy, hogy a kód egyszerűen fejleszthető és karbantartható legyen:

  1. browser-reset.css (böngésző alapbeállítások lenullázása)
  2. layout.css
  3. typography.css
  4. colors.css
  5. ... stb.

Én a következő módszert használom:

  1. browser-reset.css
  2. basic.css (általános stílusok HTML elemekre – p, a, blockquote, fieldset, stb.)
  3. tpl.css (stílusok a .tpl.php fájlokban szereplő HTML elemekre – időnként tpl.php fájlonként szétbontva, hogy könnyebben átlátható legyen, főleg CCK-Views sminkelése esetén)
  4. drupal.css (CMS funkciókhoz – admin interfész – szükséges stílusok)
  5. sminkneve.css (a maradék, azaz egyéni blokkok és az összes alsóbb szintű, specifikus stílus)

Ezzel szemben a Drupal rákényszerít arra, hogy modulok szerint szervezzük a stíluslapokat:

  1. system.css
  2. aggregator.css
  3. book.css
  4. ... stb.

Első ránézésre van benne logika, csak aki napi 8 órában CSS-szel foglalkozik, az tudja, hogy egy ilyen módon szervezett CSS megírása és karbantartása dupla munkát jelent.

Az egyetlen ésszerű munkamódszer az, hogy első körben lenullázzuk a böngészőket, utána pedig valamilyen logika szerint az általánostól (p, a, blockquote) haladunk a specifikus (#wrapper #container .sidebar .block p) felé.

Az pedig, hogy ki milyen logika szerint szeret dolgozni, egyénileg eltérő. A lényeg, hogy a fenti, általános -> specifikus irányba menjen, akkor 5 perc alatt kiigazodom egy másik tervező fájljaiban.

Ha jól értem, a Drupal 6-ban annyival lesz jobb a helyzet a mostaninál, hogy például a Drupal által adott system.css-t lecserélhetem a sajátomra, nem kell a felülírni. Ez egy félmegoldás, én biztos nem fogom használni. Maradok a régi jól bevált gányolásnál, és a page.tpl.php-ben kikapcsolom az összes beépített stíluslapot.

Az egyébként nagyszerű, hogy a template fájlok (.tpl.php) nagyobb figyelmet kapnak és könnyebben kezelhetővé válnak.

Illyés Edit képe

Szerintem nem írja tele

Tényleg nem írja. :) Régebben, talán még a 4.7-es, 4.6-os időkben volt olyan, hogy ha nem találta a style.css-t, akkor hagyott egy hibaüzenetet a logban.

Akkor ez így egy teljesen korrekt megoldásnak tűnik – mindenesetre sokkal szebb, mint láncfűrésszel hadonászni a page.tpl.php-ben. Köszi az infót. :)