Новостной слайдер

Вывод статей из определенных категорий

 
Посетитель
small user social cms
Медаль
Сообщений: 225
Здравствуйте
Однажды мне уже ответили как выводить на этот слайдер http://demo.webdeveloperplus.com/featured-content-slider/ статьи из определённых категорий
/modules/mod_latestslider.php находим
Код PHP:
  1.  
  2. WHERE con.published = 1 AND con.showlatest = 1
  3.  
добавляем к этой строчке

Код PHP:
  1. AND con.category_id=4
Подробно тут http://instantcms.ru/forum/thread9347.html Все вышло и заработало. Теперь появилась нужда выводить статьи из нескольких категорий.

Я сделал так
Код PHP:
  1. WHERE con.published = 1 AND con.showlatest = 1 AND con.category_id IN (10, 11, 12, 13, 14, 15, 16, 17)
Все работает, только вся главная страничка, вернее её шрифт стал "жирный", почему не знаю. Как правильно написать код? Я не программист не знаю!

Темы с которой я копировал слайдер походу дела нету,
http://instantcms.ru/blogs/s-mira-po-nitke/slaider-novostei-ochrednoi.html

Спасибо, очень жду ответа

Если что вот целый код module.php

Код PHP:
  1. <?php
  2. function mod_latestslider($module_id){
  3. $inCore = cmsCore::getInstance();
  4. $inDB = cmsDatabase::getInstance();
  5. $cfg = $inCore->loadModuleConfig($module_id);
  6. global $_LANG;
  7. if (!isset($cfg['maxlen'])) { $cfg['maxlen'] = 150;}
  8. $today = date("Y-m-d H:i:s");
  9. $sql = "
  10. SELECT con.*, con.id as slid, con.pubdate as fdate, u.nickname as author, u.login as author_login
  11. FROM cms_content con
  12. LEFT JOIN cms_category cat ON cat.id = con.category_id
  13. LEFT JOIN cms_users u ON u.id = con.user_id
  14. WHERE con.published = 1 AND con.showlatest = 1 AND con.category_id IN (10, 11, 12, 13, 14, 15, 16, 17)
  15. AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '".$today."' AND con.pubdate <= '".$today."'))
  16. ORDER BY con.pubdate DESC LIMIT 4";
  17.  
  18. $result = $inDB->query($sql);
  19. $is_slider = false;
  20. if ($inDB->num_rows($result)){
  21. $slider = array();
  22. $is_slider = true;
  23. while($con = $inDB->fetch_assoc($result)){
  24. $next = sizeof($slider);
  25. if(strlen($con['content'])>$cfg['maxlen']){
  26. $con['content'] = substr($con['content'], 0, $cfg['maxlen']) . '...';
  27. }
  28. $slider[$next]['title'] = substr($con['title'], 0, 75) . '...';
  29. $slider[$next]['content'] = $con['content'];
  30. $slider[$next]['id'] = $con['id'];
  31. $slider[$next]['seolink'] = $con['seolink'];
  32. }
  33. }
  34.  
  35. $smarty = $inCore->initSmarty('modules', 'mod_latestslider.tpl');
  36. $smarty->assign('slider', $slider);
  37. $smarty->assign('is_slider', $is_slider);
  38. $smarty->display('mod_latestslider.tpl');
  39. return true;
  40. }
  41. ?>
Редактировалось: 1 раз (Последний: 15 февраля 2012 в 02:06)
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
здесь вряд ли что то переопределяется, может в файле шаблона mod_latestslider.tpl
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Реклама
cms
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1097
хм...сделал как у Вас, все корректно отображается. Попробуйте вернуть все обратно, т.е. AND con.category_id=10, жирный шрифт пропадает?
Посетитель
small user social cms
Медаль
Сообщений: 225
Если ставлю как раньше id=4 (вывод с одной категории) все хорошо, шрифт не меняется.
Когда ставлю см.выше много категорий, шрифт меняется.

Когда отключаю модуль, то текст становиться обычным (как нужно)

Может ...ategory_id IN (10, 11,... ( Не IN а другой код?)

Вот файл mod_latestslider.tpl

Код PHP:
  1. {literal}
  2. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js" ></script>
  3. <script type="text/javascript">
  4. $(document).ready(function(){
  5. $("#featured > ul").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 5000, true);
  6. });
  7. </script>
  8. {/literal}
  9.  
  10. {if $is_slider}
  11. <div id="featured">
  12. <ul class="ui-tabs-nav">
  13. {foreach key=id item=title from=$slider}
  14. <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-{$title.id}"><a href="#fragment-{$title.id}"><img src="/images/photos/small/article{$title.id}.jpg" alt="" width="50px" height="50px" /><span class="ttl">{$title.title}</span></a></li>
  15. {/foreach}
  16. </ul>
  17. {foreach key=id item=title from=$slider}
  18. <div id="fragment-{$title.id}" class="ui-tabs-panel" style="">
  19. <a href="/{$title.seolink}.html" style="border-radius: 8px; overflow: hidden; display: block;">
  20. <img src="/images/photos/medium/article{$title.id}.jpg" alt="" width="350px" /></a>
  21. <div class="info" >
  22. <!-- <a href="#" >{$title.title}</a> -->
  23. <p><a href="/{$title.seolink}.html" >{$title.content}</a></p>
  24. </div>
  25. </div>
  26. {/foreach}
  27.  
  28. </div>
  29. {/if}
