добавить в избранное

Делимся интересными и полезными решениями
Аватара пользователя
duncan
Наш человек
Сообщения: 255
Зарегистрирован: 24 авг 2015, 22:44
Откуда: місто Лева
Благодарил (а): 37 раз
Поблагодарили: 17 раз

добавить в избранное

Сообщение duncan » 29 дек 2017, 13:07

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

1 сисблок, кнопка на странице:

Код: Выделить всё

<?php
// КНОПКА "ДОДАТИ"
// якщо було відправлено форму
if(isset($_POST['submit'])) {
   // якщо сесія уже існує
   if(isset($_SESSION['id'])) {
      // просвоюю змінній дані зі сесії
      $id = $_SESSION['id'];
      // перевіряю чи айді, яке відправлене, не присутнє у рядку зі сесії
      if(strpos($id, get_current_document_id()) === false){
         // якщо не присутнє, тоді конкатеную у рядок нову айдішку в дужках
         // дужки тре для того, щоб потім можна було окремі айдішки витягати
         if(isset($_SESSION['id'])) {
            $_SESSION['id'] .= '(' .(int)$_POST['id'] . ')';
            // рефреш
            header('Location: ' . canonical());
         } else {
            // якийсь алерт, що такий док уже є
         }
      }
   } else {
      // якщо не існує, створюємо нову сесію і прписвоюємо айді
      $_SESSION['id'] = '(' . (int)$_POST['id'] . ')';
      // рефреш
      header('Location: ' . canonical());
   }
}

?>
<form method="post">
    <input type="hidden" name="id" value="[tag:docid]" >
    <input type="submit" name="submit" title="додати в улюблене">
</form>


2 сисблок, вывод всех "птичек" и возможность их удаления со страницы:

Код: Выделить всё

<?php
// 2
// ОЧИСТКА
if(isset($_POST['out'])){
    unset($_SESSION['id']);
    session_destroy();
   // робимо рефреш на головну
   header('Location:' . get_home_link());
}

// ВИДАЛЕННЯ ТОВАРУ
// якщо прийшов ПОСТ-запит на видалення
if(isset($_POST['item'])) {
   
   // якщо сесія існує і прийшла айдішка конкретного товару
   if(isset($_SESSION['id']) && isset($_POST['item'])) {
      
      // поміщаємо айдішку в дужках у змінну
      $item = '(' . (int)$_POST['item'] . ')';
      
      // присвоїти сесії новий рядок (без видаленого айтіма)
      $_SESSION['id'] = str_replace($item, '', $_SESSION['id']);
      
      // перезавантажуємо сторінку, щоби не було повторного відправлення
      header('Location: ' . canonical());
      
   } else {
      
      // або робимо рефреш на головну
      header('Location:' . get_home_link());
      
   }
}

// ВИВІД УСІХ ТОВАРІВ
if(isset($_SESSION['id'])) {

   // видаляємо ")" і розбиваємо рядок по "("
   $array = str_replace(')', '', $_SESSION['id']);
   $array = explode("(", $array);
   // видалив 1 порожній елемент
   array_shift($array);

echo '<p>кількість: ', count($array), '</p>';
   
echo '<ul>';
foreach($array as $val) {
   
// витягаю шлях до картинки
$img = explode('"', get_field(2, $val, 0));

echo '<li>',
      '<p><a href="', get_document($val, 'document_alias'), '">', get_document($val, 'document_title'), '</a></p>',
      '<p><img src="', $img[1], '" alt=""></p>',
      '<form method="post"> <input type="hidden" name="item" value="', $val, '"> <p><input type="submit" value="видалити ', get_document($val, 'document_title'), '"></p> </form>',
   '</li>';
}
echo '</ul>';
   
echo '
   <form method="post"> <input type="submit" name="out" value="видалити усе"> </form> або просто перейти на <a href="'. get_home_link() .'"> головну сторінку</a>
   
';
}

?>


3 сисблок, маркер, который показывает наличие/отсутствие отмеченных "птичками" документов

Код: Выделить всё

<?php 
// 3
// "гаряча кнопка", показує кількість улюблених сторінок

if(isset($_SESSION['id'])) {
   
   // видаляємо ")" і розбиваємо рядок по "("
   $array = str_replace(')', '', $_SESSION['id']);
   $array = explode("(", $array);
   // видалив 1 порожній елемент
   array_shift($array);
   
   echo '<a href="', get_home_link(),'wishlist">в улюбленому: </a>', count($array), ' стр.';
} else {
   echo '<span>в улюбленому: </span> 0 стр.';
}
?>


если кто знает шо получше -- пишите)

Вернуться в «Интересные решения»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость