Hirdetés
-
LOGOUT.hu
Ajánlott szakirodalmak a teljesség igénye nélkül (a lista még bővülhet):
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
"PHP filterrel a l(t('Home'), '<front>') NEM működik a blokkban, kipróbáltam, hiszen ott nem fér hozzá a szükséges változóhoz."
Én is kipróbáltam, és DE, MŰKÖDIK. Milyen "szükséges változóra" gondolsz? A '<front>' nem egy változó, hanem egy string...
Nézd meg az url() függvényt:
"The special string '<front>' generates a link to the site's base URL."Ez is működik PHP filterrel (ahogy az előző is):
echo l(t('Home'), variable_get('site_frontpage', 'node'));
Ez a 'node' címet adja, amennyiben nincs beállítva más a /admin/config/system/site-information oldalon.Sk8erPeter
-
Sk8erPeter
nagyúr
Legegyszerűbb példával (szebb lenne azért ez esetleg egy theme() függvénnyel, ott generálni ezt a képet, vagy ilyesmi) kiegészítettem a korábbi kódot:
$home_translated = t('Home');
$items[] = array(
'data' => l('<span><img src="http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/32x32/home.png" alt="'.$home_translated.'" title="'.$home_translated.'" /></span>', '<front>', array('html' => TRUE)),
'class' => array('test-block-front-page'),
'id' => array('test-block-front-page-image'),
);Ezt generálja:
A házikó természetesen egy link a címlapra.
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #151 üzenetére
A $variables-re gondoltam.
echo l(t('Home'), variable_get('site_frontpage', 'node'));
Csalsz , idáig <front>-ról beszéltünk. Nem tudtam, hogy van ez a variable_get(), ez mindenhol működik?(#152) Sk8erPeter
array('html' => TRUE)
Tényleg agyilag zokni vagyok, elkerülte a figyelmem, ráadásul most, hogy láttam, már emlékszem is rá, régebben használtam. No comment...Ezer kösz. Meg egy.
-
Sk8erPeter
nagyúr
Jaja, a variable_get() a core része, ez mindenhol elérhető, a includes/bootstrap.inc fájlban található függvény. Kukkants bele phpMyAdminnal az adatbázisba, és nézd meg a `variable` táblát, na ez a függvény onnan szedi ki az adatokat. A második paraméterrel default értéket lehet megadni neki, ezt fogja visszaadni a függvény, amennyiben nincs beállítva érték a variable táblában (pl. nézd meg a site_frontpage nevű értéket, ehhez tartozik egy bizonyos érték, ha beállítottad a /admin/config/system/site-information oldalon. Példa: variable_get('site_frontpage', 'node') - megnézi, van-e a variable táblában site_frontpage nevű változóhoz beállítva valami (itt serialized értékek találhatóak, ami unserialized lesz), ha még nincs, akkor visszaadja a 'node' stringet. (Itt egy globális $conf változóban tárolódnak a beállított értékek, korábban állítja be a Drupal.)
Még egy, amit érdemes ismerni, ha nagyon egyszerűen akarsz tárolni (pl. modullal) adatot, és ugyanilyen egyszerűen akarod kiszedni:
variable_set($name, $value);
Egyszerűen megadsz egy nevet és a hozzá tartozó értéket. De vigyázz, ezzel a core modulok által beállított értékeket is felül lehet bírálni.
Törlés pedig a variable_del($name) függvénnyel történik.
Tényleg egyszerű használni, ha modult fejlesztesz, akkor pl. ez beállítások tárolására a legegyszerűbb mód lehet. (Komplexebbhez már nyilván saját táblák kellenek.)"echo l(t('Home'), variable_get('site_frontpage', 'node'));
Csalsz , idáig <front>-ról beszéltünk."
Igen, de ezt csak alternatívaként említettem meg. Inkább használd a <front>-ot, én azt mondanám, az szerintem beszédesebb. Ez csak azért volt érdekes, hogy mutassak ms módszert is, mert ilyen módon más változókat is ki tudsz kotorászni, ha kell.===
Más: a PHP filter használatát meg kerüld. Eleinte, amikor időre kellett csinálnom dolgokat, és f*ngom nem volt még a hookok megfelelő használatáról, saját modulfejlesztésről, stb., akkor én is használtam kényszerből, de senkinek nem kívánom azt a szopást, amikor átnézi a régi tákolmányait, amit PHP filterrel kódolt, és aztán ültetheti át normálisan. Adatbázisban tárolni PHP-kódot? Fúj. Nekem nem nagyon mondták el ezeket (bár persze olykor kérdezgettem azért drupal.hu-n, drupal.stackexchange.com-on), csak szorgos utánaolvasás, kódkotorászás, beletanulás után jöttem rá, hogyan is kell normálisan használni a Drupalt, pedig mennyire más lett volna, ha van egy pörgős Drupal topic PH!-n akkor is... Brühühühühühűűűűűű, most felszakadtak a régi sebek, brühühühüűűűű!![ Szerkesztve ]
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #154 üzenetére
Ezek nagyon hasznos információk, remélem nem felejtem el, amire legközelebb kelleni fog.
Nagy szerencse nekem, hogy Te már kitapostad az utat. Lassan tényleg jár neked meghívás egy bambira.<front>, ez az, amit php filterrel sem tudsz használni egy blokkban, szerintem.
Szerk.:
pörgetem én a topikot, csak mindig egyirányú az áramlás
Így jártál...
Elhiszem, hogy ezek fájó pontok, elég sok időd és energiád mehetett rá.[ Szerkesztve ]
-
Sk8erPeter
nagyúr
"<front>, ez az, amit php filterrel sem tudsz használni egy blokkban, szerintem."
De szerintemek helyett miért nem próbálod ki végre?
Nem csak a levegőbe beszélek, kipróbáltam, mielőtt leírtam. Meg még a megfelelő függvényt is belinkeltem, a dokumentációból idézett résszel együtt, nem tudom, hogy győzzelek még meg - pl. úgy, hogy kipróbálod magad is.Jaja, nem baj az, pörgesd csak a topicot, legalább jár az agyunk.
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #156 üzenetére
Az volt az első. hogy kipróbáltam. Most ránézek újra, de ezek szerint valamit elbénáztam. Erre nyitva hagytam a lehetőséget, ezért írtam úgy: szerintem.
Szerk:
Szólj hozzá, most meg működik. Vajon mit cs@sztem el? Nem engedélyeztem a blokkot?[ Szerkesztve ]
-
Siriusb
veterán
válasz Sk8erPeter #158 üzenetére
Inkább segíts ebben:
Van egy custom type content-em, nevezzük my_content-type-nak.
Azt szeretném, ha a title
<div class="title" id="page-title">EZ A TITLE</div>
lecserélődne valami másra, a node egyik mezejére, pl. field_ezlenneatitle értékére.A template.php-ben ezt hoztam létre:
function MY_THEME_preprocess_page(&$variables, $hook) {
if (array_key_exists('node', $variables)) {
if ($variables['node']->type == 'my_custom_type') {
$variables['title'] = t('something');
}
}
}Sajnos arra nem jöttem rá, hogy lehetne az adott content type-hoz fűzni, pl. .
function MY_THEME_preprocess_page_my_custom_type(&$variables, $hook)Mindenesetre eddig működik, de csak statikus értékkel. Ki tudom valahogy nyerni az egyik field-et a node-ból?
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Szerintem ne szívj vele, használd ezt a modult:
Automatic NodetitlesHasználhatsz vele tokeneket a meglévő fieldekre, példa: [link].
Elég jól működik.De szólj, ha valamiért ez nem felel meg, és akkor tovább dumálunk az ügyről.
Ajánlott függvény: drupal_set_title().Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #160 üzenetére
Nem mondod, hogy ilyen modul is van?!
A Zen témával ez
<!--[if IE 8]><html class="lt-ie9" lang="en" dir="ltr"><![endif]-->
hogy működik?
Elvileg elég lenne a css-ben .lt-ie9-cel kezdenem, és ha IE8-cal nézem, ez a stíéus fog érvényesülni, nem? Legalábbis kellene. -
Sk8erPeter
nagyúr
Jaja, jól sejted.
Amúgy megtévesztő az lt-ie9 class, mert azt sejteti, hogy az összes IE-re vonatkozik, ami IE9-nél kisebb verziószámú, pedig csak IE8-ra vonatkozik.
Ennek tehát inkább valahogy így lenne értelme:
<!--[if lt IE 9]>
<html class="lt-ie9" lang="en" dir="ltr">
<![endif]-->Ha extra dolgokat akarsz detektálni (pl. CSS3-as, HTML5-ös dolgok támogatása, stb.), és megfelel, hogy JavaScript-támogatás kell hozzá, akkor tudom ajánlani a Modernizr-t, ellátja mindenféle class-okkal a <html> taget, attól függően, mit támogat a böngésző, és természetesen van modul is hozzá. Én ezt többek közt a CSS3-as transition támogatottságának detektálására használtam, a CSS-fájlba az ennek megfelelő class-okat raktam, példa:
.csstransitions
#navigation ul.links li a:hover
{
...
}Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #162 üzenetére
Igazából úgy látom, az még az IE6-hoz is jó:
<!--[if lte IE 6]><html class="lt-ie9 lt-ie8 lt-ie7" lang="en" dir="ltr"><![endif]-->
Lásd class.nem akarok semmi extrát, csak pl. pozíciót javítani, de még egy egyszerű betűszínt sem változtat meg. Valamit biztos bénázok, de nem tudom, itt mit lehet elrontani.
-
Siriusb
veterán
válasz Sk8erPeter #164 üzenetére
Ha a normál property-t változtatom, változik az IE-ben is.
#block-home-link-home-link-block h2{
display: none;
}
.lt-ie8 #block-home-link-home-link-block,
.lt-ie9 #block-home-link-home-link-block h2{
display: block;
}
IE8-ban és 7-ben a h2-t mutatni kellene. Ám inkább nem csinál semmit.
Ha kiszedem a display:none-t, mutatja IE-ben is. -
Siriusb
veterán
válasz Sk8erPeter #166 üzenetére
Nem
Idáig a google sem mondott semmi használhatót. Lehet előveszem a conditional stylesheet modult, megpróbálom azzal.
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Hogy néz ki nálad konkrétan az erre vonatkozó kód?
Ilyen, mint itt? Lásd View source.Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #168 üzenetére
A linked az conditional stylesheet.
Nálam:
<!DOCTYPE html>
<!--[if IEMobile 7]><html class="iem7" lang="en" dir="ltr"><![endif]-->
<!--[if lte IE 6]><html class="lt-ie9 lt-ie8 lt-ie7" lang="en" dir="ltr"><![endif]-->
<!--[if (IE 7)&(!IEMobile)]><html class="lt-ie9 lt-ie8" lang="en" dir="ltr"><![endif]-->
<!--[if IE 8]><html class="lt-ie9" lang="en" dir="ltr"><![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)]><!--><html lang="en" dir="ltr"ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
Amikor szórakoztam a hook-okkal, az egyik függvényben benne maradt a <pre> és ezt a DOCTYPE előtt írta ki. Kiszedtem, most már jó.
Bocs a hülyeségemért. -
Sk8erPeter
nagyúr
"A linked az conditional stylesheet."
Ebben nincs semmi stylesheet, szóval csak az első fele igaz, hogy conditional.Ettől még ehhez a modulhoz nincs köze.
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #170 üzenetére
Erre gondoltam:
<!--[if lt IE 7]>
<link type="text/css" rel="stylesheet" media="all" href="/themes/garland/fix-ie.css" /> <![endif]-->Akkor ennek mi a helyes neve, csak hogy helyére tegyük.
-
Sk8erPeter
nagyúr
ja, hát ez már lehet conditional stylesheet, csak az nem, amit az imént "idéztél" a kódból.
Szóval arra gondoltál, de mást mutattál?Amúgy azért nem rossz, hogy ketten viszünk egy topicot. A cél a topic kiemeltté nyilváníttatása azáltal, hogy elképesztő aktív munkát folytatunk itt.
[ Szerkesztve ]
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #172 üzenetére
Ne zavarj már össze. Mittomén
Amúgy azért nem rossz, hogy ketten viszünk egy topicot.
Na most képzeld el, milyen lenne, ha csak magamban beszélgetnék, mint 2 héttel ezelőtt néhány napon keresztül.
Lehet a nekromanta mellé megkaphatjuk a drupal_hangya titulust is. -
Siriusb
veterán
Ki mit tud erről (drupal 7):
FIELD SETTINGS
There is data for this field in the database. The field settings can no longer be changed.
These settings apply to the MY CUSTOM TYPE field everywhere it is used. These settings impact the way that data is stored in the database and cannot be changed once data has been created.Mondjuk van 3 db engedélyezett értékem. Feltételezem azzal még nincs gond, ha beadok egy negyedik lista elemet. Ám mi történik olyankor, ha egy létezőt akarok megváltoztatni. Mivel ez key | value párosban van tárolva, ha a value értékét módosítom, baj lesz belőle? A key-hez értelemszerűen nem nyúl az ember.
[ Szerkesztve ]
-
Siriusb
veterán
Az URL aliases / Patterns-ből megint eltűnt minden, egy sor sincs, hogy definiálhassak bármit is.
-
Sk8erPeter
nagyúr
Nem lesz "baj" belőle. Más érték fog tartozni hozzá, az már más kérdés, hogy nem engedi, mert vannak már feltöltött értékek.
(#175) Siriusb: ezt most nem vágom, hogy tűnt el neked minden?
(#176) Siriusb : mármint mit oldott meg, visszakerültek a mezők, vagy mi?==========
(#177) SecMan : na, micsoda megkönnyebbülés, hogy azért mást is érdekel a Drupal!
Nem kicsit hajtépős hibát én is tudok neked mutatni, ezt nem tudom, láttad-e még korábban, mondjuk ez NEM user error, hanem valami érthetetlen baromság:
[link]
Azóta sem jöttem rá az okára. A kódot kénytelen voltam helyettesíteni az Ubercart core modulban, a Conditional Actions-nél úgy, hogy működjön.Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #179 üzenetére
Nem lesz "baj" belőle. Más érték fog tartozni hozzá, az már más kérdés, hogy nem engedi, mert vannak már feltöltött értékek.
Ki kellene nyomozni egyszer, hogy működik. Hátha adatbázisban átírás segít. Elég ciki lenne, ha valami javítás miatt új mezőt kellene létrehozni és átmásolni a már létező node-okból az értékeket. És persze ez tönkrevág minden kézzel írt php kódot, views-t, mivel más nevet kap a field.Pathauto:
A Variables 2.1 verziójával újra láthatóak a Patterns fülön lévő tartalom típusok, mármint az azokra vonatkozó beállítási lehetőségek. -
SecMan
csendes tag
@Sk8erPeter: Persze, hogy érdekel, csak PHP-hoz nem értek... de ez már egyéni szoc problem
Az én hajtépős hibám röviden, mert részletesen nemtom mikor fogom tudni ledokumentálni:
CSS tömörítés bekapcsolásával jött elő.
Adott Drupal 7 rendszer Zen sminkkel (mert azt szeressük).
Adott 6 egyedi css fájl, amiben az egyedi dolgokat írtam meg (pl. főoldal egy view ami teljsen eltér a többitől, stb)
CSS tömörítés előtt minden működött (leszámítva IE-t a sok CSS fájl miatt).
CSS tömörítés után 1-1 dolog nem stimmelt.
Mint kiderült, 2 fájlból (nem mind a 6ból) az első deklarációk bár bekerülnek a tömörített CSS fájlba, de a böngészők (FF, Chrome, IE....) nem alkalmazzák!Ha ezt az első deklarációt átmásoltam egy másik CSS fájlba, akkor használták....
Ha kitöröltem (és a korábbi második deklaráció lett az első), akkor az elsőt megint nem alkalmazták...
Egyelőre olyan gyönyörű megoldást találtam, hogy beírtam egy
.blabla{} -t az elejére, és így "jó"..... -
Sk8erPeter
nagyúr
Milyen típusú, amit változtatni akarsz?
Én most létrehoztam egy List (integer) mezőt (Select list widgettel), és tudtam változtatni utólag is a kulcsokat is meg az értékeket is.
Tudsz mellékelni screenshotot?"A Variables 2.1 verziójával újra láthatóak a Patterns fülön lévő tartalom típusok, mármint az azokra vonatkozó beállítási lehetőségek."
Én nem értem nálad ezeket a parákat, nálam Variable 7.x-1.1 van fent, és minden szükséges pattern látszik: http://i.imgur.com/GYEdB.png
Nem jöttél még rá, mitől tűnnek el úgy hirtelen ezek a mezők, meg fordulnak elő ilyen furcsa problémák?Ja, még nem is gratuláltam, hogy már egyedi avatarod van, szóval grat.
Sk8erPeter
-
Sk8erPeter
nagyúr
"CSS tömörítés előtt minden működött (leszámítva IE-t a sok CSS fájl miatt)."
IE-parára Drupal 6-hoz (!) ez nagyon hasznos modul:
IE CSS Optimizer
Itt bizonyos modulok CSS-fájljait kiszedheted a tömörítésből. Bár én azt hiányolom, hogy nem lehet többet is kijelölni, mindig csak egyre lehet korlátozni.
Azt most nem vágom, D7-hez most konkrétan miért is nem készült ilyen modul, mert attól még a tömörítésnél néha jól jönne, ha csak egyes fájlokat ki lehetne szedni."tömörített CSS fájlba, de a böngészők (FF, Chrome, IE....) nem alkalmazzák!
Ha ezt az első deklarációt átmásoltam egy másik CSS fájlba, akkor használták....
Ha kitöröltem (és a korábbi második deklaráció lett az első), akkor az elsőt megint nem alkalmazták...
Egyelőre olyan gyönyörű megoldást találtam, hogy beírtam egy
.blabla{} -t az elejére, és így "jó"....."
Ez viszont nem teljesen jött át... kéne látni egy kódot, hogy ez miért is van így, és hogy is kell pontosan elképzelni. Esetleg majd ezt ki tudod még picit fejteni, vagy példát mutatni, vagy ilyesmi?Sk8erPeter
-
SecMan
csendes tag
válasz Sk8erPeter #183 üzenetére
IE-parára Drupal 6-hoz (!) ez nagyon hasznos modul:
nem az IE volt a para tudom hogy az ennyit tud, drupal css tömörítése jó nekiEz viszont nem teljesen jött át... kéne látni egy kódot, hogy ez miért is van így, és hogy is kell pontosan elképzelni. Esetleg majd ezt ki tudod még picit fejteni, vagy példát mutatni, vagy ilyesmi?
Persze, természetesen, szeretnék is, mert mint mondtam nem egyszerű eset
Szóval fogok. -
Siriusb
veterán
válasz Sk8erPeter #182 üzenetére
Jelen esetben egy list_text-ről van szó.
Én nem próbáltam meg elmenteni a változtatást a figyelmeztetés hatására, csak elkezdtem rákeresni a neten és ott olvastam, hogy nem ajánlatos változtatni. Belenéztem az adatbázisokba, a key|value BLOB-ként van tárolva, gondolom a helyes karakterkódolás miatt, viszont mindegyik node-ban felhasznált value külön-külön le van tárolva, emiatt gyanítom, hogy a változás felül sem írná a régebben létrehozott node-okat.
Nem volt még kedvem teszt adatbázissal kikísérletezni, de úgy látom, elkerülhetetlen lesz.Patterns:
nekem itt annyi látszik, hogy Save configuration, oszt csókolom. Illetve látszott, mert most már megjavult.
Annyit tudok róla, hogy elég megfoghatatlan hiba, kinek ez, kinek az a modul okozza a jelenséget, és jó workaround sem nagyon volt. Nálam mindenesetre a 2.1-es Variables gyógyírt hozott. Remélem ez így is marad.Szerk:
hosszú ideje húzodott már az avatár dolog, kb fél évre feledésbe is merült, de Ndruu segítségével röpke 2-3 hét alatt megvalósult. Egy barátom is elkezdett egy próbát készíteni, de nem rajongtak érte.
Szóval kösz.[ Szerkesztve ]
-
Siriusb
veterán
válasz Sk8erPeter #160 üzenetére
Dumáljunk tovább az ügyről, kicsit kiegészítve.
Elöljáróban annyit, hogy valószínűleg külön modult kellene pont egy ilyen esetre írni, de én a template.php-ben akarom megcsinálni. Kicsit ismerkedni szeretnék itt a hook használattal.
Tehát, az a cél, hogy a weboldalon (a HTML-ben sem) ne a node title jelenjen meg, hanem egy általam tetszőlegesen előállított érték. Igazából 2 érték.
A template.php-ben
a MY_THEME_preprocess_page() függvénnyel átírom a böngésző fülén és a node title-ként megjelenő értékeket:
if (array_key_exists('node', $variables)) {
if ($variables['node']->type == 'sajat_tipus') {
drupal_set_title($variables['node']->field_sajat['und'][0]['safe_value'], $output = CHECK_PLAIN);
$variables['title'] = t('ez legyen az uj, statikus ertek');
}
}Ennél "szebb" megoldásra nem tudtam rájönni.
A <head> esetén:
function MY_THEME_html_head_alter(&$head_elements) {
$node = menu_get_object();
if ($node->nid) {
if ($node->type == 'sajat_tipus') {
$head_elements['rdf_node_title']['#attributes']['content'] = $node->field_sajat['und'][0]['safe_value'];
}
}
}Amit nem tudtam kiókumlálni több óra alatt sem: a language switcher blokkban a nyelvnél link title-ként megjelenik a node title. Na ezt nem tudom, hogy lehetne felülírni.
-
Siriusb
veterán
Meguntam és favágó módon oldottam meg:
function MY_THEME_preprocess_block(&$variables, $hook) {
if ($variables['block_html_id'] == 'block-locale-language'){
//removing node title value from language switcher url title
$first_pos = 0;
for ($i=0;$i<2;$i++){
$first_pos = strpos($variables['content'],'class="language-link',$first_pos);
$first_pos = strpos($variables['content'],'title',$first_pos);
$last_pos = strpos($variables['content'],'"',$first_pos+8);
$variables['content'] = substr_replace($variables['content'],'',$first_pos,$last_pos-$first_pos+1);
}
}
}
Nem szép, de hatékony -
Sk8erPeter
nagyúr
phpMyAdmin + BLOB:
Configuring phpmyadmin to show Drupal 7 BLOB data# Show 1000 rows instead of 30 by default
$cfg['MaxRows'] = 1000;
# Show BLOB data as a string not hex.
$cfg['DisplayBinaryAsHex'] = FALSE;
# Show BLOB data in row detail pages.
$cfg['ProtectBinary'] = FALSE;
# Show BLOB data on table browse pages. Hack to hardcode all requests.
$_REQUEST['display_blob'] = TRUE;Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #188 üzenetére
Ez tényleg működik. Kösz.
-
Sk8erPeter
nagyúr
$last_pos = strpos($variables['content'],'"',$first_pos+8);
Te most itt miket művelsz? Őszintén szólva nem volt nagyon kedvem megérteni a kódot, mert számomra eléggé homály. Mi az a +8? Miért pont 8?Egyébként nálad hogy van benne a node title a language switcher block-ban?
Nálam sem annál, sem a Language switcher dropdown blokkjában nincs benne: [link].(#185) Siriusb : ja, ehhez még annyit, hogy ezek szerint a Pathauto elég érdekes dolgokat művelhet, ha egy másik modul csak úgy tönkrevághatja... bár elvileg a Pathauto is biztosít hookokat ahhoz, hogy URL aliast létre tudjon hozni a modult, amennyiben a Pathauto modul megvan, lehet, hogy az vágja tönkre ilyenkor a dolgot, hogy valamelyik modul fosul implementálja az adott hookot. Bár akkor az meg a Pathauto modul hibája, ha ezt az esetet nem kezeli le.
Egyébként nem tudom, mi a véleményetek erről, de én azt tapasztaltam, hogy Drupalnál már a core-ban is sok esetben a hibakezelés eléggé csapnivaló (a modulok fejlesztői meg sokszor átveszik ezt a mentalitást). Miért kell nekem PHP-s warningokon keresztül értesülnöm róla, hogy valami modul hülyeséget csinált?
Van egy olyan érzésem, hogy a Drupal core-ban is esetleges teljesítménybeli okokból nem akartak mindenféle hibát lekezelni, de néha indokolatlannak érzem, hogy megspórolták - szerintem az sem normális, hogy nagyobb hiba elkövetésénél fehér képernyőt észlelsz, aztán debuggoljál, vazze...(#184) SecMan : várom.
[ Szerkesztve ]
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #190 üzenetére
title=" után keresem a következő macskakörmöt, hogy megtaláljam, hol a vége a title="ez nem kell" -nek.
Egyébként nálad hogy van benne a node title a language switcher block-ban?
Nem tudom mennyire lényeges: a node-t (custom content type) views segítségével állítom elő. Ha a nyelvek neveire viszem az egérmutatót, pl. English, szépen kibuborékozza a node-title-t, mig a zászlónál az English szavat írja kiBár akkor az meg a Pathauto modul hibája, ha ezt az esetet nem kezeli le.
Valami olyat olvastam a fejlesztőjétől, hogy írják meg rendesen a többiek a moduljukat, ő nem foglalkozik vele. Ilyesmire emlékszem.Igen, nem lenne rossz valahogy szebben megoldani a hibakezelést.
Le vagyok nyűgözve, a tarhelypark.hu-n van script a drupal 7.14 (!) telepítésére. Fél perc az egész, létrehoz adatbázist, usert.
-
Sk8erPeter
nagyúr
Most megint megnéztem a kódodat, és hát azt kell, hogy mondjam, hogy a "nem szép" kifejezés elég finom volt ennek jellemzésére....
Mi történik, ha változtatsz a címeken, tartalmakon, akkor borul az egész?
Basszus, most értettem meg, mire gondolsz a language switchernél... tehát a lényeg, hogy a title-be kerül bele a tartalom, mind a blokknál, mind pedig a node aljánál lévő nyelvváltoztató linkeknél. Akkor ezt mondd!
Na mindjárt utánanézek, hogy lehet ezt szépen megoldani.
De azért közben gyorsan megkérdezem: miért akarsz ezzel feltétlenül szívni, miért nem jó neked a linkelt modul, amivel patternek segítségével éred el ugyanezt?Page title megváltoztatására hátha hasznát veszed: [link]. Bár erre is vannak modulok, felesleges vele szopni.
"Valami olyat olvastam a fejlesztőjétől, hogy írják meg rendesen a többiek a moduljukat, ő nem foglalkozik vele. Ilyesmire emlékszem."
De utálom az ilyen fejlesztőket... biztos rendkívül nehéz lenne írni egy ellenőrző függvényt, hogy minden kulcs a helyén van-e."Le vagyok nyűgözve, a tarhelypark.hu-n van script a drupal 7.14 (!) telepítésére. Fél perc az egész, létrehoz adatbázist, usert."
Jaja, a Tárhelypark CPanelje tényleg faszán működik, ez engem is meglepett, hogy tele van funkciókkal, ami szép és jó, de ugye úgy álltam hozzá, hogy tuti a fele nem működik, és pedig de... ami link ott van, az tényleg működik! Legalább így kéne hozzáállnia a dolgokhoz minden szolgáltatónak.[ Szerkesztve ]
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #192 üzenetére
Azért nem jó az a modul, mert nem azt akarom, hogy helyettem, mint a pathauto, generáljon egy értéket, amivel felülírja a node - ot.
A node title úgymond belső használatra (azonosításra van), viszont nem kéne publikus legyen, mert nem értelmezhető a látogatók számára.
Ha változik a tartalom, amiből a dinamikusan előállított title keletkezik, az úgy helyes, hiszen a node - ban található mezőből állítom elő (kivéve egy helyen, ahol konstans), azaz nem borul az egész, hanem úgy működik, ahogy szeretném. -
Sk8erPeter
nagyúr
"A node title úgymond belső használatra (azonosításra van), viszont nem kéne publikus legyen, mert nem értelmezhető a látogatók számára."
Nem értem. Miért lenne publikus? Az Automatic Nodetitles segítségével a content type szerkesztésénél beállíthatsz egy mintát, ami alapján generálódik a cím, amihez fieldeket is felhasználhatsz, lásd ezt: [link].
Akár teljesen elrejtheted a "Title" mezőt, és beállíthatod, hogy az milyen minta alapján generálódjon (pl. épp a másik mezőből!).
Ennek a szerkesztéséhez meg csak annak van joga, akinek a content type-ot is van joga szerkeszteni, tehát mezei júzer ezt egyáltalán nem látja!
A cím tehát így is automatikusan generálódik, ebből a felhasználó ebből semmit nem lát.
Ez miért nem jó?"Ha változik a tartalom, amiből a dinamikusan előállított title keletkezik, az úgy helyes, hiszen a node - ban található mezőből állítom elő (kivéve egy helyen, ahol konstans), azaz nem borul az egész, hanem úgy működik, ahogy szeretném."
Igen, és pont ezt, amit most leírtál, meg lehet csinálni a már említett Automatic Nodetitles modul segítségével.Mindenesetre találtam egy megoldást a language switcher block title mezőjének megváltoztatására, gányolás nélkül, mindjárt leírom azt is, csak előbb készítek screenshotokat, hogy érthetőbb legyen.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #194 üzenetére
Alábbiakban leírom, hogyan változtattam meg a Language switcher block linkjeinek "title" attribútumát.
Két fontos info:
- az én theme-em neve zenTest (Zen theme subtheme-je), ezt az elnevezést fogom használni a továbbiakban, ez cserélendő a saját theme-etek nevére
- korábban megváltoztattam a node címét egy modullal, a hook_node_view() implementálásáért felelős függvényben.1.) Először megnéztem a language switcher block-ot Theme Developerrel (must-have): [link]. Ahogy a képen látható, a title attribútum tényleg nem változott a nyelvi linkeknél, pedig a címet már megváltoztattam korábban a modullal, ahogy fentebb említettem (látszik is a "Test field's value" rész a címben, az azután lévő "original:" után lévő rész az eredeti cím!!).
Ha a nyelvi link fölé viszem az egeret, még mindig a régi cím jelenik meg: [link].
2.) Megnéztem a "Candidate function names"-nél felajánlott nevet: "links__locale_block" - tehát kell nekem majd egy theme_links__locale_block() függvény.
3.) Megkerestem a theme_links() függvényt a hivatalos Drupal-oldalon. Ezt úgy, ahogy van, bemásoltam a template.php fájlomba, majd a függvény nevét theme_links-ről átneveztem zenTest_links-re, mert nálam zenTest az aktív theme neve.
4.) Létrehoztam a zenTest_links__locale_block függvényt (úgy tűnik, nem is kell a sima theme_links__locale_block!), majd beletettem ezt:/**
* @see zenTest_links()
*
* @param array $variables
* @return string
*/
function zenTest_links__locale_block($variables) {
$node = menu_get_object();
if ($node->nid) {
if ($node->type == 'test_multilingual_type') {
$myTestFieldValue = $node->field_title_for_test['und'][0]['value'];
foreach ($variables['links'] as $langcode => $langLinksArray) {
$variables['links'][$langcode]['attributes']['title'] = t('!myTestFieldValue (original: !originalTitle)', array(
'!myTestFieldValue' => $myTestFieldValue,
'!originalTitle' => $langLinksArray['attributes']['title'],
)
);
}
}
}
return zenTest_links($variables);
}5.) Létrehoztam a zenTest_theme() függvényt:
/**
* Implements hook_theme()
*
* @return array
*/
function zenTest_theme() {
return array(
'links__locale_block' => array(
'variables' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
),
);
}6.) Empty cache (enélkül nem megy!), majd próba.
A változtatás után: [link].
A komplett kód tehát:
http://pastebin.com/iLJcmX3KSk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #195 üzenetére
Ja, egyébként ha az aktuálisan beállított title kell, akkor ezzel tudod lekérni:
htmlspecialchars(menu_get_active_title());A check_plain azért nem jó, mert az a sima aposztrófot is átalakítja '-re, ez pedig a title-ben is így jelenik meg, ha föléviszed az aposztrófot.
Fontos megjegyzés az előző hsz.-hez, hogy ettől még a fordítást meg kell oldani.
Esetleg a foreach-en belüli részt át lehetne alakítani így:$options = array('langcode'=>$langcode);
$variables['links'][$langcode]['attributes']['title'] = t('!myTestFieldValue (original: !originalTitle)', array(
'!myTestFieldValue' => $myTestFieldValue,
'!originalTitle' => $langLinksArray['attributes']['title'],
),
$options
);Így már benne van a langcode is a t() alkalmazásánál, bár ettől még mindig megoldandó probléma lesz szerintem a fordítás. Bár ha valami egyedi cuccot akarsz generálni a cím mögé, ami mindegyik nyelvnél azonos, akkor ez nem probléma, de ha minden nyelv adott custom mezőjéhez más-más érték tartozik, akkor ez továbbra is megoldandó probléma.
Amennyiben ez a helyzet, akkor már megint visszatérnék az Automatic Nodetitles-hez, meg amúgy is az lenne a javasolt megoldás, mert ez adatbázisszinten változtatja a node-ok címét, miután legenerálta az adott pattern alapján, nem pedig csupán a megjelenítéskor alakítgatja át a címet.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #196 üzenetére
A lényeg az utolsó bekezdésből: ha az Automatic Nodetitles-t használod, és adatbázisszinten generáltatod le a címet, akkor nem kell ez az egész bohóckodás, mert akkor a language switcher block is a helyes címet fogja megkapni.
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #194 üzenetére
Nos, nézzük a listát, ahol látható, hogy a node title eredetileg a "második" értékkel bír:
[link]Node:
[link]Miután alkalmazom a pathauto modult: Automatically generate the title and hide the title field, eltűnik az általam megadott title, helyére a generált érték kerül AutoNodeTitle-kettes:
[link]Tehát, nem tudom megőrizni a manuálisan megadott title-t, amit ÉN láthatnék a content list - ben, de amit nem látnának a látogatók, hiszen számukra egy külön előállított title lenne (mindenhol, minden HTML elemben, hiszen a teljességre törekszünk).
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
Hmm, már értem. Most hirtelen nem jut eszembe ellenérv.
Viszont kipróbálhatnál erre is egy modult, ezt: Node Title.
Ezt még nem próbáltam, de elvileg ez is csak megjelenítéskor változtat a címen:
"The difference with this module is mainly in functionality. Automatic Nodetitles hides the actual title field from the node creation form and let you configure a default title that will be stored as the actual node title in the database. This module does not change the actual title of the node, it just lets you modify the display of a node title when you view it."Szerk.:
Egyébként azt el tudod esetleg mondani, mi az alkalmazási terület, ami miatt ez szükséges, amit csinálsz? Csak hogy jobban értsem.
Elmondok egy saját példát, ahol szükségem volt az Automatic Nodetitles-re: júzerek feltölthetik Youtube-videók linkjeit, én pedig nem akarom, hogy a címet manuálisan adják meg, hanem egy PHP pattern segítségével (igen, sajnos itt még használom a PHP filtert, itt még nem alkalmaztam hookot) kiszedem Youtube-ról a videó ott tárolt címét, majd ezt adom meg a node címének. Tehát a cím automatikusan generálódik a Youtube-os cím alapján.
Nálad mi az alkalmazás módja?
Csakis egyszer adható meg a node-nak cím? Utána azt már nem is lehet változtatni többé?
Ha jól értem, egyszer megvan a node title, ezt a felhasználó nem látja, az csak belső használatra kell, ők egy mező tartalmát látják csak. De a mező tartalmát ők adják meg? Azt tudják módosítani?
Azért kérdezem megint, mert a kerülő megoldást keresem: tehát pl. hogy nem elég-e, ha épp az általad látott cím tárolódik mezőértékként, csak az admin-oldalakon kell kiszedni a megfelelő címet, és akkor kisebb szívás, tehát a felhasználók a "rendes" node title-t látják.[ Szerkesztve ]
Sk8erPeter
-
Siriusb
veterán
válasz Sk8erPeter #199 üzenetére
Hmm, már értem. Most hirtelen nem jut eszembe ellenérv.
Végre én nyertemJó lenne a modul - a leírás alapján -, csak nincs hozzá 7-es verzió. Szerintem túl sok a változás drupal 6 és 7 közt, hogy én át tudjam hekkelni, de azért majd vetek rá egy pillantást.
Egyébként néztem már a többi hozzászólásaidat, csak nem jutottam el a kipróbáláshoz. Próbáltam használni a theme developer-ből kinyert függvény neveket, de a 2 db alulvonás (is)kicsit megkavart. És azt derítettem ki még, hogy theme() függvényt illik inkább használni. Az a baj, hogy az utánaolvasással is elmegy rengeteg idő. Pedig már megszokhattam volna.
Új hozzászólás Aktív témák
Hirdetés
- E-book olvasók
- Asszociációs játék. :)
- Milyen videókártyát?
- Apple notebookok
- Okos Otthon / Smart Home
- Világ Ninjái és Kódfejtői, egyesüljetek!
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Projektor topic
- Realme 8 - az igazi nyolcas
- Digitális Állampolgárság Program DÁP
- További aktív témák...
- HP EliteBook 845 G8 Tartós Fémházas Laptop 14" -60% Ryzen 5 Pro 5650U 6mag 16/512 FHD IPS Matt LTE
- HP EliteBook 845 G7 Fémházas Laptop 14" -45%Ryzen 5 PRO 4650U 16/512 FHD IPS SURE VIEW
- HP Elitebook 840 G8 i5 1145G7 / 32GB / 512GB / hibátlan!
- Nethome Plus, klíma wifi modul
- LG OLED55C12LA 2 ÉV GYÁRI GARANCIA
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest