Основной курс по Joomla

Как убрать слайдер встроенный в шаблон с остальных страниц сайта?

0 Пользователей и 1 Гость просматривают эту тему.
  • 18 Ответов
  • 1043 Просмотров
*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
Добрый день! Помогите пожалуйста разобраться: работаю над вот этим шаблоном - http://www.diablodesign.eu/demo/2013-10-07-06-50-20/blue-car.html
В сам шаблон по умолчанию встроен слайдер на всех страницах - и на главной и в разделах. Поискав решение на форуме, удалось выпилить сам слайдер из разделов добавлением следующего кода:

1. <?php $menu = JFactory::getApplication()->getMenu();
if ($menu->getActive()->id == $menu->getDefault()->id): ?>
 <!-- Begin Slider -->
2. Сам слайдер
3. <?php endif; ?>

Однако остался фон от него и пустое пространство (см. скриншот ). Подскажите, пожалуйста, где копать решение проблемы?

*

caleblt

  • Осваиваюсь на форуме
  • ***
  • 52
  • 3
Основной принцип Joomla - модульность. Уберите из кода слайдер вообще. Впишите на его место <?php if($this->countModules('top_slider')) : ?><jdoc:include type="modules" name="top_slider" style="xhtml"/><?php endif; ?>. Где top_slider это название позиции модулей в шаблоне. Не забудте прописать его в templateDetails.xml. Добавляйте в админке модуль любого слайдер в позицию top_slider.

*

flyingspook

  • Профи
  • ********
  • 3610
  • 236
А что отключить модуль слайдера нельзя, надо обязательно выгрызать его из кода.

*

caleblt

  • Осваиваюсь на форуме
  • ***
  • 52
  • 3
Как Joomla строит документ получаемый браузером простым языком:
Берёт код HTML, как есть, вот прям, как Вы его сделали, так он и будет, без модификаций. Затем ищет где Вы поставили позиции модулей и если в этой позиции, на этой странице есть модули, то вставляет туда код модуля. Вот и всё.
Вот Вам правильная болванка шаблона. Думаю сможете разобраться, как это работает.
Код
<?php
defined('_JEXEC') or die;
JHtml::_('behavior.framework', true);
$app = JFactory::getApplication();
?>
<?php echo '<?'; ?>xml version="1.0" encoding="<?php echo $this->_charset ?>"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >

<head>
<jdoc:include type="head" />
<meta charset="utf-8">
<link href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/this.css" rel="stylesheet"></link>
</head>

<body>

<div id="absolute"><jdoc:include type="modules" name="absolute" style="xhtml" /></div> - Позиция модуля.
<jdoc:include type="message" />
<div><jdoc:include type="component" /></div>

</body>
</html>

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
А что отключить модуль слайдера нельзя, надо обязательно выгрызать его из кода.
 
