Egyedi karbantartás alatt oldal - CSS probléma

mpety képe

Üdv!

Készítettem egy alsminket, a Garland sminkhez, mert módosítani akartam benne pár dolgot. Eddig rendben is ment minden, aztán úgy gondoltam, hogy ez alapján a leírás alapján: http://drupal.hu/tippek/karbantartasoldal, készítek egy egyedi karbantartás alatt oldalt.
Itt kezdődtek a gondok:

Fórum: 
Drupal verzió: 

Theme settings.php ben szövegmező

balays képe

Sziasztok!

Van egy saját fejlesztésű smink, aminek adnék pár beállítási lehetőséget is. Az egyik egy szövegdoboz a smink beállító oldalán, aminek tartalma megjelenik az oldal egy régiójában. Eddig működik is.

Fórum: 
Drupal verzió: 
Taxonomy upgrade extras: 
eaposztrof képe

koszonom, sikerult szepen osszeraknom (de meg van egy apro kerdesem alabb kiemelve):

lartehoztam egy "links" nevu content-et.

hozzaadtam egy "Category" nevu taxonomy kategoriat, Multiple hierarchiaval, amibe feltoltottem a fokategoriakat es azok alkategoriait.

Title field label: Your Site's Name
Body field label: Your Site's Description
Default options: all unchecked

hozzaadtam az alabbi CCK field-eket:

"Information" cimu group, ebbe pakoltam a statikus szoveget.
"Your Site's Link" cimmel, Link > Text Fields for Title and URL (Link 5.x-2.1)
"Reciprocal Link Url" cimmel, Link > Text Fields for Title and URL
"Your Name" cimmel, Text field
"Your Email" cimmel, E-Mail field

majd a Content Templates modullal felulirom a teaser-t:

<a href="<?php print $node->field_your_sites_url_ie_httpwww[0]['url'] ?>" target="_blank">
<?php print $node->title ?></a>
<?php print $node->content['body']['#value'] ?>


mivel a node Unpublished-kent erkezik meg, miutan ellenorizte az admin, set as Published, es kesz.

a Site menu modullal kilistazom. itt meg kellett egy annyi modositast eszkozolnom, hogy a modules/sitemenu/sitemenu.module-fileban atirtam a "site map" cimsort "partner's sites"-re es a

    if ($term->depth < $tree[$m+1]->depth) {
      $output .= "<li class=\"expanded\">". $link ."\n";
    }

sort
    if ($term->depth < $tree[$m+1]->depth) {
      $output .= "<li class=\"expanded\">". $term->name.$count ."\n";
    }

sorra, ugyanis ha valaki a fokategoriahoz ad hozza, azt nem lehet kilistazni, csak az alkategoriaban szereploket.
itt jon az elso kerdess:

hogyan lehet letiltani h ne lehessen fokategoriat hozzarendelni a node-hoz, csak alkategoriakat?

ezutan kapok egy szep hierarchiat, ha klikkelek a kategoriara, kilistazza a node-ok teaser-jet.

itt jon be a masik problema, mivel a teaser tartalmazza a linket es annak leirasat, nekem nincs szuksegem a $node->title-ra a teaserben ha $node->type=='links', valakinek tipje hogy hogy tudom kitakaritani? sehol nem talalom.

see u on the otherside!

0
0

42

Phoere képe

Sziasztok,

