Как вывести контент новостей по локализации ?

InstantCMS 2.X
#1 20 января 2018 в 18:35
Друзья как вывести новость по ссылке?
Я создал поле language_news при добавления новостей там указывается на каком языке новость.

  1. $user_lang = cmsCore::getLanguageName(); - тут выводим язык который выбрал пользователь.
  2. $lang = array('ru' => '1', 'au' => '2', 'en' => '3',); - тут даем id
  3. $this->filterEqual('language_news', $lang[$user_lang]); - тут сравниваем ид.
Я сделал в model.php в контенте все стало правильно как надо. Но там стало фильтровать даже в админ панели.

public function getContentItems($ctype_name, $callback = null){
#2 20 января 2018 в 18:51
Нико,
Цель всего этого какая? Чтобы пользователю выводились в списке новости только на его языке?
#3 20 января 2018 в 18:52


Нико,
Цель всего этого какая? Чтобы пользователю выводились в списке новости только на его языке?

Ris

Да именно, вот у меня стоит компонент языки, но компонент выводит все, зачем выводить пользователю новость на языке на котором он не понимает, а если ему надо он перейдет на свой язык.
#4 20 января 2018 в 18:58


Нико,
Цель всего этого какая? Чтобы пользователю выводились в списке новости только на его языке?

Ris

Или если можно было бы как то в самом шаблоне фильтр сделать не через model.php что бы он все не затрагивал, где нужно, например в виджтах прописать или /news
Шаблон контента.

  1. <?php
  2. if( $ctype['options']['list_show_filter'] ) {
  3. $this->renderAsset('ui/filter-panel', array(
  4. 'css_prefix' => $ctype['name'],
  5. 'page_url' => $page_url,
  6. 'fields' => $fields,
  7. 'props_fields' => $props_fields,
  8. 'props' => $props,
  9. 'filters' => $filters,
  10. 'ext_hidden_params' => $ext_hidden_params,
  11. 'is_expanded' => $ctype['options']['list_expand_filter']
  12. ));
  13. }
  14. $image_field = 'photo';
  15.  
  16.  
  17. ?>
  18.  
  19. <?php foreach($langs as $l){ $language = $l ?>
  20. <li class="lang-lnk">
  21. <a class="lang<?php if ($user_lang == $l ) { ?>_active<?php } ?>" id="<?php html($l); ?>">
  22. </a>
  23. </li>
  24. <?php } ?>
  25.  
  26. <?php if ($items){ ?>
  27.  
  28.  
  29. <div class="feed_list">
  30. <!-- <div>
  31. <a class="news_add" href="<?php echo href_to('news/add'); ?>"><?php echo LANG_ADD_NEWS ?> <i class="fa fa-plus-circle" aria-hidden="true"></i></a>
  32. </div> -->
  33. <?php foreach($items as $item) {
  34. $url = href_to($ctype['name'], $item['slug']) . '.html';
  35. $is_private = $item['is_private'] && $hide_except_title && !$item['user']['is_friend'];
  36. $image = (($image_field && !empty($item[$image_field])) ? $item[$image_field] : '');
  37. if ($is_private) {
  38. if($image_field && !empty($item[$image_field])){
  39. $image = default_images('private', 'normal');
  40. }
  41. $url = '';
  42. }
  43. ?>
  44.  
  45. <div class="feed__item">
  46.  
  47. <div class="entry_wrapper">
  48.  
  49. <div class="entry_header--short">
  50. <span class="entry_header__date"><time class="time" title="<?php html($item['date_pub']); ?>"><i class="fa fa-calendar" aria-hidden="true"></i> <?php html(string_date_age_max($item['date_pub'], true)); ?></time></span>
  51. <a href="<?php echo href_to('users', $item['user']['id']); ?>" class="entry_header__author">
  52. <?php echo html_avatar_image($item['user_avatar'], 'micro'); ?> <span class="entry_header__author__name"><?php html($item['user']['nickname']); ?> <?php html($item['user_surname']); ?></span>
  53. </a>
  54. <span class="entry_header__date"><i class="fa fa-folder-open" aria-hidden="true"></i> <span class="entry_header__author__name"><?php html($item['category_title']); ?></span></span>
  55. <?php if(isset($item['user_real']) && $item['user_real']) { ?> <!--<i class="fa fa-check-circle" aria-hidden="true"></i>--><?php } ?>
  56. <div class="entry_header__admin"></div>
  57. </div>
  58.  
  59.  
  60.  
  61. <div class="entry_content--short">
  62. <a class="entry_content__link" href="<?php echo $url; ?>"></a>
  63. <div class="b-article">
  64. <h2> <span><?php html($item['title']); ?></span> </h2>
  65. <?php if ($item['is_private']) { ?>
  66. <h2> <span class="is_private" title="<?php html(LANG_PRIVACY_HINT); ?>"></span></h2>
  67. <?php } ?>
  68. <?php if (!$is_private) { ?>
  69. <p><?php echo string_short($item['teaser'], 150); ?></p>
  70. <?php } else { ?>
  71. <div class="private_field_hint"><?php echo LANG_PRIVACY_PRIVATE_HINT; ?></div>
  72. <?php } ?>
  73. <figure>
  74. <div class="wrapper-image">
  75. <div class="image-size-holder" style="max-width: 100%; min-width: 100px; ">
  76. <div class="entry_content__image image_zoom">
  77. <div class="image_lazy_load__wrapper image_lazy_load--loaded" style="width: 100%; height: 100%;">
  78. <img class="entry_content__image__img">
  79. <?php if ($image) { ?>
  80. <img class="image_lazy_load__full" src="<?php echo html_image_src($image, 'standart', true); ?>">
  81. <?php } ?>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. </figure>
  87. </div>
  88. </div>
  89.  
  90.  
  91.  
  92.  
  93. <div class="entry_footer entry_footer--short">
  94. <div class="l-float-left l-relative l-z-2 l-mr-15">
  95. <div class="comments_counter comments_counter--nonzero comments_counter--carousel l-inline-block t-fs-0 t-link">
  96. <a href="<?php echo $url . '#comments'; ?>" class="comments_counter__count">
  97. <span class="comments_counter__count__value_new l-inline-block l-va-middle"></span>
  98. <span class="comments_counter__count__ico l-inline-block l-va-middle t-lh-1">
  99. <i class="fa fa-comments" aria-hidden="true"></i>
  100. </span>
  101. <span class="comments_counter__count__value l-inline-block l-va-middle"><?php echo intval($item['comments']); ?></span> <span class="comments_counter__count__unit l-inline-block l-va-middle l-ml-5">комментариев</span>
  102. </a>
  103. </div>
  104. </div>
  105. <div class="l-float-left l-relative l-z-2 l-mr-15">
  106. <div air-module="module.comments_counter" class="comments_counter comments_counter--nonzero comments_counter--carousel l-inline-block t-fs-0 t-link">
  107. <span class="comments_counter__count__value_new l-inline-block l-va-middle"></span>
  108. <span class="comments_counter__count__ico l-inline-block l-va-middle t-lh-1">
  109. <i class="fa fa-eye" aria-hidden="true"></i>
  110. </span>
  111. <span class="comments_counter__count__value l-inline-block l-va-middle"><?php if (!empty($ctype['options']['hits_on'])){ ?><?php echo $item['hits_count']; ?><?php } ?></span> <span class="comments_counter__count__unit l-inline-block l-va-middle l-ml-5">просмотров</span>
  112. </div>
  113. </div>
  114. <div class="l-float-right l-relative l-z-2 r-mr-15">
  115. <div air-module="module.comments_counter" class="comments_counter comments_counter--nonzero comments_counter--carousel l-inline-block t-fs-0 t-link">
  116. <span class="comments_counter__count__value_new l-inline-block l-va-middle"></span>
  117. <span class="comments_counter__count__ico l-inline-block l-va-middle t-lh-1">
  118. </span>
  119. <span class="comments_counter__count__value l-inline-block l-va-middle"><?php echo $item['rating_widget']; ?></span><span class="comments_counter__count__unit l-inline-block l-va-middle l-ml-5"></span>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125.  
  126. <?php } ?>
  127. </div>
  128.  
  129. <?php if ($perpage < $total) { ?>
  130. <?php echo html_pagebar($page, $perpage, $total, $page_url, array_merge($filters, $ext_hidden_params)); ?>
  131. <?php } ?>
  132.  
  133. <?php } else {
  134.  
  135. if(!empty($ctype['labels']['many'])){
  136. echo sprintf(LANG_TARGET_LIST_EMPTY, $ctype['labels']['many']);
  137. } else {
  138. echo LANG_LIST_EMPTY;
  139. }
  140. } ?>
#5 20 января 2018 в 19:59
Нико, А просто настроить наборы чтобы по умолчанию выводились новости фильтрованные по вашему language_news неподходит? scratch
#6 20 января 2018 в 20:00


Нико, А просто настроить наборы чтобы по умолчанию выводились новости фильтрованные по вашему language_news неподходит? scratch

Sonat

Нет, не выйдет, допустим вы переключаете язык /en в наборах как будет переключатся?
#7 20 января 2018 в 20:19

Нет, не выйдет, допустим вы переключаете язык /en в наборах как будет переключатся ?

Нико
Тогда можно сделать хук content_list_filter
И там отфильтровать
  1. $user_lang = cmsCore::getLanguageName();
  2. $this->model->filterEqual('language_news', $user_lang);
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.