| Категории [FAQ] Часто задаваемые вопросы и ответы Проблемы и решения Ошибки и исправления Общие вопросы   Расширения Установка и обновление   Модули Шаблоны   Локализация интерфейса Коммерческие предложения Учимся бизнесу Бизнес книги Поисковая оптимизация (SEO) Магазины на ShopOS Хостинг для ShopOS Предложения и пожелания Курилка   | Вопрос к программистам)Переделываю сейчас один мод в плагин. Удачно все перенес, настроил и т.д.. Все выводит и на сайте и в админке плагина. Не скажу пока какой плагин будет))
 Так вот. Столкнулся с тем, что проблема с редиректами
 
 Вот тут код. Внизу есть строка
 @os_redirect(os_href_link(FILENAME_PLUGINS_PAGE, 'main_page=any_manager_page&any='.(int)$_GET['any'].'&action=items'));
 Которая по идее после обновления должна редиректить обратно на страницу редактирования - items
 но не работает. в заголовке не items а update
 Может не там вставлен редирект? Код оригенальный. Я ток под шопос поправил.
 
 case 'update':
 
 $lang = sizeof($languages);
 $ids = count($_POST['item_id']);
 $delete_ids = count($_POST['delete']);
 
 // Удаляем
 if (isset($_POST['delete'])) {
 
 for ($a = 0; $a < $delete_ids; $a++) {
 
 $delete_array = $_POST['delete'];
 
 os_db_query("DELETE FROM ".TABLE_ANY_ITEMS." WHERE item_id = '".$delete_array."'");
 os_db_query("DELETE FROM ".TABLE_ANY_ITEMS_DESCRIPTION." WHERE item_id = '".$delete_array."'");
 
 }
 
 // Обновляем
 } elseif (empty($_POST['delete'])) {
 
 for ($b = 0; $b < $ids; $b++) {
 
 $item_id  = $_POST['item_id'];
 $color    = $_POST['color'.$item_id];
 $position = $_POST['pos'.$item_id];
 
 for ($i = 0; $i < $lang; $i++) {
 
 $languages_id = $languages['id'];
 $title = os_db_prepare_input($_POST['title']);
 
 os_db_query("UPDATE ".TABLE_ANY_ITEMS_DESCRIPTION." SET title = '".$title."' WHERE item_id = '".$item_id."' AND language_id = '".$languages_id."'");
 
 }
 os_db_query("UPDATE ".TABLE_ANY_ITEMS." SET color = '".$color."', position = '".$position."' WHERE item_id = '".$item_id."'");
 
 
 }
 @os_redirect(os_href_link(FILENAME_PLUGINS_PAGE, 'main_page=any_manager_page&any='.(int)$_GET['any'].'&action=items'));
 }
 
 break;
 
 
 И вот такой код страницы редактирования\обновления\удаления... не важно.
 
 if ($_GET['action'] == 'items') {
 // LOAD QUESTION
 $any_question_query = os_db_query("SELECT title FROM ".TABLE_ANY_DESCRIPTION." WHERE id = '".(int)$_GET['any']."' AND language_id = '".(int)$_SESSION['languages_id']."'");
 $any_question = os_db_fetch_array($any_question_query);
 
 // Editieren
 $items_id_array = array();
 $count_languages = sizeof($languages);
 ?>
 <table width="98%" border="0" cellspacing="1" cellpadding="2" align="center">
 <tr>
 <td class="any_heading_question"><?php echo $any_question['title'];?></td>
 </tr>
 </table>
 <table width="98%" border="0" cellspacing="1" cellpadding="3" align="center">
 <tr>
 <td class="header_any_item"><?php echo TABLE_HEADING_EDITING;?></td>
 </tr>
 </table>
 
 <?php
 echo os_draw_form('items', FILENAME_PLUGINS_PAGE, 'main_page=any_manager_page&any='.(int)$_GET['any'].'&action=update','post','');
 ?>
 <table border="0" cellspacing="1" cellpadding="2" width="98%" align="center" style="border:1px solid #cccccc;">
 <?php
 
 $any_items_query = os_db_query("SELECT i.item_id, i.color, i.position, id.title FROM ".TABLE_ANY_ITEMS." i, ".TABLE_ANY_ITEMS_DESCRIPTION." id WHERE i.any_id = '".(int)$_GET['any']."' AND i.item_id = id.item_id AND id.language_id = '".(int)$_SESSION['languages_id']."' ORDER BY i.position ASC");
 
 $count_items_query = os_db_query("SELECT item_id FROM ".TABLE_ANY_ITEMS." WHERE any_id = '".(int)$_GET['any']."' ORDER BY position ASC");
 
 while ($count_items = os_db_fetch_array($count_items_query)) {
 $items_id_array[] = array('id' => $count_items['item_id']);
 }
 $count_array = count($items_id_array);
 
 for ($a = 0; $a < $count_array; $a++) {
 
 for($i = 0; $i < $count_languages; $i++) {
 
 $show_items_query = os_db_query("SELECT i.item_id, i.color, i.position, i.hits, id.title, id.language_id FROM ".TABLE_ANY_ITEMS." i, ".TABLE_ANY_ITEMS_DESCRIPTION." id WHERE i.any_id = '".(int)$_GET['any']."' AND i.item_id = id.item_id AND id.language_id = '".(int)$languages['id']."' AND id.item_id = '".$items_id_array['id']."'");
 $change_items = os_db_fetch_array($show_items_query);
 
 ?>
 <tr bgcolor="#e2e2e2">
 <td class="any_heading" align="center" width="40">
 <?php
 echo os_draw_hidden_field('item_id[]',$change_items['item_id']);
 echo $languages['code'].':';
 ?>
 </td>
 <td class="main"><?php echo os_draw_input_field('title['.$languages['id'].']['.$items_id_array['id'].']', $change_items['title'],'class="any_input" size="70"');?></td>
 <?php
 if($i+1 == $count_languages){
 ?>
 </tr>
 <tr bgcolor="#eeeeee">
 <td colspan="3">
 <table>
 <tr>
 <td class="any_content"><?php echo TEXT_STATUS_DELETE;?></td>
 <td class="any_content"><?php echo os_draw_selection_field('delete[]', 'checkbox', $items_id_array['id']);?></td>
 <td class="any_content"><?php echo ITEM_POSITION; ?></td>
 <td class="any_content"><?php echo os_draw_input_field('pos'.$items_id_array['id'], $change_items['position'], 'class="any_input" size="2"');?></td>
 <td class="any_content"><?php echo ITEM_COLOR; ?></td>
 <td class="any_content">
 <?php echo os_draw_input_field('color'.$items_id_array['id'], $change_items['color'], 'class="any_input" size="8"');?>
 <A HREF="#" style="height:20px;background-color:<?php echo ($change_items['color'] ? $change_items['color'] : '#cc0000');?>;" onClick="cp<?php echo $items_id_array['id'];?>.select(document.forms.color<?php echo $items_id_array['id'];?>,'pick<?php echo $items_id_array['id'];?>');return false;" NAME="pick<?php echo $items_id_array['id'];?>" ID="pick<?php echo $items_id_array['id'];?>">   </A>
 <SCRIPT LANGUAGE="JavaScript">cp.writeDiv();</SCRIPT>
 </td>
 <td class="any_content"><?php echo ANY_HITS; ?></td>
 <td class="any_content"><?php echo os_draw_input_field('hits'.$items_id_array['id'], $change_items['hits'], 'style="text-align:center;" class="any_input" size="3"');?></td>
 </tr>
 </table>
 
 </td>
 <?php } ?>
 </tr>
 <?php
 if($change_items['language_id'] == $count_languages){
 ?>
 <tr>
 <td class="header_empty" colspan="3"></td>
 </tr>
 <?php }}} ?>
 <tr>
 <td colspan="2"><?php echo '<input type="submit" style="border:1px solid #999999;" value="'.TEXT_UPDATE.'">';?></td>
 </tr>
 </table>
 </form>
 <br />
 
 <!-- NEW -->
 <fieldset>
 <legend class="any_heading_fieldset"><b><?php echo TABLE_HEADING_EDITING_NEW;?></b></legend>
 <?php
 echo os_draw_form('item', FILENAME_PLUGINS_PAGE, 'main_page=any_manager_page&any='.(int)$_GET['any'].'&action=new_item','post','');
 ?>
 <table border="0" cellspacing="1" cellpadding="2" width="100%" align="center">
 <?php
 for ($i = 0; $i < $count_languages; $i ++) {
 ?>
 <tr bgcolor="#e2e2e2">
 <td class="any_heading" align="center" width="40"><?php echo $languages['code'].':';?></td>
 <td class="any_content"><?php	echo os_draw_input_field('title['.$languages['id'].']','','class="any_input" size="70"');?></td>
 </tr>
 <?php } ?>
 <tr bgcolor="#eeeeee">
 <td class="any_content" colspan="2">
 <table>
 <tr>
 <td class="any_content"><?php echo ITEM_POSITION; ?></td>
 <td class="any_content"><?php echo os_draw_input_field('position', '', 'class="any_input" size="2"');?></td>
 <td class="any_content"><?php echo ITEM_COLOR; ?></td>
 <td class="any_content">
 <?php echo os_draw_input_field('color100', '', 'class="any_input" size="8"');?>
 <A HREF="#" style="height:20px;background-color:#cc0000;" onClick="cp100.select(document.forms.color100,'pick100');return false;" NAME="pick100" ID="pick100">   </A>
 <SCRIPT LANGUAGE="JavaScript">cp.writeDiv()</SCRIPT>
 </td>
 </tr>
 </table>
 </td>
 </tr>
 <tr>
 <td class="header_empty" colspan="3"></td>
 </tr>
 <tr>
 <td colspan="2"><?php echo '<input type="submit" style="border:1px solid #999999;" value="'.TEXT_SAVE.'">';?></td>
 </tr>
 </table>
 </form>
 </fieldset>
 
 <?php
 }
 
 Постоянно не могу понять как в плагинах правильно редиректить. Все время косяки у меня))
 
 Помогите, пожалуйста!)
 
 
 
 .'&action=items'));Которая по идее после обновления должна редиректить обратно на страницу редактирования - items
 но не работает. в заголовке не items а update
 Может не там вставлен редирект?
 
 
 Может, и не там.
 Может, редирект не единственный.
 Может,  еще  какие причины.
 
 Если дадите FTP - могу посмотреть.
 
 да я локально делаю.ща тогда залью на сервер
 
 В админке в плагинах редирект не работает В ПРИНЦИПЕ. Причина в том, что вызов отдельных плагинов происходит в  admin/plugins_page.php  уже после того, как часть страницы выведена (верхнее меню, например). Чтобы работало, надо перерабатывать admin/plugins_page.php
 
 Плохо это.
 Спасибо, что посмотрели!
 Тогда придумаю, что-то другое вместо редиректа
 
 
  add_action('page_admin', 'тратата);
 function тратата()
 {
 
 }
 
 
 указать просто page, а не main_page
 
 @os_redirect(os_href_link(FILENAME_PLUGINS_PAGE, 'main_page=any_manager_page&any='.(int)$_GET['any'].'&action=items'));
 
 а кнопки формируются так
 
 из плагина seo_url
 
   function seo_url_product_generator_readonly(){
 _e('<center>'.add_button('page', 'page_admin_seo_url', 'Генератор ЧПУ для товаров' ).'</center>');
 _e('<center>'.add_button('page', 'page_admin_seo_url_cat', 'Генератор ЧПУ для категорий' ).'</center>');
 }
 
 В админке в плагинах редирект не работает В ПРИНЦИПЕ.
 Причина в том, что вызов отдельных плагинов происходит в  admin/plugins_page.php  уже после того, как часть страницы выведена (верхнее меню, например). Чтобы работало, надо перерабатывать admin/plugins_page.php
 
 
 нет
 
 просто есть два вида страниц
 
 когда выводится уже используя оформления админки. тоесть после меню и всего остального
 
 и когда без вывода оформления.
 
 без вывода оформления как раз и будет работать редирект
 
 смотреть плагин seo_url
 
 Все заработало. Как просто оказалось.Евгений, grig спасибо вам! Еще один плагинчик будет...
 
 просто есть два вида страниц
 
 когда выводится уже используя оформления админки. тоесть после меню и всего остального
 
 и когда без вывода оформления.
 
 без вывода оформления как раз и будет работать редирект
 
 смотреть плагин seo_url
 
 
 В чем еще разница между видами?
 И почему не использовать только один вид?
 
 
 Источник 
 
 |