Как правильно сделать ссылку

Аватар пользователя Olegars

Всем привет
как правильно сделать кнопку на выполнение кода в модуле, например

<?php
$fg=db_delete('field_data_field_test');
$fg->execute();

без создания блока, формы, другой страницы, просто кнопка?
Или только form submit?

0 Thanks

Комментарии

Аватар пользователя bumble
bumble 4 месяца назад
Olegars написал:
как правильно

и

Olegars написал:
без создания блока, формы, другой страницы

взаимоисключающие понятия.

Кнопка - элемент формы. Соответственно, без формы работать ей некуда.

Вы, лучше, опишите что сделать пытаетесь. Подход у Вас похоже не правильный к задаче.

Аватар пользователя Olegars
Olegars 4 месяца назад

Ну не кнопка, пусть будет ссылка...
Да все просто, яж пример привел, хочу ссылку на которую можно нажать и (для примера) таблица test очистится. При этом надо остаться на той же странице где нажал ссылку....

Аватар пользователя bumble
bumble 4 месяца назад

Делайте AJAX-ссылку.

Аватар пользователя Olegars
Olegars 4 месяца назад

а примера не найдется?

Аватар пользователя bumble
bumble 4 месяца назад

Здесь пример реализации кнопки вызова модератора (из этого проекта).

Аватар пользователя Olegars
Olegars 4 месяца назад

не пойму где туплю, так срабатывает

$items['node/10'] = array(
    'page callback' => 'generate',
    'page arguments' => array(1),
    'access callback'  => TRUE,
  );
return $items;
  }

а так нет
$items['node/%']

Аватар пользователя bumble
bumble 4 месяца назад

Путь 'node/%' определяется в стандартном модуле node ( 'node/%node' ).

Вам нужно правильнее продумать архитектуру.

Аватар пользователя Olegars
Olegars 4 месяца назад

мне и нужно что бы колбек сработал в существующей странице когда на нее заходишь
то-есть, заходишь на страницу, например /node/100
срабатывает

 $items['node/%'] = array(
    'page callback'     => 'dru_claim_node',
    'file'              => 'dru_claim.pages.inc',
    'page arguments'    => array(2, 3, 4),
    'access arguments'  => array('create claim'),
    'delivery callback' => 'ajax_deliver',
    'type'              => MENU_CALLBACK,
);
Аватар пользователя Olegars
Olegars 4 месяца назад
Не используйте матерные или агрессивные слова написал:
Что мешает просто на странице вызвать аякс запрос с параметром nid

Ни что не мешает, я и спрашиваю "как правильно сделать кнопку (ссылку) на выполнение кода в модуле" так как не знаю как это сделать.
А нужно мне вот что: на странице определенного типа, скажем "Заказы" нужно показать кнопку(ссылку), типа как Subscribe, что бы при нажатии на нее выполнился код, при этом пользователь остался на текущей странице.
Ваш вариант не подходит, нужно из модуля все это сделать, из шаблона как то не то.
P.S. Ваш ник цензура не пропускает....

Аватар пользователя fairrandir
fairrandir 4 месяца назад
<?php
/*
 * Implements hook_menu().
 */
function custom_forum_integration_menu() {
  
$items = array();

  

$items['recommended.json'] = array(
    
'title' => t('Recommended clinics'),
    
'description' => 'Provides recommended clinics json data',
    
'page callback' => 'custom_forum_integration_recommended_json',
    
'access callback' => TRUE,
    
'type' => MENU_CALLBACK,
  );

  return 

$items;
}

function 

custom_forum_integration_recommended_json() {
  
$output = array();

  if (

$cache cache_get('custom_forum_integration_recommended_json')) {
    
$output $cache->data;
  }

  if (empty(

$output)) {
    
// some logic
    
cache_set('custom_forum_integration_recommended_json'$result'cache'time() + (24 60 60));
  }

  return 

drupal_json_output($output);
}
?>

Всё очень просто. Определяете hook_menu, указываете callback-функцию, в ней фигачите свою логику. Два момента:
1. access callback - обязательно укажите, особенно, если планируете db_delete делать.
2. На кнопку/ссылку ставите свой js-код - по клику послать POST на данный урл и таки всё пучком будет.

P.S. Всё для примера, но попытайтесь заставить работать это всё дело самостоятельно.

Аватар пользователя Olegars
Olegars 4 месяца назад

это все понятно, я так и пытаюсь сделать, не понятен вот этот момент:
$items['recommended.json']
эта строка определяет страницу, на которой все это хозяйство сработает, правильно?
Вот мне нужно что бы сработало на определенных страницах, типа $items['заказ/%'].

Аватар пользователя Olegars
Olegars 4 месяца назад

ну ладно, до кнопки я еще не дошел,
"Эта срока определяет роут, обращаясь к которому, сработает логика из калбека"
ват на этом моменте туплю... не срабатывает калбек когда обращаюсь к роуту.
вот так работает
$items['node/100']
вот так нет
$items['node/%']

Аватар пользователя Olegars
Olegars 4 месяца назад

а как тогда сделать шаблон для $items['node/ххх']?
никак логику не пойму