Új formázási lehetőségek

pp képe

Sokszor van úgy, hogy mindenféle kódot tolnak be emberek, és elfelejtik normálisan megformázni, pedig a drupal.hu elég gazdag eszközkészletet biztosít ehhez.

Persze nem egyszerű ezeket a furcsa kódokat beírni a szövegbe, ezért bekapcsoltam a BUEditort és felvettem a leggyakrabban használt kódformázó tag-eket.

Használjátok egészséggel!

Az új látvány képe
PHP / Drupal kód

Furcsa internal error

makgab képe

Üdv!

Mostanában látok olyat fizetős tárhelyen, hogy pl. D7.22 frissen install, 1-2 alapmodul bekapcsol. Majd félig-meddig megjelenik az "internal server error" és pár másodperc után mégis lefut a kért funkció (modul telepítése). Furcsa, ilyet nem láttam még eddig.

Környezet:
PHP 5.2.6 (fcgi környezetben)
MySQL 5.0.51a-lenny
A környezettel a Drupalnak nincs gondja, bár sokszor nem tudja lekérdezni a frissítéseket (azaz van-e frissítés).

A logban csak "communication error" látszik, de gyanítom ez lehet a gond:

Drupal verzió: 

Videowhisper - Change Mode error

makgab képe

Üdv!

Tesztelgetem ezt a modult, de nem tökéletes. Volt/van benne bug...
Van red5 szerverem, feltettem a videowhisper alkalmazást ár. Működik is
a leírás alapján.

De ha adminként létrehozok egy "Live Streaming" tartalmat (de mindegyiknél csinálja) és a "Change Mode" gombra klikkelek, akkor ezt kapom:

"EntityMalformedException: Missing bundle property on entity of type node. entity_extract_ids() function (/var/www/virtual/drupal/includes/common.inc 7697 line)."

Drupal verzió: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 

Rules szabály működöt de már nem működik

vikicica22 képe

Hello mindenkinek!

Commerce webáruházhoz a rules segítségével egy nyitvatartási (Store Opening Hours) szabályozást hoztam létre.

Drupal verzió: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Taxonomy upgrade extras: 
pp képe

(lehet van más sokkal jobb megoldás is.)

Szerintem a footer-ban nem lehet elérni ezeket a változókat, de erről magad is meggyőződhetsz:

 drupal_set_message('<pre>'.print_r(get_defined_vars(),true).'</pre>');

Azonban, bele tudod hekkelni a sminkbe a dolgot. A template.php-ba kell beletenned a megfelelő smink függvényt. A theme_ részt természetesen át kell írnod, a sminknek megfelelően(vagy a smink motor nevére ;))

valahogy így néz ki az eredeti:

function theme_views_view_list($view, $nodes, $type) {
  $fields = _views_get_fields();
 
  foreach ($nodes as $node) {
    $item = '';
    foreach ($view->field as $field) {
      if ($field['label']) {
        $item .= "<div class='view-label view-label-$field[queryname]'>" . $field['label'] . "</div>";
      }
      $item .= "<div class='view-field view-data-$field[queryname]'>" . views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view) . "</div>";
    }
    $items[] = "<div class='view-item view-item-$view->name'>$item</div>\n"; // l($node->title, "node/$node->nid");
  }
  if ($items) {
    return theme('item_list', $items);
  }
}

és valamilyen ilyesmire kell megformáznod:

function theme_views_view_list($view, $nodes, $type) {
  $fields = _views_get_fields();
 
  foreach ($nodes as $node) {
    $item = '';
    foreach ($view->field as $field) {
      if ($field['label']) {
        $item .= "<div class='view-label view-label-$field[queryname]'>" . $field['label'] . "</div>";
      }
      $item .= "<div class='view-field view-data-$field[queryname]'>" . views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view) . "</div>";
    }
    $items[] = "<div class='view-item view-item-$view->name'>$item</div>\n"; // l($node->title, "node/$node->nid");
  }
  if ($items) {
    $output = theme('item_list', $items);
  }
  foreach($nodes as $n){
   $node = node_load($n->nid);
   // itt aztán azt csinálsz vele amit akarsz
  // az output változóba gyűjtöd a dolgokat.
  // persze ha van lapozó, akkor ez a felett fog megjelenni, de csak nem ;))
  }
  return $output;
}
0
0
Magus képe

