Категории

[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'];?>">&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;</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


В чем еще разница между видами?
И почему не использовать только один вид?


Источник



Copyright ShopOS