Az itteni instrukciók alapján készített form tökéletesen működik 5.2 PHP-n. Most költöztetem az odalt egy 5.3-as verziójú PHP-ra és ott az alábbi hibaüzenet jelenik meg:
Strict warning: Only variables should be passed by reference eval() függvényben (modules/php/php.module(80) : eval()'d code 3 sor).

A 3. sor pedig ez (tehát maga a function urlap_menu() ):

  1. function urlap_menu() {
  2. $items['urlap/form'] = array(
  3. 'title' => 'Test form',
  4. 'page callback' => 'drupal_get_form',
  5. 'page arguments' => array('urlap_my_form'),
  6. 'access callback' => TRUE,
  7. 'type' => MENU_CALLBACK,
  8. );
  9. $items['urlap/result'] = array(
  10. 'title' => 'Test result',
  11. 'page callback' => 'urlap_result',
  12. 'access callback' => TRUE,
  13. 'type' => MENU_CALLBACK,
  14. );
  15. return $items;
  16. }

Tudom, hogy az 5.3-as php verzió okozza, de mi a megoldás?

Előre is köszönöm!

0
0

Csökönyi Ferenc

Illyés Edit képe

Ha megnézed a bluemarine mappában a page.tpl.php fájlt, a következőt találod benne:

<div id="primary"><?php print theme('links', $primary_links) ?></div>

Azaz a $primary_links változó kiírásához meghívja a theme() függvényt, amit egyébként az /includes/theme.inc fájlban találsz, ami meghívja az ugyanebben a fájlban található theme_links() függvényt:

function theme_links($links, $delimiter = ' | ') {
  if (!is_array($links)) {
    return '';
  }
  return implode($delimiter, $links);
}

Amint látható, a theme_links() alapesetben a ' | ' karaktert használja elválasztó jelként. Ha ezt szeretnéd megváltoztatni (felülírni), akkor a sminkmappában (nálad ez a bluemarine) létre kell hoznod egy template.php nevű fájlt, és benne a következő függvényt:

function phptemplate_links($links, $delimiter = ' * ') {
  if (!is_array($links)) {
    return '';
  }
  return implode($delimiter, $links);
}

Amint látod, ez két dologban különbözik a theme.inc-ben található függvénytől: a neve phptemplate_links, és elválasztó jelnek a ' * ' karaktert használja minden esetben.

Ha csak a primary menü esetében szeretnéd a ' | ' elválasztó jelet megváltoztatni, akkor az előbbi megoldás helyett a template.php-ben létre kell hoznod egy erre specializált funkciót:

function phptemplate_primarylinks($links, $delimiter = ' * ') {
  if (!is_array($links)) {
    return '';
  }
  return implode($delimiter, $links);
}

És ezt a funkciót kell meghívnod a page.tpl.php-ben:

<div id="primary"><?php print theme('primarylinks', $primary_links) ?>
</div>

Ekkor a primary menüben ' * ' lesz az elválasztó, másutt marad a ' | '.

0
0
york képe

Orulok, hogy megprobalod magad kiszenvedni a megoldast:
Nezzuk a kerdeseidet:

2. pont: az űrlapon hozzak létre egy email cím mezőt rejtettbe? így néz ki most: http://kepfeltoltes.hu/view/110415/12107596301_www.kepfeltoltes.hu_.jpg
tehát akkor adjak hozzá egy "Szállás címe" mezőt, amit rejtettbe teszek?! Jól értelmezem?

Ezt is lehet, de a node/NID/webform/emails oldalon is felvehetsz egy tetszoleges cimzettet.

3. pont: Na innentől kezd érdekessé válni. Létrehoztam egy saját modult az általad elkészített kis tutorial alapján (http://openproject.hu/blog/york/drupal-modul-keszitese-egyszeru). Nos akkor itt a .module fájlba a mysite_mail_alter + a noad_load függvényeket kell elkészíteni és semmi mást?

Csak a mysite_mail_alter() fuggvenyt kell elkesziteni a node_load() fuggvenyt csak meg kell hivni.

és itt a mysite_mail_alter hook... akkor ezt hogy is faragjam át, hogy megkapjam a rejtett mező értéket a $message['params']['submission'] tömbből?

A fejleszteshez celszeru feltenni a devel modult aminek segitsegevel konnyen es jol olvashatoan ki tudod iratni a kulonbozo valltozokat.

Kiiratjuk a $messages valtozo tartalmat:

<?php
function mysite_mail_alter(&$message) {
  // Minden level kuldesekor lefut.
  dpm($message);
}
?>

Megfigyeljuk mi a level azonositoja: 'webform_submission' minket csak ezek a levelek erdekelnek:

<?php
function mysite_mail_alter(&$message) {
  if ( $message['id'] == 'webform_submission' ) {
    // Csak a webform altal kikuldott levelek eseteben fut le.
    dpm($message);
  }
}
?>

Nezzuk meg mi a rejtett mezo tartalmat es szerezzuk meg a node id-t (nid)...:
(itt bukott meg a mutatvanyom a hidden mezovel, ugyanis itt meg nem helyetesitette be a webform az url-t, de szerencsere van helyette mas egyszerubb megoldas)

<?php
function mysite_mail_alter(&$message) {
  if ( $message['id'] == 'webform_submission' ) {
    // Csak a webform altal kikuldott levelek eseteben fut le.
    dpm($message);
 
    // A node id-t megszerezzuk az utvonalbol (http://api.drupal.org/api/drupal/includes--path.inc/function/arg/6).
    $nid = arg(1);
 
    // toltsuk be a node-t
    $node = node_load($nid);
 
    // nezzuk meg mi van benne:
    dpm($node);
  }
}
?>

Nezzuk meg hogy tudjuk lecserelni a cimzettet:

<?php
function mysite_mail_alter(&$message) {
  if ( $message['id'] == 'webform_submission' ) {
    // Csak akkor csereljuk le a cimzett e-mail cimet, ha a "szallas adonak" kuldjuk a levelet.
    if ($message['to'] == 'ezt@a_cimet_csereljuk_le.hu') {
      // Csak a webform altal kikuldott levelek eseteben fut le.
      dpm($message);
 
      // A node id-t megszerezzuk az utvonalbol (http://api.drupal.org/api/drupal/includes--path.inc/function/arg/6).
      $nid = arg(1);
 
      // toltsuk be a node-t
      $node = node_load($nid);
 
      // nezzuk meg mi van benne:
      dpm($node);
 
      $message['to'] = $node->field_szallas_ado_email_cime[0]['value'];
      // ^ itt lehet nem value van, most nincs keznem olyan site ahol mail field van hasznalva es tudok feltenni devel modult.
    }
  }
}
?>

Az eles oldal eseten toroljuk ki a dpm-eket.
Upsz leirtam a megoldast... bocs.
Remelem mukodik is ;).

0
0
Illyés Edit képe

Egyelőre a következő, minimális elvárásoknak megfelelő megoldás lett beüzemelve:

1. Megjelenítés szótár a következő kategóriákkal: kép elrejtése, bevezető elrejtése, kapcsolódó cikkek elrejtése, stb.

2. A node.tpl.php-ben nem a $content változót használjuk, hanem mezőnként íratunk ki mindent (ez a címlapszerkesztőtől függetlenül is így lett volna):

<?php if ($node->field_image[0]['view']) { ?>
  <div class="image"><?php print $node->field_image[0]['view']; ?></div>… stb.
<?php } ?>

3. SMINKNEVE_preprocess_node()-ban a megjelenítési kategóriák függvényében unset()-elem a nem kívánt mezőket. (Brutális megoldás, de egyelőre ez van.)

<?php
if ($vars['page'] == 0) {
  $unset = array(
    220 => 'field_teaser', // 220 a "Bevezető elrejtése" tid azonosítója
    221 => 'field_image',
    222 => 'related_articles',
  );
  $terms = array_keys($vars['node']->taxonomy);
  foreach ($unset as $key => $value) {
    if (in_array($key, $terms)) {
      unset($vars['node']->$value);
    }
  }
}
?>

4. A címlapok (magyar, angol) számára létrehoztam egy konténer tartalomtípust, ennek csak a $content-jét íratom ki egy erre a célra létrehozott node-content.tpl.php-ben.

<?php
$containers = array(
  'frontpage',
 // …további adminisztrációs célokra szolgáló konténer típusok
  );
if (in_array($vars['node']->type, $containers)) {
  $vars['template_files'][] = 'node-content';
}
?>

node-content.tpl.php:

<?php
print $content;
?>

5. A frontpage típust kiegészítettem egy autocomplete widget-es node reference mezővel, a hivatkozott tartalmak teaser nézetként jelennek meg.

Tehát most két felületünk van: egyrészt a node oldalakon be kell kattintania az üzemeltetőnek, ha a teaserből szeretné valamelyik komponenst kilőni, másrészt a frontpage típusú node-ok szerkesztési oldalán tudja kiválasztani a címlapra kerülő cikkeket ill. egeres vonszolással azok sorrendjét.

Itt tartunk most. Továbbgondolkodás a következő irányba indult el:

1. A cikk-kiválasztó autocomplete widgetet egészítsük ki checkboxokkal, amelyek értékét az autocomplete segítségével kiválasztott cikk megjelenítési kategóriái alapján ajaxosan feltöltjük.

2. Az üzemeltető ki/bekattintja az elrejteni/megjeleníteni kívánt mezők checkboxát.

3. A checkboxok értékét betuszkoljuk valami $node->temp változóba.(?)

4. A SMINKNEVE_node_preview()-t átalakítjuk úgy, hogy a node reference útján hivatkozott tartalmak mezőit a $node->temp-ben letárolt értékeknek megfelelően mutassa meg, ill. rejtse el.

5. A frontpage szerkesztő űrlaphoz írunk egy plusz submit funkciót, ami mentéskor a $node->temp-ben letárolt értékek alapján frissíti a hivatkozott tartalmak kategóriáit.

A 6.x-es CCK számomra egyelőre egy fekete doboz, és nem tudtam volna ésszerű időn belül összerakni az autocomplete widget kiegészítését, ezen kívül megrendelői oldalról is elég cseppfolyós még a helyzet, nem lehet egyelőre tudni, hogyan is fogják használni az új rendszert, ezért a második fejlesztési kört egyelőre jegeltük, és pár hónapon belül visszatérünk rá.

0
0

Miért nem a style.css hívódik meg utoljára?

Anonymous képe

Azt vettem észre, hogy más-más oldalakon más-más sorrendben hívódnak meg a css fájlok.
Például a nyitólapomon:

<style type="text/css" media="all">@import "/modules/playlist/audio_playlist/audio_playlist.css";</style>
<style type="text/css" media="all">@import "/modules/event/event.css";</style>
<style type="text/css" media="all">@import "/modules/img_assist/img_assist.css";</style>
<style type="text/css" media="all">@import "/modules/simplenews/simplenews.css";</style>
<style type="text/css" media="all">@import "/sites/honlapneve.hu/themes/smink/style.css";</style>
<style type="text/css" media="all">@import "/modules/lightbox2/lightbox.css";</style>
Fórum: