/** * Рендерит статью, получая ее по 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]); }
/** @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) {
<?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
/** * Генерация 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; }