ВопросКак сделать динамическую таблицу в настройках модуля
Написал модуль зависимый от Boost.
Суть модуля в том, что при создании или редактировании ноды в файловом кэше Boost она удаляется, а также в зависимости от типа этой ноды, удаляется кэш списка произвольных адресов, которые могут быть нодами или вьюхами.
Код модуля тут:
<?php /** * Реализация hook_node_submit. */ function macsol_boost_cleaner_node_submit($node, $form, &$form_state) { $path_end = '_.'.variable_get('boost_extension_text/html',''); $boostpath = $_SERVER['DOCUMENT_ROOT'].'/' . variable_get('boost_root_cache_dir', BOOST_ROOT_CACHE_DIR); if (variable_get('boost_normal_dir', BOOST_NORMAL_DIR) !== ''){$boostpath = $boostpath .'/'.variable_get('boost_normal_dir', BOOST_NORMAL_DIR);} $boostpath = $boostpath .'/'. $_SERVER['HTTP_HOST'].'/'; if ($form_state['values']['clear_catalog']===1) : if(file_exists($boostpath)) { if(is_dir($boostpath)) { full_del_dir($boostpath); return;} } endif; if ($form_state['values']['clear_connected_pages']===1) : $file_clean = array('sitemap',drupal_get_path_alias('node/'. $node->nid)); if ($node->type === 'portfolio') {array_push($file_clean, 'portfolio');} if ($node->type === 'reviews') {array_push($file_clean, 'reviews');} if ($node->type === 'service') {array_push($file_clean, 'price/oformlenie-tkanyami','price/stoimost-vyezdnoy-registracii','price/stoimost-aksessuarov', 'price/organizaciya-svadby-stoimost');} if ($node->type === 'news') {array_push($file_clean, 'vyezdnaya-registraciya','oformlenie-tkanyami','svadebnye-aksessuary','svadebnaya-floristika','chehly-na-stulya-v-arendu');} foreach($file_clean as $val) { $path_file = $boostpath .$val . $path_end; if(file_exists($path_file)){unlink($path_file);drupal_set_message($val.' - обновлен');} } endif; } /** * Реализация hook_form_FORM_ID_alter. */ function macsol_boost_cleaner_form_node_form_alter(&$form, &$form_state, $form_id) { if (isset($form['#node_edit_form']) && $form['#node_edit_form'] === TRUE) { $form['options']['clear_connected_pages'] = array( '#type' => 'checkbox', '#title' => "Очистить кэш для связанных страниц", '#default_value' => 1, '#access' => user_access('administer nodes') ? TRUE : FALSE, ); $form['options']['clear_catalog'] = array( '#type' => 'checkbox', '#title' => "Очистить весь кэш", '#default_value' => 0, '#access' => user_access('administer nodes') ? TRUE : FALSE, ); } } function full_del_dir($directory){ $dir = opendir($directory); while(($file = readdir($dir))) { if ( is_file($directory."/".$file) ){ unlink ($directory."/".$file); } else if ( is_dir($directory."/".$file) && ($file != ".") && ($file != "..") ){ full_del_dir ($directory."/".$file); } } closedir($dir); rmdir($directory); drupal_set_message("Весь кэш очищен"); } ?>
Вопрос у меня вот какой. Как сделать нормальные настройки к этому модулю. По идее, было бы здорово создать страницу настроек с с таблицей в 2 колонки: Тип ноды и список адресов. Как это сделать нормально я не знаю, поэтому просто поставил условия в коде
if ($node->type === 'news') {array_push($file_clean, 'vyezdnaya-registraciya','oformlenie-tkanyami','svadebnye-aksessuary','svadebnaya-floristika','chehly-na-stulya-v-arendu');}
Очень хочется настраиваться из админки и без программирования (делигировать жене). В инетах не нашел уроков где создают в настройках динамическую таблицу.
- macsol
- 22.09.2014
- 4997