A modul szerintem csak részben jó nekem, mert a saját modul felépítése (talán azért mert ez az első modulom és elég béna megoldásokat használ (vagy tán túl profikat? ;D)) nem teszi lehetővé (vagy csak nem ismertem ki rendesen a videó(k) alapján a működését) a context használatát.

Ellenben átnyálaztam gyorsan a modul-t és megtaláltam benne talán amire nekem szükségem van. Így a core menu_set_active_item() fg-t átírtam a context-t alapján egy kicsit, és ez lett belőle:

<?php
function orseolo_menu_set_active_item($path = NULL) {
	static $stored_mid;
	$orig_q = $_GET['q'];
 
	if (!isset($stored_mid) || isset($path)) {
		if (!isset($path)) {
			$path = $_GET['q'];
		}
		else {
			$_GET['q'] = $path;
		}
		$menu = menu_get_menu();
 
		while ($path && !isset($menu['path index'][$path])) {
			$path = substr($path, 0, strrpos($path, '/'));
		}
		$stored_mid = isset($menu['path index'][$path]) ? $menu['path index'][$path] : 0;
 
		// Search for default local tasks to activate instead of this item.
		$continue = TRUE;
		while ($continue) {
			$continue = FALSE;
			if (isset($menu['items'][$stored_mid]['children'])) {
				foreach ($menu['items'][$stored_mid]['children'] as $cid) {
					if ($menu['items'][$cid]['type'] & MENU_LINKS_TO_PARENT) {
						$stored_mid = $cid;
						$continue = TRUE;
					}
				}
			}
		}
 
		// Reset the cached $menu in menu_get_item().
		$context_menu = menu_get_item(null, $path);
		$items[] = $context_menu;
 
		// Grab the menu tree from active context item to the root
		$mid = $context_menu['pid'];
		while ($mid && ($item = menu_get_item($mid))) {
			$items[] = $item;
			$mid = $item['pid'];
		}
		$items = array_reverse($items);
 
 
		menu_set_location($items);
	}
	$_GET['q'] = $orig_q;
	return $stored_mid;
}
?>

Ezt meghívva (egyelőre így látom a tesztek alapján) pontosan azt csinálja, amire nekem szükségem van: bárhonnan mehívva ezt a fg-t az általam beírt path-nak megfelelő menü item lesz aktív.

Köszönöm a sok helpet!

(ha közben még hibát fedezek fel benne, vagy netán ti, azt megírom itt)

0
0

- - - - -
Orseolo Magus
[email protected]

Hahn Csaba képe

A page.tpl. php fájlban benne van a  print $scripts utasítás.

Az admin/build/block oldal betöltése esetén a következőket írja ki:

  <script type="text/javascript" language="javascript" src="http://www.gyermekbaratingatlanok.hu/ingatlan/lytebox.js"></script>
  <link rel="stylesheet" href="http://www.gyermekbaratingatlanok.hu/ingatlan/lytebox.css" type="text/css" media="screen" />
 
  <script type="text/javascript" src="/misc/jquery.js?I"></script>
 
