Beispiel #1
0
    public static function generateSitemap()
    {
        require_once _PS_MODULE_DIR_ . 'psblog/classes/BlogCategory.php';
        require_once _PS_MODULE_DIR_ . 'psblog/classes/BlogPost.php';
        $filename = _PS_MODULE_DIR_ . 'psblog/sitemap-blog.xml';
        if (!is_writable($filename)) {
            return FALSE;
        }
        $sql = 'SELECT s.id_shop, su.domain, su.domain_ssl, CONCAT(su.physical_uri, su.virtual_uri) as uri
				FROM ' . _DB_PREFIX_ . 'shop s
				INNER JOIN ' . _DB_PREFIX_ . 'shop_url su ON s.id_shop = su.id_shop AND su.main = 1
				WHERE s.active = 1 AND s.deleted = 0 AND su.active = 1';
        if (!($result = Db::getInstance()->executeS($sql))) {
            return false;
        }
        $xml = simplexml_load_file($filename);
        unset($xml->url);
        $sxe = new SimpleXMLElement($xml->asXML());
        foreach ($result as $row) {
            $shopContext = Context::getContext()->cloneContext();
            $shopContext->shop = new Shop($row['id_shop']);
            $languages = Language::getLanguages(true, $row['id_shop']);
            foreach ($languages as $l) {
                $shopContext->language->id_lang = $l['id_lang'];
                $shopContext->language->iso_code = $l['iso_code'];
                $url = $sxe->addChild('url');
                $listlink = BlogPost::linkList(null, $shopContext);
                $listlink = str_replace('&', '&', $listlink);
                $url->addChild('loc', $listlink);
                $url->addChild('priority', '0.7');
                $url->addChild('changefreq', 'weekly');
            }
            unset($shopContext->language);
            $shopPosts = BlogPost::listPosts($shopContext, true);
            foreach ($shopPosts as $post) {
                $postlink = BlogPost::linkPost($post['id_blog_post'], $post['link_rewrite'], $post['id_lang'], $shopContext);
                $postlink = str_replace('&', '&', $postlink);
                $url = $sxe->addChild('url');
                $url->addChild('loc', $postlink);
                $url->addChild('priority', '0.6');
                $url->addChild('changefreq', 'monthly');
            }
            $shopCategories = BlogCategory::listCategories($shopContext, true);
            foreach ($shopCategories as $cat) {
                $catlink = BlogCategory::linkCategory($cat['id_blog_category'], $cat['link_rewrite'], $cat['id_lang'], null, $shopContext);
                $catlink = str_replace('&', '&', $catlink);
                $url = $sxe->addChild('url');
                $url->addChild('loc', $catlink);
                $url->addChild('priority', '0.6');
                $url->addChild('changefreq', 'monthly');
            }
            $sxe->asXML($filename);
        }
    }
 private function calculHookCommon($params)
 {
     $pref = array_merge(Psblog::getPreferences(), self::getPreferences());
     $img_path = rtrim($pref['img_save_path'], '/') . '/';
     $list = BlogPost::listPosts(true, true, 0, intval($pref['block_limit_items']));
     if ($list) {
         $i = 0;
         foreach ($list as $val) {
             $list[$i]['link'] = BlogPost::linkPost($val['id_blog_post'], $val['link_rewrite'], $val['id_lang']);
             $i++;
         }
     }
     $this->smarty->assign(array('last_post_list' => $list, 'blog_conf' => $pref, 'linkPosts' => BlogPost::linkList(), 'img_path' => _PS_BASE_URL_ . __PS_BASE_URI__ . $img_path, 'posts_rss_url' => BlogPost::linkRss()));
     return true;
 }
Beispiel #3
0
 public function hookProductTabContent($params)
 {
     $id_product = (int) $_GET['id_product'];
     if (!$id_product) {
         return false;
     }
     require_once dirname(__FILE__) . "/classes/BlogPost.php";
     $list = BlogPost::listPosts(true, true, null, null, false, null, $id_product, null);
     if ($list) {
         $i = 0;
         foreach ($list as $val) {
             $list[$i]['link'] = BlogPost::linkPost($val['id_blog_post'], $val['link_rewrite'], $val['id_lang']);
             $i++;
         }
     }
     $this->smarty->assign(array('post_product_list' => $list));
     return $this->display(__FILE__, 'views/templates/front/product-tabcontent.tpl');
 }
Beispiel #4
0
<?php 
$list = BlogPost::listPosts(true, true, null, null, false, $id_category, null, null);
foreach ($list as $item) {
    $post = new BlogPost($item['id_blog_post']);
    echo "\t\t<item>\n";
    echo "\t\t\t<title><![CDATA[" . $post->title . "]]></title>\n";
    echo "\t\t\t<description>";
    $img_relative = rtrim($conf['img_save_path'], '/') . "/";
    $cdata = true;
    if ($post->default_img['img_name'] != '' && is_file(_PS_ROOT_DIR_ . '/' . $img_relative . 'list/' . $post->default_img['img_name'])) {
        echo '<![CDATA[<img src="' . _PS_BASE_URL_ . __PS_BASE_URI__ . $img_relative . 'list/' . $post->default_img['img_name'] . '" title="' . $post->title . '" alt="thumb" />';
        $cdata = false;
    }
    if ($cdata) {
        echo "<![CDATA[";
    }
    if ($conf['rss_display'] == 'content') {
        $desc = $post->content;
    } else {
        $desc = "<p>" . $post->excerpt . "</p>";
    }
    echo $desc . "]]></description>\n";
    $link = BlogPost::linkPost($post->id, $post->link_rewrite, $post->id_lang);
    echo "\t\t\t<link><![CDATA[" . htmlspecialchars($link) . "]]></link>\n";
    echo "<pubDate>" . $post->date_on . "</pubDate>";
    echo "\t\t</item>\n";
}
?>
		
	</channel>
</rss>
Beispiel #5
0
 public function displayPost()
 {
     $id_lang = $this->context->language->id;
     $id_shop = $this->context->shop->id;
     if (is_null($this->id_post) || !is_numeric($this->id_post)) {
         return $this->displayList();
     }
     $post = new BlogPost($this->id_post);
     if ($post->status == 'published' && $post->isAssociatedToShop($id_shop)) {
         //comment submit
         if (Tools::isSubmit('submitMessage') && $this->conf['comment_active'] && $post->allow_comments) {
             $comment = new BlogComment();
             try {
                 $message = trim(strip_tags(Tools::getValue('blog_comment')));
                 $comment->id_blog_post = $this->id_post;
                 $comment->customer_name = pSQL(Tools::getValue('customer_name'));
                 if ($message == '' || strlen($comment->customer_name) < (int) $this->conf['comment_name_min_length']) {
                     throw new Exception('error_input');
                 }
                 if (!Validate::isMessage($message) || !Validate::isGenericName($comment->customer_name)) {
                     throw new Exception('error_input_invalid');
                 }
                 $comment->content = $message;
                 $id_customer = (int) $this->context->customer->id;
                 $id_guest = (int) $this->context->cookie->id_guest;
                 if (!$this->conf['comment_guest'] && empty($id_customer)) {
                     throw new Exception('error_guest');
                 }
                 //get last comment from customer
                 $customerComment = BlogComment::getByCustomer($this->id_post, $id_customer, true, $id_guest);
                 $comment->id_customer = $id_customer;
                 $comment->id_guest = $id_guest;
                 $comment->id_lang = $id_lang;
                 $comment->id_shop = $id_shop;
                 if ($customerComment['content'] == $comment->content) {
                     throw new Exception('error_already');
                 }
                 if ($customerComment && strtotime($customerComment['date_add']) + (int) $this->conf['comment_min_time'] > time()) {
                     throw new Exception('error_delay');
                 }
                 $comment->active = $this->conf['comment_moderate'] ? 0 : 1;
                 $comment->save();
                 $this->context->smarty->assign('psblog_confirmation', true);
             } catch (Exception $e) {
                 $comment->content = Tools::getValue('blog_comment');
                 $comment->customer_name = Tools::getValue('customer_name');
                 $this->context->smarty->assign('psblog_error', $e->getMessage());
                 $this->context->smarty->assign('comment', $comment);
             }
         }
         /*             * * view article ** */
         $images = $post->getImages(false);
         $categories = $post->listCategories(true);
         $products = $post->getProducts(true);
         $related = $post->listRelated(true, true);
         if (is_array($related) && count($related) > 0) {
             $i = 0;
             foreach ($related as $val) {
                 $related[$i]['link'] = BlogPost::linkPost($val['id_blog_post'], $val['link_rewrite'], $val['id_lang']);
                 $i++;
             }
         }
         if (is_array($products) && count($products) > 0) {
             $i = 0;
             foreach ($products as $p) {
                 $product = new Product($p['id_product'], false, $id_lang);
                 $products[$i]['link'] = $this->context->link->getProductLink($product);
                 $products[$i]['imageLink'] = $this->context->link->getImageLink($p['link_rewrite'], $p['id_product'] . '-' . $p['id_image'], $this->conf['product_img_format']);
                 $i++;
             }
         }
         /* SEO metas */
         $curr_meta_title = $this->context->smarty->getTemplateVars('meta_title');
         $this->context->smarty->assign(array('meta_title' => $curr_meta_title . ' - ' . $post->title, 'meta_description' => $post->meta_description, 'meta_keywords' => $post->meta_keywords));
         if ($this->conf['view_display_popin'] == 1) {
             $this->addjqueryPlugin('fancybox');
             $this->addJS($this->module->getPathUri() . 'js/popin.js');
         }
         if ($categories) {
             $i = 0;
             foreach ($categories as $cat) {
                 $categories[$i]['link'] = BlogCategory::linkCategory($cat['id_blog_category'], $cat['link_rewrite'], $cat['id_lang']);
                 $i++;
             }
         }
         $comments = $post->getComments();
         $this->context->smarty->assign(array('post_images' => $images, 'post_products' => $products, 'post_related' => $related, 'post_categories' => $categories, 'post_comments' => $comments));
     } else {
         $post->status = 'suspended';
     }
     $this->context->smarty->assign('post', $post);
     $this->setTemplate('view.tpl');
 }