CHi képe

szia! - megpróbáltam, de annyi próbálkozás után a következőkre jutottam.
Azt már értem, hogy ezek a függvényekek hook_form_alter, mindig lefutnak
mert csináltam bele ilyet:

function autoresponder_form_alter($form, &$form_state) {
drupal_set_message(t($user.'A hírlevél feliratkozások frissítése megtörtént.'));
   return;
}

S ezt minden lapfrissitésnél kiirta. Ez nem jó. Csak azt szeretném, ha a profile modulnál, s a regisztrációs űrlapnál futna le a kód. Ezt hogyan tudom megoldani?

Aztán a form_alter fv.ből nem tudtam meghivni egy külső függvényt, ami viszont alap php. s nem értem miért nem működik.

function Hirlevel_2($email,$name,$field32)
{
//$field32 - Custom filed Lakcim
    $email=urlencode($email);
    $name=urlencode($name);
    $field32=urlencode($field32);
    $URL="http://www.webhely.hu/cgi-bin/responder/register.cgi";
    $account=5;
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"$URL"); 
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 
        "account=$account&email=$email&name=$name&dp32=$field32"
    );
    curl_exec ($ch); 
    curl_close ($ch);
}
 
function autoresponder_form_alter($form, &$form_state) {
 
Hirlevel_2('[email protected]','próba','Budapest, 1084, rózsa út 22.');
 
   drupal_set_message(t($user.'A hírlevél feliratkozások frissítése megtörtént.'));
   return;
}

tehát nem tudtam odáig eljutni, hogy továbbküldjem a megadott adatokat erre a cimre.
Aztán később még arra lenne szükség, hogy az éppen aktuális felhasználó adatait (név,email) küldje el, azt meg végképp nem találtam meg, hogy egyrészt, hogyan kérdezzem l.

Ha tudsz segiteni, várom a választ!
köszi

0
0
makgab képe

természetesen utánaolvastam:
"Writing .install files": http://drupal.org/node/51220

Azért nem a schema-t használtam, mert az nem működött! Pl. a numeric mezőt nem volt hajlandó létrehozni MySQL-ben normálisan. Inkább használtam a db_query()-t, érdekes ezzel működött.

Tudom, hogy csak MySQL alá írtam meg.
A schema-t fogom használni, ha működik majd egyszer teljesen. Ezt nem csinálta meg, pedig a Drupal doksi alapján néztem:

<?php
 
function mymodule_schema() {
	$schema['mymodule'] = array(
	'fields' => array(
	'vid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
	'nid' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
	'size' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
	'weight' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
	'price_huf' => array('type' => 'numeric', 'precision' => 20, 'scale' => 2, 'not null' => TRUE, 'default' => 0.0),
	),
	'primary key' => array('vid', 'nid'),
	);
 
	return $schema;
}
 
?>

Nem volt hajlandó a MySQL-ben numeric(20,2) mezőt létrehozni, helyette (10,0)-t hozott létre.

G.

0
0
york képe

Bocs nem figyeltem fel erre az aprosagra.
Itt van amit keresel:

/**
 * Theme the contents of e-mails sent by webform.
 *.
 * @param $form_values
 *   An array of all form values submitted by the user. The array contains three
 *   keys containing the following:
 *   - submitted: All the submitted values in a single array keyed by webform
 *     component IDs. Useful for simply looping over the values.
 *   - submitted_tree: All the submitted values in a tree-structure array, keyed
 *     by the Form Key values defined by the user.
 * @param $node
 *   The complete node object for the webform.
 * @param $sid
 *   The submission ID of the new submission.
 * @param $cid
 *   If you desire to make different e-mails depending on the recipient, you can
 *   check this component ID to output different content. This will be the ID
 *   of the component that is a conditional e-mail recipient. For the normal
 *   e-mails, it will have the value of 'default'..
 */
function theme_webform_mail_message($form_values, $node, $sid, $cid) {
  global $user;
 
  $message = '';
  $message .=  t('Submitted on') .' '. format_date(time(), 'small') ."\n";
  $ip_address = $_SERVER['REMOTE_ADDR'];
 
  if ($user->uid) {
    $message .= t('Submitted by user') .": $user->name [$ip_address]\n";
  }
  else {
    $message .= t('Submitted by anonymous user') .": [$ip_address]\n";
  }
 
  $message .= "\n";
  $message .= t('Submitted values are:') ."\n\n";
  $message .= theme('webform_mail_fields', 0, $form_values['submitted_tree'], $node);
 
  $message .= "\n\n";
  $message .= t("The results of this submission may be viewed at:") ."\n";
  $message .= url('node/'. $node->nid. "/submission/". $sid, NULL, NULL, TRUE);
 
  return $message;
}