Нет нельзя, он встроен в сам шаблон :( Т.е. его нет в разделе "Модули"

*

flyingspook

  • Профи
  • ********
  • 3610
  • 236
 
Нет нельзя, он встроен в сам шаблон :( Т.е. его нет в разделе "Модули"
так он может быть в настройках шаблона

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
так он может быть в настройках шаблона
В настройках сам слайдер можно лишь видоизменить: добавить новые фото, сменить надписи, поставить ссылку на материал. и Всё :(

*

Ilhom666

  • Живу я здесь
  • ******
  • 1295
  • 166
да, в диабловских шаблонах придется повозиться чтоб этот слайдер выпилить, там все на дивах с абсолютным позиционированием

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
Основной принцип Joomla - модульность. Уберите из кода слайдер вообще. Впишите на его место <?php if($this->countModules('top_slider')) : ?><jdoc:include type="modules" name="top_slider" style="xhtml"/><?php endif; ?>. Где top_slider это название позиции модулей в шаблоне. Не забудте прописать его в templateDetails.xml. Добавляйте в админке модуль любого слайдер в позицию top_slider.
Спасибо за ответ, вот сейчас проделываю то, что Вы написали Выше....но я задумалась над дизайном - как теперь сообразить какой слайдер имеено использовал автор дизайна (дизайн не хотелось бы менять). Получается же что если я создаю новый слайдер, то он уже не будет такой как в шаблоне?

*

Ilhom666

  • Живу я здесь
  • ******
  • 1295
  • 166
конкретно в этом шаблоне используется FlexSlider насколько я понял. Но суть не в этом, в этом шаблоне блоку <header> жестко прописана высота в 550px
Код: css
.dd-header {
  height: 550px;
  ....
}
и даже если вы вместо слайдера впилите туда модульную позицию - проблему с пустым местом это не решит

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
конкретно в этом шаблоне используется FlexSlider насколько я понял. Но суть не в этом, в этом шаблоне блоку <header> жестко прописана высота в 550px
Код: css
.dd-header {
  height: 550px;
  ....
}
и даже если вы вместо слайдера впилите туда модульную позицию - проблему с пустым местом это не решит

Спасибо за пояснение....как же быть то. Шаблон неудобный, но нужен только он и никакой иной

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
Спасибо за пояснение....как же быть то. Шаблон неудобный, но нужен только он и никакой иной
Вообще в коде фигурирует отдельный
конкретно в этом шаблоне используется FlexSlider насколько я понял. Но суть не в этом, в этом шаблоне блоку <header> жестко прописана высота в 550px
Код: css
.dd-header {
  height: 550px;
  ....
}
и даже если вы вместо слайдера впилите туда модульную позицию - проблему с пустым местом это не решит
вообще в коде фигурирует отдельный элемент:
<div class="dd-object1980935317" style="left: 54.5px; top: 220.41px;; margin-left: 0px !important;"><!--slideshow-->
<!-- End Slider --></div>

Вот этот "DD-объект" имеет следующие параметры:

.dd-object1980935317
{
  display: block;
  left: 0%;
  margin-left: -88px;
  position: absolute;
  top: 222px;
  width: 1300px;
  height: 271px;

  z-index: 9999;

Его по существу и необходимо отрезать от страниц с разделами.

*

Ilhom666

  • Живу я здесь
  • ******
  • 1295
  • 166
говорю же - этот DD-объект вложен в <header> с фиксированной высотой, если его просто удалить, то пустое место все равно останется. В вашем случае наверное придется проверку на главную устраивать несколько раз и в зависимости от этого подключать разные файлы стилей.

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
говорю же - этот DD-объект вложен в <header> с фиксированной высотой, если его просто удалить, то пустое место все равно останется. В вашем случае наверное придется проверку на главную устраивать несколько раз и в зависимости от этого подключать разные файлы стилей.
Спасибо за ответ! Не могли бы дать пример как это реализовать?

*

Ilhom666

  • Живу я здесь
  • ******
  • 1295
  • 166
Да собс-но так же
вместо строки
Код
<link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.css" media="screen" type="text/css" />
пропишите например
Код: php
<?php 
$menu = JFactory::getApplication()->getMenu();
if ($menu->getActive()->id == $menu->getDefault()->id):
 $doc->addStyleSheet('templates/'.$this->template.'/css/template1.css');
else:
 $doc->addStyleSheet('templates/'.$this->template.'/css/template2.css');
endif; ?>
В template1.css задаете высоту хедера для главной с учетом слайдера, в template2.css - без слайдера. Возможно придется править стили еще и у других дд-объектов

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
Да собс-но так же
вместо строки
Код
<link rel="stylesheet" href="<?php echo $templateUrl; ?>/css/template.css" media="screen" type="text/css" />
пропишите например
Код: php
<?php 
$menu = JFactory::getApplication()->getMenu();
if ($menu->getActive()->id == $menu->getDefault()->id):
 $doc->addStyleSheet('templates/'.$this->template.'/css/template1.css');
else:
 $doc->addStyleSheet('templates/'.$this->template.'/css/template2.css');
endif; ?>
В template1.css задаете высоту хедера для главной с учетом слайдера, в template2.css - без слайдера. Возможно придется править стили еще и у других дд-объектов
К сожалению не помогло, сайт полёг..

*

Ilhom666

  • Живу я здесь
  • ******
  • 1295
  • 166
а, сорри, пропустил
Код: php
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
добавьте еще

*

Taatshi

  • Support Team
  • *****
  • 4782
  • 452
Vegasmachine, по тому же условию, по которому удаляли слайдер, пропишите отдельный класс для body главной страницы. И к этому классу привязывайте все изменения стилей на главной.

Или

Класс для body в зависимости от класса пункта меню. Прописываете в пункте меню свой класс страницы - и можете к нему привязывать уникальные стили. Для любой страницы с пунктом меню.

Код: php
<?php 
  $pageClassSuffix = JFactory::getApplication()->getMenu()->getActive()? JFactory::getApplication()->getMenu()->getActive()->params->get('pageclass_sfx', '-default') : '-default';
?>
<body class="page<?php echo $pageClassSuffix ?>">
...
</body>
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

Vegasmachine

  • Захожу иногда
  • **
  • 17
  • 0
Всем большое спасибо за помощь! В итоге реализовала такое решение проблемы: создала копию шаблона, в нем внесла все необходимые правки (удалила слайдер, поменяла стили где понадобилось, вычистила все ненужное) и назначила это шаблон для всех необходимых пунктов меню, а главная страница со слайдером осталась от первоначального шаблона.