Форум русской поддержки Joomla!® CMS
03.12.2016, 04:28:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Главная страница без контента, как?

 (Прочитано 4578 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aeronaut
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« : 02.02.2012, 13:18:35 »

Здаров всем!
Парни, в шаблоне нужно реализовать вот что:
Сайт выглядит след образом: Слева меню, справа контент.
Нужно что бы при переходе на фронтпэйдж сайта отображался бэкфон_1 и НЕ отображалось контента. А при клике на ссылку в меню, отображался бэкфон_2 и соответственно выводился контент.
Если не трудно, распишите подробно.
Полазил в поиске, но не нашёл то что нужно.
Заранее благодарен!
Записан
N2uM
Завсегдатай
*****

Репутация: +20/-0
Offline Offline

Пол: Мужской
Сообщений: 483



« Ответ #1 : 02.02.2012, 13:38:17 »

Что бы материал не выводился можно назначить в меню вывод на один пустой материал, дальше думаю догадываетесь)

Что бы в А) один фон а в Б) другой фон думаю нужно Суффикс класса страницы подключить (то же в настройках меню есть)
Записан
Dgikar
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 147



« Ответ #2 : 03.02.2012, 13:08:20 »

А через код как-то можно это сделать? Ну т. е., типа того, как идет проверка на содержание блоком модулей или как-то еще?
Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Offline Offline

Пол: Мужской
Сообщений: 4317



« Ответ #3 : 03.02.2012, 13:32:09 »

Цитировать
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/') { ?>
<jdoc:include type="component" />
<?php } else { ?>
<jdoc:include type="modules" name="home" style="xhtml" />
<?php } ?>
Типа так. Только главная должна быть только по адресу site.ru/
Если у вас есть ещё адреса главной, например /home, то в условие добавьте этот урл так же
Цитировать
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/' or $sv == '/home') { ?>
<jdoc:include type="component" />
<?php } else { ?>
<jdoc:include type="modules" name="home" style="xhtml" />
<?php } ?>
Записан
Dgikar
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 147



« Ответ #4 : 03.02.2012, 13:41:17 »

Ок, спасибо. Тогда еще один вопрос: а можно как-то сделать чтобы в манагере шаблонов, в моем (самописном) шаблоне, был выбор, мол, контент показывать на таких-то страницах, а модули (или не показывать контент) на таких-то страницах?
Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Offline Offline

Пол: Мужской
Сообщений: 4317



« Ответ #5 : 03.02.2012, 13:54:54 »

Можно, но уже не так просто. Как вариант посмотрите в сторону advanced module manager. Там есть очень много условий для вывода модулей (может и контента тоже, не пользовался, не знаю)
Записан
Dgikar
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 147



« Ответ #6 : 10.02.2012, 17:20:10 »

Парни, подскажите плз, где ошибка?

Хочу сделать так, чтобы на главной, выводились или только модули, или только контент:

В templateDetails.xml прописал:
Показать текстовый блок

В шаблоне (в index.php), указываю:
Показать текстовый блок

Вроде работает, но, в итоге, или модули, или контент, выводятся на всех страницах, а не только на главной...

Пробовал строку
Код
if ($this->params->get('mainbody_frontpage')=='modules') { ?>

прописать так (как посоветовал уважаемый Efanych):

Код
if ($sv == '/'  or $sv == 'home' or $sv == '../index.php' and $this->params->get('mainbody_frontpage')=='modules') { ?>

Не получилось Sad
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Online Online

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #7 : 10.02.2012, 17:39:47 »

Код:
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {// только на главной }
Записан
Dgikar
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 147



« Ответ #8 : 10.02.2012, 18:34:58 »

Решил все же (за наводку, спасибо (плюс в репу) Efanych):

Достаточно было посмотреть, что пишеться в $sv...
У меня на денвере, прописывается так: /site/index.php. Если в IF прописать явный путь, то, все работает на ура, и в итоге, для того, чтобы отображать на главной или только модули, или только контент, делаем следующие действия:

В templateDetails.xml прописываем:
Код
<field name="mainbody_frontpage" type="list" default="modules" label="What to display in the main" description="What will be displayed on the home page - modules or content">
<option value="modules">Modules</option>
<option value="content">Content</option>
</field>

В шаблоне (в index.php), указываем:

- Для тех, у кого не включено перенаправление и сайт не мультиязычный:
Код
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/site/index.php' and $this->params->get('mainbody_frontpage')=='modules') { ?>
Ukazyvaem, chto nujno vyvesti - kakie moduli
<?php } else { ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php } ?>
 

- Для тех, у кого включено перенаправление и сайт не мультиязычный:
Код
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/' and $this->params->get('mainbody_frontpage')=='modules') { ?>
Ukazyvaem, chto nujno vyvesti - kakie moduli
<?php } else { ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php } ?>
 

- Для тех, у кого не включено перенаправление и сайт мультиязычный:
Код
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/site/index.php/ru/' or $sv == '/site/index.php/en/' and $this->params->get('mainbody_frontpage')=='modules') { ?>
Ukazyvaem, chto nujno vyvesti - kakie moduli
<?php } else { ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php } ?>
 