Ennek a fuggvenynek a tartalmat masold be a sajat fuggvenyedbe es modositsd ugy ahogy te szeretned.
0
0
aboros képe

nem ismerem az artisteert kicsit se szóval fogalmam sincs milyen a kimenete egy ilyen összekattintott sminknek, de egy rendesen kódolt sminkben így csinálnám:

ezt valósítom meg, hogy a bodynak osztályokat adhassak a tartalom típus alapján (vagy bármi alapján)..
http://api.drupal.org/api/function/phptemplate_body_class/6

template.php

function SMINKNEVE_body_class($left, $right) {
  $classes = array();
  if ($left != '' && $right != '') {
    $classes[] = 'sidebars';
  }
  else {
    if ($left != '') {
      $classes[] = 'sidebar-left';
    }
    if ($right != '') {
      $classes[] = 'sidebar-right';
    }
  }
  if (arg(0) == 'forum') {
    $classes[] = 'forum';
  }
  if (arg(0) == 'node' && is_numeric(arg(1))) {
    $node = node_load(arg(1));
    $classes[] = 'node-type' . $node->type;
  }
  if (!empty($classes)) {
    print ' class="'. implode(' ', $classes) .'"';
  }
}

ha minden stimmel, akkor egy szabályos phptemplate sminkben a body konténer így kerül be:

<body<?php print SMINKNEVE_body_class($left, $right); ?>>
...
..

lásd: http://api.drupal.org/api/drupal/themes--garland--page.tpl.php/6/source

a template.php -ban végzett módosításoknak hála, megfelelő osztályok kerülnek a body konténerre, ezek alapján könnyedén célozhatom cssben amit akarok, pl ha 'forum' típusú a node amit éppen nézek, akkor legyen a háttér a 42.png:
css:

body.node-type-forum #header {
background-image: url(42.jpg);
}
0
0

-
clear: both;

makgab képe

Van egy shoutbox_view(), ez az amit "be kellene ilesztenem" egy oldalba.
Ez egy page és egy block is, nem?

<?php
...
function shoutbox_menu() {
  $items = array();
 
  $items['shoutbox'] = array(
    'title' => 'Shout box',
    'page callback' => 'shoutbox_view',
    'access arguments' => array('view shouts'),
    'type' => MENU_CALLBACK,
  );
...
function shoutbox_view($block = FALSE) {
  // Load externals
  theme('shoutbox_external_files');
 
  // Output the shoutbox form.
  $output .= drupal_get_form('shoutbox_add_form');
 
  // Determine the post count
  if (!$block) {
    $show_amount = variable_get('shoutbox_showamount_page', '30');
  }
  else {
    $show_amount = variable_get('shoutbox_showamount_block', '10');
  }
 
  // Output the existing shoutbox posts.
  $shoutbox_posts_data = _shoutbox_display_posts($show_amount, TRUE, TRUE);
 
  // JS Settings
  _shoutbox_js_config();
 
  // Theme output
  $output .= theme('shoutbox_page', $shoutbox_posts_data);
 
  if ($block) {
    // If block, show link to page
    $page_path = 'shoutbox';  
    shoutbox_invoke('link', $shout, $page_path);
    $output .= theme('shoutbox_block_page_link', $page_path);
  }
  else {
    // If page, show pagers
    $output .= theme('pager', NULL, $show_amount, 0);
  }
 
  return $output;
}
...
?>
0
0
eMeLA képe

Az autodatum helyett autodate-et írtam :)

autodate.module

<?php
function autodate_field_info() {
  return array(    
    'autodate_field' => array(
      'label' => t('Autodátum'),
      'description' => t('Automatikus dátum.'),
      'default_widget' => 'autodate_auto',
      'default_formatter' => 'autodate_show',
    ),
  );
}
function autodate_field_widget_info() {
  return array(
    'autodate_auto' => array(
      'label' => t('Dátum mező'),
      'field types' => array('autodate_field'),
    ),
  );
}
 
