Optimalizálás 1 - Panel modul kiváltása page-oldalneve.tpl.php + CSS megoldással

szantog képe

Az itt tárgyalt némileg összetett problémára keresem a legjobb megoldást, immár a problémakör egy-egy elemére lebontva. Elképzeléseim szerint leírom az általam kivitelezhető legoptimálisabb megoldást, és nyugodtan le lehet üvölteni a hajamat a fejemről, ha hülyeség. :)
Eljött az idő, hogy a kattintgatós mesterségből válts a gondolkodó/tervező felé. by pp
Tehát miután a site-on szereplő oldalak jelentős része különböző views-al generált tartalmak megjelenítéséből, rendszerezéséből áll, ezért az ilyen struktúrájú oldalakhoz létrehozok egy-egy oldal típusú node-ot, hogy az alapvető funkciók meglegyenek (menü, jogosultság, cím, stb.)
Ezekből az oldalakból page.tpl.php-ben egyszerűen kiveszem a $content részt, mivel magára a node tartalmára, és az ahhoz kapcsolódó HTML kódra egyáltalán nincs szükségem.
Először arra gondoltam, hogy blokkonként fogom hozzáadni a szükséges nézeteket, és beállítom, hogy csak a szükséges oldalon jelenjen meg. Viszont ezen blokkok adminisztrációja elég nehézkes, lesz egy rakás kvázi "egyszer használatos" blokkom, ami megint nem tartok a leghatékonyabb megoldásnak.
Így a views_embed_view-vel közvetlenül a page-oldalneve.tpl.php-ba szeretném beszúrni az adott egy oldalon szereplő nézeteket, majd CSS-ben szépen elrendezgetem őket.
Már korábban is gondot okozott a nézetek egyedi azonosítóval történő ellátása. Ezt úgy oldottam meg, hogy a views-view.tpl.phpt kiegészítettem egy
 <div id"<?php print $css_name; ?>-<?php print $display_id; ?>" így (hacsak nem leszek olyan birka, hogy egy oldalon belül kétszer rakom be ugyanazt a nézetet/alnézetet) egyedi CSS ID-t kapunk.

Drupal verzió: 
Fórum: 
aboros képe

a views-view.tpl.php varázslást nem értem minek. elvileg minden megjelnítőd alapból kap egyedi azonosítót a nézet neve és a megjelenítő display_id -je alapján.

0
0

-
clear: both;

szantog képe

A nyers views-view.tpl.php:
<div class="view view-<?php print $css_name; ?> view-id-<?php print $name; ?> view-display-id-<?php print $display_id; ?> view-dom-id-<?php print $dom_id; ?>">

view-css_name - nem egyedi, mert az összes alnézetben ugyanígy jelenik meg
view-id-name - ez dettó
view-display-id-display_id - ez megint nem egyedi, mert block_1 az más nézeteimben is szerepelhet
view-dom-id-X - ez megint megegyezhet más nézetek osztályaival

Lehet, hogy az én CSS tudásom hiányos, de én nem tudtam célozni azonos szinten lévő osztályokat egyszerre, ezért találtam ki, hogy classként vagy id-ként benyomjam a css_name és display_id kombóját.

Konkrétan az egyik nézetem nyers views-view.tpl.php által létrehozott osztályai:
Egyik alnézet: view-cikkek-nezetei-slideshow view-id-cikkek_nezetei_slideshow view-display-id-panel_pane_1 view-dom-id-2
Másik alnézet: view view-cikkek-nezetei-slideshow view-id-cikkek_nezetei_slideshow view-display-id-default view-dom-id-3

Az én általam létrehozott class/id: cikkek-nezetei-slideshow-panel_pane_1; cikkek-nezetei-slideshow-default

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

de ezt most befoltozzuk szépen.. :)

szóval, egyik alnézeted:

<div class="view-cikkek-nezetei-slideshow view-id-cikkek_nezetei_slideshow view-display-id-panel_pane_1 view-dom-id-2">
..

csak ezt, pl így célzod:

.view-cikkek-nezetei-slideshow.view-display-id-panel_pane_1 {
color: red;
}

(figyeld meg, hogy a célzásban a két osztály között nincs szóköz!)
ez a kiválasztó csak olyan elemekre lesz érvényes, amik egyszerre view-cikkek-nezetei-slideshow és view-display-id-panel_pane_1 osztályúak is. ez pedig csak és kizárólag egyetlen megjelenítőre lesz igaz, mert a nézet neve egyedi kell legyen, a display_id pedig a nézeten belül megint csak egyedi, a kettő egyszerre mindig egyedi lesz.

ugyan ilyen elven pl:

div.node.node-type-blog.sticky {
border: 1px solid pink;
}

csak olyan divekre érvényes, amik .node és .node-type-blog és .sticky osztályúak egyszerre.

remélem érthető, amúgy ez egy nagyon hasznos célzási technika, majd meglátod.

0
0

-
clear: both;

szantog képe

figyeld meg, hogy a célzásban a két osztály között nincs szóköz!

Hogy én erre hogy nem jöttem rá! Igazából a drupalos "célzási technikát" úgy szedtem össze, hogy nézegettem a különböző modulok által használt CSS fileokat, de erre így konkrétan nem emlékszem.
Minden világos, köszi! :)

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

olyan van, hogy css, abban vannak a célzásnak szabályai és azok érvényesek akár drupal akár j....la, akár bármi. baromi sokáig én is ilyen kipróbálás alapú csst nyomtam, végülis elvoltam vele, de valahogy nem volt az igazi.
aztán kaptam csajomtól egy css mastery című könyvet, elolvastam, bumm. baromi hasznos, javaslom szerezd be, tele van szuper css trükkökkel, rendbetesz minden kapcsolódó elméleti dolgot (pl hogyan is működik a float valójában) és benne van még egy csomó ie bug oka és elhárításának módja is. (mindezek mégegszer ismétlem, teljesen függetlenek a drupaltól)

http://www.cssmastery.com/
amazonon épp giga leárazás van, utánad hajítják 22 dollárér. öteze, kimondottan megéri, ha egy munkaórát spórolsz a tudással ami benne van, már simán helyben vagy.

0
0

-
clear: both;

szantog képe

Nagyon jó, mindenképpen megnézem.
És az eddigi eredmények:
Paneles főoldal: 2788 oldalletöltés átlag 7,040.0ms
Panel nélkül: 80 oldalletöltés átlag 4788ms
Nem semmi javulás!
Azonkívül egész este túrtam a cache témát, ezt találtam a legmegfelelőbbnek: Authcache A minta kicsi, de újabb 30-40%-ot látok benne, úgyhogy talán elég lesz.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

Pasqualle képe

sajnos .class1.class2 selector IE6 alatt nem mukodik, es azert nem lehet talalni ilyet Drupalban

0
0
Lavjaman képe

IE 6 másképp gondolkodik a világról. Én szétszedném ezen probléma elkerülésére divre a dolgot....

0
0

*----*----*

$node ? 'alma' : 'bor'

*----*----*

szantog képe

Nálam IE 7 alatt is borult a dolog..
Ez a CSS:

.view-cikkek-nezetei-slideshow.view-display-id-block_1{
	width: 530px;
	float: left;}

Ennek ellenére a következő osztály is megkapja ugyanezt: view view-tartalom-teljes-arg-nid view-id-tartalom_teljes_arg_nid view-display-id-block_1 view-dom-id-3
A könyv még nem jött meg..

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.