<script type="text/javascript" src="/misc/drupal.js?I"></script>
<script type="text/javascript" src="/misc/tabledrag.js?I"></script>
<script type="text/javascript" src="/sites/default/files/languages/hu_46cfd1efd87c7a382b92ed93b6c900e1.js?I"></script>
<script type="text/javascript" src="/misc/tableheader.js?I"></script>
<script type="text/javascript" src="/modules/block/block.js?I"></script>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
jQuery.extend(Drupal.settings, { "basePath": "/", "tableDrag": { "blocks": { "block-region-select": [ { "target": "block-region-left", "source": "block-region-left", "relationship": "sibling", "action": "match", "hidden": false, "limit": 0 }, { "target": "block-region-right", "source": "block-region-right", "relationship": "sibling", "action": "match", "hidden": false, "limit": 0 }, { "target": "block-region-content", "source": "block-region-content", "relationship": "sibling", "action": "match", "hidden": false, "limit": 0 }, { "target": "block-region-header", "source": "block-region-header", "relationship": "sibling", "action": "match", "hidden": false, "limit": 0 }, { "target": "block-region-footer", "source": "block-region-footer", "relationship": "sibling", "action": "match", "hidden": false, "limit": 0 }, { "target": "block-region--1", "source": "block-region--1", "relationship": "sibling", "action": "match", "hidden": false, "limit": 0 } ], "block-weight": [ { "target": "block-weight-left", "source": "block-weight-left", "relationship": "sibling", "action": "order", "hidden": true, "limit": 0 }, { "target": "block-weight-right", "source": "block-weight-right", "relationship": "sibling", "action": "order", "hidden": true, "limit": 0 }, { "target": "block-weight-content", "source": "block-weight-content", "relationship": "sibling", "action": "order", "hidden": true, "limit": 0 }, { "target": "block-weight-header", "source": "block-weight-header", "relationship": "sibling", "action": "order", "hidden": true, "limit": 0 }, { "target": "block-weight-footer", "source": "block-weight-footer", "relationship": "sibling", "action": "order", "hidden": true, "limit": 0 }, { "target": "block-weight--1", "source": "block-weight--1", "relationship": "sibling", "action": "order", "hidden": true, "limit": 0 } ] } } });
//--><!]]>
</script>

Az első két sor nem része a sminknek, nem a print $script írta ki, hanem állandó eleme a fejlécnek. Csak azért írtam ide, hogy nem azzal akad-e össze a jquery?

Mi lehet a gond, hogy mégsem tudom rendesen húzni a blokkokat az egérrel?

0
0

Hahn Csaba
Már nem annyira kezdő drupalos

pante képe

Köszönöm a részletes leírást, sorban csinálom a pontokat...

Az alsminket megcsináltam a Kézikönyv leírása szerint, az jó és működik.

Viszont a Switchtheme valami miatt teljesen rossz nálam.
Hibaüzenetek sokaságát kapom, friss telepítés után.

Főoldalon (bal oldalsávba kerülne a Switchtheme blokkja):

  1. Notice: Undefined index: name switchtheme_options() függvényben (/public_html/sites/all/modules/switchtheme/switchtheme.module 287 sor).
  2. Notice: Undefined index: name switchtheme_options() függvényben (/public_html/sites/all/modules/switchtheme/switchtheme.module 287 sor).

Admin panel -> Megjelenés:

  1. Notice: Undefined index: name _system_rebuild_theme_data() függvényben (/public_html/modules/system/system.module 2563 sor).
  2. Notice: Undefined index: name _system_rebuild_theme_data() függvényben (/public_html/modules/system/system.module 2563 sor).
  3. Notice: Undefined index: name _system_rebuild_theme_data() függvényben (/public_html/modules/system/system.module 2563 sor).
  4. Notice: Undefined index: name _system_rebuild_theme_data() függvényben (/public_html/modules/system/system.module 2563 sor).
  5. Notice: Undefined index: name system_sort_modules_by_info_name() függvényben (/public_html/modules/system/system.admin.inc 925 sor).
  6. Notice: Undefined index: name system_sort_modules_by_info_name() függvényben (/public_html/modules/system/system.admin.inc 925 sor).
  7. Notice: Undefined index: name system_sort_modules_by_info_name() függvényben (/public_html/modules/system/system.admin.inc 925 sor).
  8. Warning: uasort() [function.uasort]: Array was modified by the user comparison function system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 131 sor).
  9. Notice: Undefined index: name system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 140 sor).
  10. Notice: Undefined index: name system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 158 sor).
  11. Notice: Undefined index: name system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 159 sor).
  12. Notice: Undefined index: name system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 182 sor).
  13. Notice: Undefined index: name system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 191 sor).
  14. Notice: Undefined index: name system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 197 sor).
  15. Notice: Undefined index: name system_sort_themes() függvényben (/public_html/modules/system/system.admin.inc 938 sor).
  16. Warning: uasort() [function.uasort]: Array was modified by the user comparison function system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 237 sor).
  17. Notice: Undefined index: name theme_system_themes_page() függvényben (/public_html/modules/system/system.admin.inc 2708 sor).

Esetleg valami más modul? Vagy ezeket a hibákat, hogy tudnám javítani?