- Для тех, у кого включено перенаправление и сайт мультиязычный:
Код
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/ru/' or $sv == '/en/' and $this->params->get('mainbody_frontpage')=='modules') { ?>
Ukazyvaem, chto nujno vyvesti - kakie moduli
<?php } else { ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php } ?>
 

Где site - ваш домен без .com или .ru и т. д.

Poznakomlus спасибо за ответ, но, Ваш код заметил уже когда решил задачу, поэтому не стал пробовать

Админы, можно ли прикрепить эту тему?
« Последнее редактирование: 10.02.2012, 18:39:52 от Dgikar » Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Offline Offline

Пол: Мужской
Сообщений: 4317



« Ответ #9 : 10.02.2012, 18:48:49 »

Цитировать
Достаточно было посмотреть, что пишеться в $sv...
У меня на денвере, прописывается так: /site/index.php
Так прописывается, потому что сайт у вас находится в подпапке (скорее всего home/localhost/site)
При переносе на хостинг в основную папку условие работать перестанет. Чтоб избежать путаницы рекомендую сайты на денвере размещать в home/site
Записан
Dgikar
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 147



« Ответ #10 : 10.02.2012, 21:15:39 »

"Модные" производители шаблонов, в своих шаблонах, используют конструкцию:
Код
<?php $this->loadBlock('modules');  ?>

Люди, подскажите где и как нужно объявить функцию loadBlock, чтобы можно было использовать приведенный выше код? Ато как-то использовать
Код
<?php require_once('layouts/blocks/modules.php');?>
(мне так кажется) - не совсем правильно...

Нашел как объявляют:
Код
<?php 
class myTemplate {
 
   public function loadBlock($path) {
       jimport('joomla.filesystem.file');
 
       if(JFile::exists($this->URLtemplatepath(). DS . 'layouts' . DS . 'blocks' . DS . $path . '.php')) {
           include($this->URLtemplatepath(). DS . 'layouts' . DS . 'blocks' . DS . $path . '.php');
       }
   }
}
?>
 
 

Когда попробовал вставить в index.php
Код
<?php $this->loadBlock('modules');?>

Получил вот такую ошибку:
Fatal error: Call to undefined method JDocumentHTML::loadBlock() in Y:\home\localhost\www\site\templates\mytemplate\index.php on line 324

В PHP не силен совсем, поэтому, не могу понять, что это...
« Последнее редактирование: 10.02.2012, 21:48:06 от Dgikar » Записан
Eholov
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 145



« Ответ #11 : 16.02.2016, 11:15:20 »

У меня в этом коде
Код:
- Для тех, у кого не включено перенаправление и сайт мультиязычный:
Код

<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/site/index.php/ru/' or $sv == '/site/index.php/en/' and $this->params->get('mainbody_frontpage')=='modules') { ?>
Ukazyvaem, chto nujno vyvesti - kakie moduli
<?php } else { ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php } ?>

последний язык не работает
Код:
$sv == '/site/index.php/en/'
добавил "левый" язык третьим
Код:
$sv == '/site/index.php/ok/'
и английский заработал.
И я его применяю для сайта с включенным перенаправлением заменив
Код:
$sv == '/site/index.php/en/'
на
Код:
$sv == '/site/en/'
Записан
SeBun
Практически профи
*******

Репутация: +134/-3
Offline Offline

Пол: Мужской
Сообщений: 2271



« Ответ #12 : 16.02.2016, 11:24:26 »

Последний ответ в теме был 4 года назад....
Записан
Eholov
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 145



« Ответ #13 : 16.02.2016, 12:31:24 »

Ну и что? Многие юзают Joomla 1.7 и у меня на Joomla 3 это решение работает. А альтернатив вывода кодом, а не модулем на главной я не нашел. Если есть рабочее решение в новой теме, буду благодарен за ссылку на пост. И не только я буду благодарен. Я понимаю, что можно поставить модуль и выводить им, как мне надо логотип, на главной. Но это лишние запросы к базе.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet