Esempio n. 1
0
 /**
  * Рендерит статью, получая ее по ID
  *
  * Если необходимо, вставляет дополнительные материалы: дополнения, рекламу и т.д.
  *
  * @return string
  * @throws NotFoundHttpException
  * @throws \Exception
  */
 public function actionFull()
 {
     // Определяем Id
     // Если это статья-категория, берем из params, иначе из request->get
     $postId = array_key_exists('category_art', Yii::$app->params) ? Yii::$app->params['category_art'] : Yii::$app->request->get('id');
     $post = Post::findOne(['id' => $postId, 'approve' => Post::APPROVED]);
     if (is_null($post)) {
         throw new NotFoundHttpException('Статьи с данным адресом на сайте не существует. Проверьте правильно ли вы скопировали или ввели адрес в адресную строку. Если вы перешли на эту страницу по ссылке с данного сайта, сообщите пожалуйста о неработающей ссылке нам с помощью обратной связи.');
     }
     // Записываем id текущей категории в виде массива в глобальный параметр
     Yii::$app->params['category'] = [$post->category_id];
     $model = '';
     // Добавление комментариев
     if (!Yii::$app->user->isGuest) {
         $model = new CommentForm();
         // Значение для hidden user_id
         $model->user_id = Yii::$app->user->identity->getId();
         $model->post_id = $post->id;
         if ($model->load(Yii::$app->request->post())) {
             if ($id = $model->addComment()) {
                 Yii::$app->session->setFlash('comment-success', $id);
                 return $this->refresh();
             } else {
                 Yii::$app->session->setFlash('comment-error');
             }
         }
     }
     // Поиск и замена ссылок на другие страницы сайта (ссылки в формате [link=<id_статьи>]<текст_ссылки>[/link])
     $this->replaceLinks($post);
     // Применение дополнительных методов для обработки полного текста статей
     if ($m = GlobalHelper::getCategories()[$post->category_id]['add_method']) {
         $methodName = 'full' . ucfirst($m);
         if (method_exists('app\\components\\PostAdditions', $methodName)) {
             PostAdditions::$methodName($post);
         }
     }
     // Социальные кнопки
     $post->full .= SocialButtonsWidget::widget();
     // Вставка рекламных материалов
     $this->insertAdvert($post);
     // Обновление количества просмотров статьи
     $post->updateCounters(['views' => 1]);
     // Если статья-категория, используем представление full_cat.php, иначе full.php
     $viewFile = array_key_exists('category_art', Yii::$app->params) ? 'full_cat' : 'full';
     return $this->render($viewFile, ['post' => $post, 'model' => $model]);
 }
Esempio n. 2
0
/** @var \yii\data\Pagination $pages */
use app\components\MyLinkPager;
use common\components\helpers\GlobalHelper;
if ($pages->page > 0 || array_key_exists('category', Yii::$app->params)) {
    $this->title = Yii::$app->params['site']['shortTitle'];
} else {
    $this->title = Yii::$app->params['site']['title'];
}
// Если не первая страница, добавляем в начало <title>
if ($pages->page > 0) {
    $this->title = 'Страница ' . ($pages->page + 1) . '. ' . $this->title;
}
// Если задана категория, добавляем в начало <title> имя категории
if (array_key_exists('category', Yii::$app->params)) {
    $catName = GlobalHelper::getCategories()[Yii::$app->params['category'][0]]['name'];
    $this->title = $catName . ' - ' . $this->title;
}
// Если задана дата
if (array_key_exists('date', Yii::$app->params)) {
    $this->title = 'Статьи за ' . Yii::$app->params['date'] . ' - ' . $this->title;
}
?>


<?php 
// Если заданы подкатегории, которые выводятся на первых страницах категорий, выводим их перед анонсами статей
if ($subCategories) {
    echo $subCategories;
}
foreach ($posts as $post) {
Esempio n. 3
0
<?php

/* @var $this yii\web\View */
use common\components\helpers\GlobalHelper;
?>

<?php 
$allCategories = GlobalHelper::getCategories();
foreach ($categories as $categoryId) {
    // Получаем Url категории по ее ID
    $cat = GlobalHelper::getCategoryUrlById($categoryId);
    $link = '/' . $cat . '/';
    ?>
    <div id="content-item">
        <div id="content-item-top" class="content-item-blue black_link"><span>Подраздел</span> <a href="<?php 
    echo $link;
    ?>
"><?php 
    echo $allCategories[$categoryId]['name'];
    ?>
</a></div>
        <div id="content-item-content">
            <div id="content-small-10" class="img120">
                <?php 
    echo $allCategories[$categoryId]['description'];
    ?>
            </div>
            <div class="clear"></div>
        </div>
    </div>
    <?php 
Esempio n. 4
0
 /**
  * Генерация XML карты сайта
  *
  * @return string
  */
 public function generateSitemap()
 {
     $xml_map = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
     // Главная страница
     $xml_map .= "\n\t\t<url>\n\t\t\t<loc>" . Yii::$app->params['frontendBaseUrl'] . "</loc>\n\t\t\t<lastmod>" . date("Y-m-d") . "</lastmod>\n\t\t\t<changefreq>daily</changefreq>\n\t\t\t<priority>1.0</priority>\n\t\t</url>";
     // Категории
     $categories = GlobalHelper::getCategories();
     foreach ($categories as $mass) {
         $id = $mass['id'];
         $xml_name = GlobalHelper::getCategoryUrlById($id);
         $xml_date = date("Y-m-d");
         $xml_map .= "\n\t\t<url>\n\t\t\t<loc>" . Yii::$app->params['frontendBaseUrl'] . $xml_name . "/</loc>\n\t\t\t<lastmod>" . $xml_date . "</lastmod>\n\t\t\t<changefreq>daily</changefreq>\n\t\t\t<priority>0.8</priority>\n\t\t</url>";
     }
     // Статьи
     $posts = Post::find()->where(['approve' => '1'])->andWhere(['<=', 'date', date('Y-m-d')])->andWhere(['!=', 'category_art', 1])->orderBy('date')->all();
     //var_dump($posts);
     foreach ($posts as $post) {
         $xml_map .= "\n\t\t<url>\n\t\t\t<loc>" . $post->absoluteLink . "</loc>\n\t\t\t<lastmod>" . date("Y-m-d", strtotime($post->date)) . "</lastmod>\n\t\t\t<changefreq>weekly</changefreq>\n\t\t\t<priority>0.6</priority>\n\t\t</url>";
     }
     $xml_map .= "\n</urlset>";
     return $xml_map;
 }