function autodate_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
 
  $widget = $element;
  $widget['#delta'] = $delta;
 
  switch ($instance['widget']['type']) {
    case 'autodate_auto':
      $widget += array(
        '#type' => 'hidden',
        '#value' => time(),        
      );
      break;   
  }
 
  $element['autodatum'] = $widget;
  return $element;
}
 
function autodate_field_is_empty($item, $field) {
  if (empty($item['autodatum']) && (string) $item['autodatum'] !== '0') {
    return TRUE;
  }
  return FALSE;
}

Köszönöm a rávezetést.

0
0

...mit tudok: http://web.termuves.hu

szt képe

Köszi, ez ismét rendkívül hasznos volt!
Ennek alapján a feladatomra a minimodul az alábbi:

datecomboweight.info:

  1. name = Date Combo Weight
  2. description = Custom weight settings for Date Combo (node/add/program)
  3. core = 7.x

datecomboweight.module:
  1. /**
  2.  * Implementation of hook_element_info_alter().
  3.  */
  4. function datecomboweight_element_info_alter(&$type) {
  5. if (isset($type['date_combo'])) {
  6. $type['date_combo']['#process'][] = 'datecomboweight_combo_element_process';
  7. }
  8. }
  9.  
  10. /**
  11.  * Modify default weight was set in date date_combo process
  12.  *
  13.  * @see date_combo_element_process($element, &$form_state, $form)
  14.  */
  15. function datecomboweight_combo_element_process($element, &$form_state, $form) {
  16. $element['value']['#weight'] = 1;
  17. $element['show_todate']['#weight'] = 2;
  18. $element['value2']['#weight'] = 3;
  19. return $element;
  20. }
1
0
Sk8erPeter képe

Ha valakit érdekel, pl. így lehet kideríteni, az egyes cache-táblákban mekkora a legnagyobb méretű `data` mező:

  1. SELECT 'cache' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache
  2. /* ............ */
  3. UNION
  4. SELECT 'cache_block' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache_block
  5. UNION
  6. SELECT 'cache_bootstrap' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache_bootstrap
  7. UNION
  8. SELECT 'cache_field' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache_field
  9. /* ............ */
  10. UNION
  11. SELECT 'cache_form' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache_form
  12. /* ............ */
  13. UNION
  14. SELECT 'cache_menu' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache_menu
  15. /* ............ */
  16. UNION
  17. SELECT 'cache_views' AS `table_name`, MAX(LENGTH(`data`)) AS `max_length_of_data`, `cid` FROM cache_views
  18. /* ............ */

A pontok helyére persze további esetleges cache-táblákat lehetne még írni.

Próbáltam megjelentetni róla könyvlapot a tippek-trükkök szekcióban, de úgy tűnik, valamiért nem lesz publikus egy darabig... :)

1
0
dj képe

      $build['book_navigation'] = array(
        '#theme' => 'book_navigation',
        '#book_link' => $node->book,
        '#weight' => 100,
        // The book navigation is a listing of Node entities, so associate its
        // list cache tag for correct invalidation.
        '#cache' => [
          'tags' => $node->getEntityType()->getListCacheTags(),
        ],
      );

Csak a node objektumra van szükséged ahhoz, hogy meg tudd hívni.

Drupal konzolban nagyjából ennyi:
Létrehozod a modulodat (drupal generate:module) válaszolsz a kérdésekre
Aztán egy blokkot generálsz hozzá (drupal generate:plugin:block) válaszolsz a kérdésekre

Ennek eredményeként kapsz egy üres blokk objektumot aminek a build funkcióját kell a fentivel kiegészítened valahogy így:

  public function build() {
    $build = [];
    // Load the current node.
    $node = \Drupal::routeMatch()->getParameter('node');
    if (!empty($node->book['bid']) && empty($node->in_preview)) {
      $book_node = Node::load($node->book['bid']);
      if (!$book_node->access()) {
        return;
      }
      $build['my_book_navigation'] = array(
        '#theme' => 'book_navigation',
        '#book_link' => $node->book,
        '#weight' => 100,
        // The book navigation is a listing of Node entities, so associate its
        // list cache tag for correct invalidation.
        '#cache' => [
          'tags' => $node->getEntityType()->getListCacheTags(),
        ],
      );
    }
 
    return $build;
  }

Ne felejtsd el betenni az elejére ezt a sort:

use Drupal\node\Entity\Node;

Aztán a moduloknál bekapcsolod a modult, végül bekapcsolod a blokkodat abba vagy azokba a régiókba ahova akarod.

0
0

Üdv!
Dudás József