Категории
[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
В чем еще разница между видами? И почему не использовать только один вид?
Источник
|