(Amúgy tetszik a honlap, amit csináltál, én is pont ugyanígy szeretném kivételezni az akadálymentesített részt! Csak így zárójelben megkérdezném, mert off-topic lenne, hogy a menünél melyik modult használod és egyéni css-t szerkesztettél hozzá?)

0
0
Sk8erPeter képe

Lenne is egy ötletem rá, én hogyan indulnék neki:
épp ma találtam egy itt ajánlott modult a devel_generate kiegészítéseként, mégpedig a Faker modult:
https://drupal.org/project/faker
ez egy kiegészítő library-vel együtt működőképes:
https://github.com/fzaninotto/Faker/archive/v1.1.0.tar.gz

Biztosít egy hookot, ami a hook_node_presave() implementációjában hívódik meg, és ahol a Faker ún. providereit érjük el, aminek különböző tulajdonságai vannak random generálva, és ezekkel tudjuk módosítani a node mezőit, így például egy Lorem ipsum-blabla helyett lehet az article típus címe egy random személynév/cégnév/akármi, és ugyanígy lehet a szóbanforgó ronda adásszünet-kép is helyettesítve tetszőleges képpel, tetszőleges helyről behozva. Legalábbis ha minden igaz, megvalósítható ezzel is.
A "providerek" külön-külön osztályok, ezek alapból elérhetők - ilyen Provider osztályok vannak, mint az Address, Company, DateTime, Internet, Lorem, Miscellaneous, Person, PhoneNumber, UserAgent, meg egy Base osztály, amit a többi bővít -, de itt jön a lényeg, hogy saját osztály is hozzáadható providerként egy hookon keresztül. Abban pedig elég szabadon variálhatjuk a kódot, és majd egy hookban felhasználhatjuk a vonatkozó részeket.

Itt van a kapcsolódó hook-példa:

  1. /**
  2.  * Alter the instantiated faker object. This gives modules a method for adding
  3.  * custom providers in a centralized place without needing to do it within the
  4.  * generate hook. See the Faker library documentation for information about
  5.  * creating custom providers.
  6.  *
  7.  * @param $faker An instantiated Faker\Generator object.
  8.  */
  9. function hook_faker_alter($faker) {
  10. $faker->addProvider(new ExampleProvider($faker));
  11. }
  12.  
  13. /**
  14.  * Alter a node object that has generated by devel_generate, but before it is
  15.  * saved. This hook itself is called from hook_node_presave, so anything that
  16.  * can be done to the node object in that hook can also be done here.
  17.  */
  18. function hook_faker_node_generate($node, $faker) {
  19. if ($node->type == 'bio') {
  20. $node->title = $faker->name;
  21.  
  22. // Generate an opening paragraph, followed by a 2-4 sections comprised of
  23. // a heading followed by 1-3 paragraphs, each with 5-10 sentences.
  24. $body = '<p>' . $faker->paragraph(3,5) .'</p>';
  25. for ($i = 0; $i < rand(2,4); $i++) {
  26. $body .= '<h3>' . $faker->sentence . '</h3>';
  27. for ($j = 0; $j < rand(1,3); $j++) {
  28. $body .= '<p>' . $faker->paragraph(rand(5,10)) . '</p>';
  29. }
  30. }
  31. $node->body['und'][0]['value'] = $body;
  32. $node->body['und'][0]['format'] = 'full_html';
  33.  
  34. $node->field_email['und'][0]['value'] = $faker->email;
  35. $node->field_phone['und'][0]['value'] = $faker->phoneNumber;
  36. }
  37. }

A legrövidebb példa a legkisebb Provider-osztályból csak szemléltetésként:

namespace Faker\Provider;
 
class PhoneNumber extends \Faker\Provider\Base
{
  protected static $formats = array('###-###-###');
 
  /**
   * @example '555-123-546'
   */
  public static function phoneNumber()
  {
    return static::numerify(static::randomElement(static::$formats));
  }
}

Most így elsőre valószínű, hogy nem teljesen érthető, de érdemes megnézni a kódját, meg kipróbálni a modult (persze a fentebbi minimális kódolás szükséges hozzá, de a példa egy az egyben felhasználható, kivéve nyilván alapból a field_email, field_phone mezőket), mert ötletadónak elég jó lehet, szerintem lehetne vele mit kezdeni épp a kívánt célra is.

3
0