Посетитель
small user social cms
Медаль
Сообщений: 225
PrazdNik, Поставил, как вы сказали, все хорошо, выводит только из 10-й категории, жирный шрифт пропадает. Появляется, когда ставлю
Код PHP:
  1. WHERE con.published = 1 AND con.showlatest = 1 AND con.category_id IN (10, 11, 12, 13, 14, 15, 16, 17)
Попробовал по одной обирать категории и смотреть, что выходит

Код PHP:
  1. WHERE con.published = 1 AND con.showlatest = 1 AND con.category_id IN (10, 11, 12, 13, 14)
, если не ставить 15,16,17 то без жирного шрифта все.
15,16,17 это ID очень важных для меня категорий
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
попробуйте так…
Код PHP:
  1. WHERE con.published = 1 AND con.showlatest = 1 AND con.category_id BETWEEN 10 AND 17
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
вполне возможно что в новостях из категорий 15, 16, или 17, содержится html код переопределяющий стиль остального документа…
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
например лишний открывающий тег или, наоборот закрывающий…
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
у вас же обрезка идёт в двух местах:
Код PHP:
  1.  
  2. $con['content'] = substr($con['content'], 0, $cfg['maxlen']) . '...';
  3. }
  4. $slider[$next]['title'] = substr($con['title'], 0, 75) . '...';
  5.  
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Посетитель
small user social cms
Медаль
Сообщений: 337
лучше это делать через админку (выбор категорий) как сделать опишу на днях - ближе к выходным
Редактировалось: 1 раз (Последний: 15 февраля 2012 в 07:55)
иногда пишу полезные вещи, мои контакты в профиле
Посетитель
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 831
• Mike •, прав на 100%

проблема не в категориях а не в грамотной обрезке текста.
Код PHP:
  1. $con['content'] = substr($con['content'], 0, $cfg['maxlen']) . '...';
  2. }
  3. $slider[$next]['title'] = substr($con['title'], 0, 75) . '...';
У вас просто напросто вырезает закрывающий тег и следовательно у вас будет следующее что весь текст автоматически закроется тегом например <strong>
Компоненты, модули, шаблоны, разработка на заказ - широкий выбор всего
Посетитель
small user social cms
Медаль
Сообщений: 225
Спасибо большое все, кто помогал!!!

P.S.
А можно сделать, что бы не вырезало? Сложный код нужен?
Редактировалось: 1 раз (Последний: 15 февраля 2012 в 22:15)
Посетитель
small user social cms
Медаль
Сообщений: 337
Daze77:

Спасибо большое все, кто помогал!!!

P.S.
А можно сделать, что бы не вырезало? Сложный код нужен?

ну если чтоб не вырезало - закоментировать строки выше но тогда будет выводится весь текст статьи. отсюда вывод что он у вас скорей всего весь не поместится, а там уже всё будет зависить от самого модуля, точнее его границ - либо текст вылезет за пределы модуля и налезет на другую часть контента сайта, либо просто уйдёт за рамки модуля и не будет отображатся за пределами модуля - всё зависит от слоёв шаблона сайта - как они выстроены - вобщем тут надо пробовать.

ps - как вариант (что то я про него и забыл) есть такая функция (я гдето встречал тут) которая с текста сначала вырезает все html теги (стили, картинки и так далее) - так вот сначало прогнать ей текст статьи, потом урезать до колличества символов - это как вариант (и почему то этот вариант, мне кажется, вам подойдёт)
иногда пишу полезные вещи, мои контакты в профиле
Посетитель
small user social cms
Медаль
Сообщений: 225
Sergey Platonov, Для меня это слишком сложно :)
Спасибо большое
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
замените три строчки:
Код PHP:
  1.  
  2. if( strlen( strip_tags( $con['content'] ) ) > $cfg['maxlen'] ) {
  3. $con['content'] = substr( strip_tags( $con['content'] ), 0, $cfg['maxlen'] ) . '...'; }
  4. $slider[$next]['title'] = substr( strip_tags( $con['title'] ), 0, 75 ) . '...';
  5.  
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: