Codeigniter'da Popup Modülü İçin Oluşturulan Cookie Mantığı

By Admin
In BackEnd
17/Eylül/2020
Okuma Süresi: 3 dk.

Merhaba sevgili okur,

1- Admin panelde popup oluştururken veritabanına bir adet popup_unique_id adında bir sütun açarız. Bunu unique_id() ile yapabiliriz. Her popup için bu şekilde eşsiz bir değer üretmiş oluruz.

2- View kısmında ise includes klasörümüzün içine bir popup.php dosyası oluşturuyoruz. Bu dosyayı da include_script'in içinde çağırıyoruz ki bütün sayfalarda çağrılmış olsun. Bu dosyanın kodlarını paylaşmadan önce helperda oluşturduğumuz get_popup_service fonksiyonunu paylaşayım;


  $ci =& get_instance();
     $ci->load->model("Popup_model");
     $sonuc = $ci->Popup_model->get(
         array(
             "isActive" => 1,
             "page" => $page
         )
     );
     return (!empty($sonuc)) ? $sonuc : false;

3- popup.php'de ise html olarak modal kodları geliyor. Ben o modalı direkt bootstrap'ın kendi sitesinden aldım. Yalnız sayfanın başında bir if kontrolü yapmak lazım. Örnek olarak biz popupımızı anasayfada gösterilsin olarak ayarlamışsak bunu bir üstte yazdığım get_popup_service ile teyit ediyoruz. Gelen veriyi $popup değişkenine atıyoruz. Eğer anasayfa için tanımlı bir popup varsa bu popup'a ait unique_id değerini alıp get_cookie içerisine yazıyoruz, yani bu isimle oluşturulmuş bir cookie var mı kullanıcının bilgisayarında git bir ona bak diyoruz. Bildiğiniz üzere cookie'ler kullanıcı tarafında oluşturuluyor ve onların bilgisayarlarında saklanıyor. Eğer bu unique_id ile oluşturulmuş bir cookie varsa bize popup'ı gösterme diyecez. Çünkü o isimde bir cookie'nin olması, kullanıcının daha önce en az 1 defa "bir daha gösterme" butonuna bastığını gösterir bize. Eğer true değilse kısmından sonra modal kodları geliyordu, o yüzden o kısmı hiç buraya kopyalamadım. 

$popup = get_popup_service($viewFolder);
if ($popup) {
    $popup_cookie = get_cookie($popup->popup_unique_id);
    if ($popup_cookie != "true") {
        

4- Yalnız atlanmaması gereken bir konu da bu popup.php dosyasında modal kodlarının altına bu modal'ı sayfa her yenilendiğinde gösterecek yani tetikleyecek bir js scripti lazım;


  $(document).ready(function () {
                $("#popup_modal").modal("show");
            });
    

5- custom.js dosyamız şu şekilde;
 

$(document).ready(function () {
    $(".neverShowAgainBtn").click(function () {
        var $url = $(this).data("url");
        var $id = $(this).data("popup-id");

        var $data = {
            url: $url,
            popup_id: $id
        }
        var csrf_key = $(this).data("csrf-key");
        var csrf_value = $(this).data("csrf-value");
        $data[csrf_key] = csrf_value;
        $.post($url, $data, function () {
        })
    });
});

6- attr olarak belirttiğimiz değerleri burada çekip jquery post ile belirttiğimiz controller metoduna gönderiyoruz.

7- Bu controllerda ise gelen eşsiz popup-id değeriyle de bir cookie oluşturuyoruz şu şekilde;

 

    public function popup_never_show_again()
            {
               $popup_id = $this->input->post("popup_id");
               set_cookie($popup_id, "true", 60*60*24*365);
            }

 


Owl Carousel'de slider'ın altındaki butonların (owl-dots) görünmemesi
Codeigniter'da zip kütüphanesindeki read_file fonksiyonunda yaşanan FCPATH dosya yolu sorunu