/** * @param $model - модель таблицы tbl_pages_tabs * Возращает HTML код блока вкладки */ public function getTemplate($model) { $resultHTML = ''; //Шаблоны $template = array(1 => ' %description% %module_value% ', 2 => ' %description% %module_value% '); //Общий шаблон switch ($model->site_module_id) { case 1: //Новости $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container"> %module_value% </div> </main> </div> '); break; case 6: //Статьи $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container"> %module_value% </div> </main> </div> '); break; case 16: //Отзывы $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container"> %module_value% </div> </main> </div> '); break; case 7: //Вопросы-ответы $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container faq" style="background: #ffffff;"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container faq"> %module_value% </div> </main> </div> '); break; case 10: //Врачи $template = array(1 => ' <style> #carusel20 .carusel-left {background-color: #fff;} #carusel20 .carusel-right {background-color: #fff;} </style> <div class="doctor-slide"> <main role="main" class="all" style="background:#fff"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_doc" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> ', 2 => ' <div class="doctor-slide"> <main role="main" class="all"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="news-block gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_doc" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> '); break; case 11: //Фотогалерея $template = array(1 => ' <style> #carusel20 .carusel-left {background-color: #fff;} #carusel20 .carusel-right {background-color: #fff;} #carusel20_photo .owl-prev {margin-top:-80px;} #carusel20_photo .owl-next {margin-top:-80px;} </style> <div class="doctor-slide"> <main role="main" class="all" style="background:#fff"> <div class="container"> <h2 class="main-caption mg-bottom-24 caption-big">%title%</h2> </div> </main> <div class="gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_photo" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> ', 2 => ' <style> #carusel20_photo .owl-prev {margin-top:-80px;} #carusel20_photo .owl-next {margin-top:-80px;} </style> <div class="doctor-slide"> <main role="main" class="all"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="news-block gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_photo" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> '); break; case 12: //До и После $template = array(1 => ' <main role="main" class="all" style="background:#fff"> <div class="container"> <h2 class="main-caption mg-bottom-24 caption-big">%title%</h2> </div> </main> <div class="slide-after mg-bottom-20 mg-top-15"> <main class="all" role="main"> %module_value% </main> </div> ', 2 => ' <div class="news-block gray-bg"> <main role="main" class="all"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="slide-after mg-bottom-20 mg-top-15"> <main class="all" role="main"> %module_value% </main> </div> </div> '); break; } //Получаю темплейт для модуля $template_tmp = $template[$model->template_id]; //Для врачей %module_value% - это карусель, для других вариантов - повторяем темплейт для каждого элемента $module_value_array = array(); $module_count_elements = 0; foreach (explode("|", $model->site_module_value) as $data) { if (empty($data)) { continue; } ++$module_count_elements; $module_value_array[$data] = $data; } //Шаблоны элемента %module_value% switch ($model->site_module_id) { case 1: //Новости $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = NewsGroup::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (News::model()->findAll('group_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $tmp_module_value .= ' <div class="ot"> <span href="#">' . $modelData->name . ' - ' . date("d.m.Y", strtotime($modelElements->maindate)) . '</span></span><BR> ' . $modelElements->name . ' '; if (!empty($modelElements->brieftext)) { $tmp_module_value .= '<BR>' . $modelElements->brieftext; } $tmp_module_value .= '</div>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" href="/news/' . $modelData->url . '">Все новости</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 6: //Статьи $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = ArticleRubrics::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (ArticleElements::model()->findAll('parent_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $tmp_module_value .= ' <div class="review_block"> <span>' . $modelElements->name . ' - ' . date("d.m.Y", strtotime($modelElements->maindate)) . '</span><BR> <p>' . $modelElements->brieftext . '</p> </div>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" style="margin-bottom:20px;" href="' . Yii::app()->request->requestUri . '/' . ($module_count_elements > 1 ? $modelData->url . '/' : '') . 'article">Все статьи</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 7: //Вопрос-ответ $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = FaqRubrics::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (FaqElements::model()->findAll('parent_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $modelAuthor = FaqAuthor::model()->findByPk($modelElements->author_id); $tmp_module_value .= ' <article> <div class="question"> <span href="#" style="color:#ed174f; font-size: 16px; font-weight: bold; margin-left: 20px;">' . $modelAuthor->name . '<span> / ' . $modelData->name . ' - ' . date("d.m.Y", strtotime($modelElements->question_data)) . '</span></span> <div class="q_data"> ' . $modelElements->question . ' </div> </div> '; if (!empty($modelElements->answer)) { $tmp_module_value .= '<div class="unswer"><div class="u_data">' . $modelElements->answer . '</div></div>'; } $tmp_module_value .= '</article>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" href="' . Yii::app()->request->requestUri . '/' . ($module_count_elements > 1 ? $modelData->url . '/' : '') . 'faq" style="position:relative; z-index:99999; margin-bottom:20px;">Все ответы</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 16: //Отзывы $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = ReviewRubrics::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (ReviewElements::model()->findAll('parent_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $modelAuthor = ReviewAuthor::model()->findByPk($modelElements->author_id); $tmp_module_value .= ' <div class="review_block" style="padding: 10px; margin-bottom: 10px; margin-top:20px;"> <span href="#">' . $modelAuthor->name . '<span> / ' . $modelData->name . ' - ' . date("d.m.Y", strtotime($modelElements->review_data)) . '</span></span><BR> <p>' . $modelElements->review . '</p> </div>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" href="' . Yii::app()->request->requestUri . '/' . ($module_count_elements > 1 ? $modelData->url . '/' : '') . 'review" style="position:relative; z-index:99999; margin-bottom:20px;">Все отзывы</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 10: //Врачи $tmp_module_value = ''; foreach (DoctorElements::model()->findAll('id in (' . implode(",", $module_value_array) . ')') as $data) { $tmp_module_value .= ' <div class="item"> <div class="doctor"> <figure> ' . (!empty($data->image) ? '<img src="/uploads/filestorage/doctor/elements/medium-' . $data->id . '.' . $data->image . '">' : '') . ' </figure> <h1>' . $data->name . '</h1> <article style="margin-top:10px;" class="text-center"> ' . $data->anonse . ' </article> </div> </div> '; } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 11: //Фотогалерея $tmp_module_value = ''; foreach (PhotoElements::model()->findAll('parent_id in (' . implode(",", $module_value_array) . ')') as $data) { $tmp_module_value .= ' <div class="item"> <div class="doctor"> <figure> ' . (!empty($data->image) ? '<a href="/photo/' . $data->parent->url . '"> <div style="height: 212px; background: url(/uploads/filestorage/photo/elements/medium-' . $data->id . '.' . $data->image . ') 100% 100% no-repeat; background-size: cover;"> </div> </a>' : '') . ' </figure> </div> </div> '; } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 12: //До и После $tmp_module_value = ''; foreach (BeforeAfterRubrics::model()->findAll('id in (' . implode(",", $module_value_array) . ')') as $data) { if ($modelImage = BeforeAfterElements::model()->find('parent_id=' . $data->id . ' ORDER BY on_main DESC')) { //URL $parent_url = array(); if (!empty($data)) { $modelTop = BeforeAfterRubrics::model()->findByPk($data->id); foreach ($modelTop->ancestors()->findAll('level>1') as $dataTop) { $parent_url[] = $dataTop->url; } $parent_url[] = $modelTop->url; } $tmp_module_value .= ' <div class="container"> <a href="/before-after/' . (!empty($parent_url) ? implode("/", $parent_url) : '') . '"><h4>' . $data->name . '</h4></a> <div class="spisok af-line"> <a href="/before-after/' . (!empty($parent_url) ? implode("/", $parent_url) : '') . '"> <div class="after"> <figure> <img src="/uploads/filestorage/beforeafter/elements/medium2-before_' . $modelImage->id . '.' . $modelImage->before_photo . '"> <figcaption> ДО </figcaption> </figure> <figure> <img src="/uploads/filestorage/beforeafter/elements/medium2-after_' . $modelImage->id . '.' . $modelImage->before_photo . '"> <figcaption> ПОСЛЕ </figcaption> </figure> </div> </a> </div> </div> '; } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 17: //HTML код $tmp_module_value = ''; foreach (HtmlCode::model()->findAll('id in (' . implode(",", $module_value_array) . ') AND `status`=1') as $data) { $tmp_module_value .= $data->code; } $resultHTML = $template_tmp; $title = ''; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; default: $tmp_module_value = ''; $tabel_name = $this->moduleID[$model->site_module_id]; foreach (Yii::app()->db->createCommand()->select('*')->from($tabel_name)->queryAll() as $data) { if (!isset($data['description']) || empty($data['description'])) { continue; } $tmp_module_value .= $data['description']; } $resultHTML .= $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; } $resultHTML = str_replace("%title%", $title, $resultHTML); $resultHTML = str_replace("%description%", $model->description, $resultHTML); return $resultHTML; }
public function getCountElements($parent_id) { return (int) ArticleElements::model()->count("parent_id=:field AND `status`=1", array("field" => $parent_id)); }
<?php $tmp_model = ArticleRubrics::model()->findByPk($data->id); foreach ($tmp_model->descendants()->findAll() as $dataSubRubrics) { ?> <li><a href="<?php echo Yii::app()->request->requestUri; ?> /<?php echo $dataSubRubrics->url; ?> "><?php echo $dataSubRubrics->name; ?> (<?php echo ArticleElements::model()->getCountElements($dataSubRubrics->id); ?> )</a></li> <?php } ?> </ul> <?php } ?> </div> <?php
public static function getCountElement($parent_id) { return ArticleElements::model()->count("parent_id=:field", array("field" => $parent_id)); }
public function actionElement($param) { $paramArr = explode("/", $param); $paramArr = array_pop($paramArr); $paramArr = strtolower($paramArr); if (is_numeric($paramArr)) { $modelElements = ArticleElements::model()->findByPk($paramArr); $model = ArticleRubrics::model()->findByPk($modelElements->parent_id); if (!$model) { throw new CHttpException(404, 'The page can not be found.'); } $this->setSEO(Yii::app()->request->requestUri, 'Статьи', $model); $pageArray = array(); $i = 0; foreach ($model->ancestors()->findAll() as $data) { if ($data->level == 1) { continue; } $pageArray[$i]['url'] = $data->url; $pageArray[$i]['name'] = $data->name; ++$i; } $pageArray[$i]['url'] = $model->url; $pageArray[$i]['name'] = $model->name; if (count($pageArray) > 1) { rsort($pageArray); } $model = $model->descendants(1)->findAll($model->id); $render = 'view'; } else { if ($modelPage = Pages::model()->find('url LIKE "' . $param . '"')) { if ($modelTabs = PagesTabs::model()->find('pages_id=' . $modelPage->id)) { $module_id = array_diff(explode("|", $modelTabs->site_module_value), array('')); if ($tmpParam = ArticleRubrics::model()->find('id in (' . current($module_id) . ') AND `status` = 1')) { $paramArr = $tmpParam->url; } } } $model = ArticleRubrics::model()->find('url LIKE "' . $paramArr . '"'); if (!$model) { throw new CHttpException(404, 'The page can not be found.'); } $this->setSEO(Yii::app()->request->requestUri, 'Статьи', $model); $pageArray = array(); $pageArray[0]['name'] = ' / ' . $model->name; $pageArray[0]['url'] = null; $i = 1; foreach ($model->ancestors()->findAll('level>1') as $data) { $pageArray[$i]['name'] = ' / ' . $data->name; $pageArray[$i]['url'] = 'article/' . $data->url; ++$i; } rsort($pageArray); if (count($pageArray) > 1) { rsort($pageArray); } $modelElements = ArticleElements::model()->findAll('parent_id = ' . $model->id . ' AND `status`=1 ORDER BY `primary` DESC'); $model = $model->descendants(1)->findAll($model->id); $render = 'index'; } $this->render($render, array('model' => $model, 'modelElements' => $modelElements, 'pageArray' => $pageArray)); }
public function actionAjax() { if (isset($_POST)) { switch ((int) $_POST['type']) { case 1: //Смена статуса $model = $this->loadModel((int) $_POST['id']); $model->status = $model->status == 1 ? 0 : 1; $model->save(); //Меняем статус для вопросов foreach (ArticleElements::model()->findAll('parent_id = ' . $model->id) as $data) { $data->status = $model->status; $data->save(); } break; } echo CJavaScript::jsonEncode('ok'); } Yii::app()->end(); }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = ArticleElements::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
<legend><?php echo Yii::t("Bootstrap", "LIST.ArticleElements"); ?> </legend> <?php $assetsDir = Yii::app()->basePath; $labels = ArticleElements::model()->attributeLabels(); $this->widget('bootstrap.widgets.TbExtendedGridView', array('id' => 'article-elements-grid', 'template' => "{items}\n{pager}", 'enableHistory' => true, 'dataProvider' => $model->search(), 'filter' => null, 'bulkActions' => array('actionButtons' => $this->bulkRemoveButton(), 'checkBoxColumnConfig' => array('name' => 'id')), 'columns' => array(array('header' => $labels["id"], 'name' => "id"), array('header' => $labels["parent_id"], 'name' => "parent_id", 'value' => '$data->parent->name'), array('header' => $labels["name"], 'name' => "name"), array('header' => 'Статус', 'name' => "status", 'type' => 'raw', 'value' => function ($data) { return ' <a href="#" class="on-off-product" data-id="' . $data->id . '" data-status="' . $data->status . '"> <div style="margin-left:20px; width: 13px; height: 13px; border-radius: 3px; background:' . ($data->status == 1 ? 'green' : 'red') . '"></div> </a> '; }, 'filter' => ''), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{update} {delete}', 'buttons' => array('update' => array('label' => yii::t('Bootstrap', 'PHRASE.UPDATE'), 'url' => 'CHtml::normalizeUrl(array("update", "id" => $data->id))', 'options' => array()), 'delete' => array('label' => yii::t('Bootstrap', 'PHRASE.DELETE'), 'options' => array())), 'htmlOptions' => array('style' => 'white-space: nowrap'))))); ?> <div class="buttons"> <a class="btn btn-primary" style="margin-top:14px; float:left; margin-left:15px" href="/admin/<?php echo Yii::app()->controller->module->id; ?> /<?php echo Yii::app()->controller->id; ?> /create"> Добавить статью</a> </div> <script> //Меняем статус $(document).on('click', '.on-off-product', function(){