Новости Joomla

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

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Добрый день!
Никогда не имел дел с альтернативными макетами.
Задача такая: пользователь нажав ссылку (может быть как в модальном окне, так в в основном меню) переходит на другую страницу, где уже
отображается альтернативный макет.
Подскажите, как это сделать? Что прописывать в ссылках? Как подключить сам макет?
Макет состоит из одной, готовой страницы без каких либо меню.
Спасибо!
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Ну тут зависит от того, где находится ссылка, на которую нажал юзер.
а) Если это пункт меню, то вам поможет альтернативный шаблон пункта меню. Это практически тоже самое, что альтернативный макет, например, материала. Только дополнительно xml-ка рядом ложится пользовательская. Подробнее можно почитать здесь.
б) Другое дело, если переход делается откуда-нибудь из контента или вообще с левого места, и, соответственно, нет возможности назначить альтернативный макет именно ссылке. Тогда будет работать альтернативный макет статьи, который указывается в редакторе материала.
в) Ну а если требуется переход из категории с альтернативным макетом в материал, то тут вообще совершенно другая история. Если нужно, могу погуглить по-форуму, была тема с разными вариантами решения, в том числе и с моим.

Видите, оверрайд в Joomla это очень просто и весело.  ;D
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
В двух словах постараюсь понятней объяснить три важных момента:
1) чтобы работал оверрайд категории/материала, нужно назначить макет в редакторе материалов.
2) если назначить категории/материалу пункт меню, то настройки из первого пункта будут тупо игнорироваться, типа меню всегда главнее. Тут требуется юзать альтернативный шаблона пункта меню.
3) если необходимо, чтобы материалы наследовали как-то альтернативный шаблон родительской категории, то тут потребуется костыль.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Спасибо за ответ!
А первым пунктом всё ясно, спасибо!
Остаётся два вопроса:
1). собственно как прописать и куда кидать ал. макет?
2). Вот это нужнее :) Переход будет осуществляться ещё и из модального окна, т.е. по простой ссылке. А альт. макет, это собственно продающая страница со статичным контентом.
Но, как понимаю, всё равно её надо забить в материал? И так будет проще?
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Пожалуйста.
1. Закидывать в шаблон. Подробнее в статье. Да можете просто открыть дефолтный шаблон Joomla и посмотреть как там организовано. По-ссылке, что я дал отличный мануал.
2. В вашем случае (требуется оверрайд одного материала) лучше всего создать альт.шаблон пункта меню (где ещё xml-ку нужно делать). Причём вообще в левое меню можно сделать и даже не публиковать. Теперь при обращении к этой статье откуда угодно будет железобетонно открываться альтернативный макет.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Спасибо!
Буду пробовать. Если возникнут затруднения - потревожу ;)
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Только в эту тему тревожьте. ;)
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Начал ковырять, но тут получается не много то, что мне надо.
Скопировал один файл в html/com_content/article/page.php
Макет выбираю в статье, но грузится и основной со всеми меню и т.д. А мне надо полностью заменить основной.
Возможно ли это?
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Я правильно понял, что нужно вывести ТОЛЬКО статью, а остальной сайт не выводить? Например, все меню обычно в модулях и, естественно, повлиять на их вывод из шаблона статьи нельзя.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Да, должна быть показана только статья.
Т.е. логика такая: есть сайт со своим основным макетом и органами управления.
Есть ссылки ведущие на продающую страницу, т.е. альтернативный макет. Все продающие страницы делаются по принципу - "показывать только необходимое", т.е. в данном случае основной макет не грузится,
а загружается только альтернативный.
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Это вам надо сперва сделать альтернативный макет индексного файла шаблона, например component.php. И передавать по ссылке параметр tmpl=component
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Да, я его уже сделал.
Т.е. делаем так: кладём в html/com_content/article/component.php
создаём простую ссылку на материал вида: http://www.domain.com/material?tmpl=component
материалу так же присваиваем альтернативный макет?

Update: ошибка:
Код
Strict Standards: Only variables should be assigned by reference in /public_html/plugins/system/websitePreloader/websitePreloader.php on line 14

Strict Standards: Only variables should be assigned by reference in /public_html/plugins/system/websitePreloader/websitePreloader.php on line 15

:(
« Последнее редактирование: 30.01.2014, 23:56:41 от 01Kuzma »
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Не так.
шаблон/component.php
шаблон/html/com_content/article/my_article_template.php

Первый файл нужен, чтобы вывести чистый компонент, без модулей. Если статья будет подгружаться например в попандер типа фанси, то достаточно просто такой файл сделать:
Код: php
<?php defined('_JEXEC') or die;?>
<jdoc:include type="component" />
Если это полноценный переход на страницу, то нужно подключать блок head, стили, скрипты и т.д.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Спасибо! :)
Уже ближе к завершению.
Сделал так: шаблон/component.php
Код
<?php
defined('_JEXEC') or die('Restricted access');
$doc = JFactory::getDocument();
?>
<jdoc:include type="component" />
<!doctype html>
<?php
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/styles.css');
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/bootstrap.min.css');
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/lightbox.css');
$doc->addScript('templates/'.$this->template.'/landing-page/js/jquery.min.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/jquery-ui.min.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/lightbox.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/slides.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/custom2.js');
?>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>     
  <script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/assets/js/html5shiv.js"></script>
  <script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/assets/js/respond.min.js"></script>
<![endif]-->

<link href="http://fonts.googleapis.com/css?family=Titillium+Web:400,700,600,200" rel="stylesheet" type="text/css"/>
</head>
<body>
</body>
</html>


А что тогда вписывать в шаблон/html/com_content/article/my_article_template.php ?


P.S. в таком виде стили и JS не грузятся, а вся секция head в самом низу документа. Что то я ещё серьёзно упустил :)
Ведь нужно вписать какой-то placeholder между <body>
</body> ?
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Вы там чёт все секции перепутали. :)
Вот так тогда уж, ваш файл:

Код: php
<?php
defined('_JEXEC') or die('Restricted access');
$doc = JFactory::getDocument();
?>
<!doctype html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>     
  <script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/assets/js/html5shiv.js"></script>
  <script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/assets/js/respond.min.js"></script>
<![endif]-->
<?php
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/styles.css');
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/bootstrap.min.css');
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/lightbox.css');
$doc->addScript('templates/'.$this->template.'/landing-page/js/jquery.min.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/jquery-ui.min.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/lightbox.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/slides.js');
$doc->addScript('templates/'.$this->template.'/landing-page/js/custom2.js');
?>

<link href="http://fonts.googleapis.com/css?family=Titillium+Web:400,700,600,200" rel="stylesheet" type="text/css"/>
</head>
<body>
<jdoc:include type="component" />
</body>
</html>
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Точно :D
Ну что-то тут за проблема, почему-то ни один файл стиля или JS не грузит... Защита ядра или ещё что-то упустил?
Вот начало html'а из браузера:
Код
<!doctype html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>      
 <script src="/templates/tbr03/assets/js/html5shiv.js"></script>
 <script src="/templates/tbr03/assets/js/respond.min.js"></script>
<![endif]-->
 
<link href="http://fonts.googleapis.com/css?family=Titillium+Web:400,700,600,200" rel="stylesheet" type="text/css"/>
</head>
<body>
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
$this->template нигде не определён. Если не заморачивацо особо, можно тупо имя директории вписать. Вряд ли вы планируете шаблон переименовывать ведь?
т.е. заменить везде записи вида
Код: php
$doc->addStyleSheet('templates/'.$this->template.'/landing-page/css/styles.css');
на
Код: php
$doc->addStyleSheet('templates/moy-shablon/landing-page/css/styles.css');
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Цитировать
Вряд ли вы планируете шаблон переименовывать ведь?
логично :)

заменил, но результат тот же :(
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Странно. Листинг оригинального index.php выложите пожалуйста
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
index.php основного шаблона?
Вот он, вырезал всё из body для экономии места:
Код
<?php
defined('_JEXEC') or die('Restricted access');
$doc = JFactory::getDocument();
$this->language = $doc->language;
$Itemid = JRequest::getInt('Itemid');
?>
<!doctype html>
<?php
if($this->countModules('left and right') == 0) {$cwidth = "12";}
if($this->countModules('left or right') == 1) {$cwidth = "9";}
if($this->countModules('left and right') == 1) {$cwidth = "7";}
if($this->params->get( 'possid') == 0) {$possid = "0";}else{$possid = "1";}
switch ($this->params->get('stylecss')) {
case 0:
    $thems='style0.css'; break; 
}

$doc->addStyleSheet('templates/'.$this->template."/css/$thems");
$doc->addStyleSheet('templates/'.$this->template.'/css/bootstrap.min.css');
?>
<head>
<jdoc:include type="head" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="templates/<?php echo $this->template ?>/css/" />
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>     
  <script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/assets/js/html5shiv.js"></script>
  <script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/assets/js/respond.min.js"></script>
<![endif]-->
<?php /*echo $Itemid;*/ /*For affix*/?>
<?php if ($Itemid=='149' || $Itemid=='155' || $Itemid=='0') { ?>
<script src="http://yandex.st/bootstrap/2.3.0/js/bootstrap.min.js"></script>
<?php } ?>
<script type="text/javascript">
function showIt() {
document.getElementById("affix").style.visibility = "visible";
}
setTimeout(showIt, 3000);
</script>
</head>
<body>
<?php $doc->addScript('templates/'.$this->template.'/js/drop-down.js');?>
</body>


P.S.
Код
$this->template
в component.php работает, т.к. он выводит:
Код
..
  <script src="/templates/tbr03/assets/js/html5shiv.js"></script>
  <script src="/templates/tbr03/assets/js/respond.min.js"></script>
..
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Структуру проверьте. Точно у вас такая?
templates/шаблон/landing-page/css/?
Просто в оригинальном файле нет директории landing-page
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Да, такая, но тут что-то с путями напутано, попробовал в ручную вводить - догружает. Попробую разобраться.
Ещё раз спасибо за столь скорую и качественную помощь!
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Что-то тут очень странно с путями...
Прописал всё руками, теперь они грузятся. Часть кода, что идёт в <body> прописываю в материале.
Сейчас, в итоге, почему-то всё разъезжается...
Не могли бы вы глянуть? Может заметите мою ошибку?
Вот , где всё плохо :) Даже 2 кнопки и те не работают
А вот [url]]
, где всё плохо :) Даже 2 кнопки и те не работают
А вот http://, который просто закинут в папку и с Jooml'ой не имеет ничего общего.

P.S. потом потру адреса
« Последнее редактирование: 31.01.2014, 17:10:10 от 01Kuzma »
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Там конфликт скриптов. Решается с помощью, например, этого плагина.
Чтобы с путями не париться, я бы рекомендовал не менять изначально пути к стилям и скриптам, т.е. не вводить landing-page. Использовать стандартные пути, как было изначально в шаблоне и тот же самый синтаксис подключения.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Поставил его, настройки не менял.
А с путями так и сделал, все стили закинул в папку основного стиля.

Но почему-то всё осталось так же, стили все конфликтные :(
В форме проверка JS, тоже не пашет
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Настройки надо менять. На вскидку, JQ грузится два раза например.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
фух, что-то тут всё сложновато у меня :)
какой-то конфликт JS и CSS. Стиль ломается из-за bootstrap.min.css В обоих примерах библиотека идентичная, только отличается путь загрузки...
Ещё такой вопрос, есть ли возможность вместо загрузки всей секции head, которая делается с помощью
Код
<jdoc:include type="head" /> 
грузить её всю, но кроме встроенных JS и CSS. Словом мне надо грузить только метаданные, т.к. JS и CSS у меня свои для этого шаблона
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Всё же дело было в стилях...
Осталось несколько вопросов, по поводу загрузки только мета информации в head
И есть такой вопрос. Внизу страницы есть кнопка с анкором #top, естественно перед ней нет параметра ?tmpl=component. Прописывая его в ручную URL
изменется до база/?tmpl=component#top
Как можно это обойти и сделать нормальную ссылку? база/статья?tmpl=component#top
Спасибо!
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Посмотреть бы на работу этой кнопки.
*

01Kuzma

  • Захожу иногда
  • 171
  • 1 / 0
Вот, в самом низу:
domain.com/article?tmpl=component#top
« Последнее редактирование: 01.02.2014, 00:03:49 от 01Kuzma »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Helix 3 : Open Graph - не та подпись к ссылке на сайт в FB и не отражается картинка и в ВК, и в FB

Автор lesovik

Ответов: 1
Просмотров: 1410
Последний ответ 23.01.2021, 18:46:15
от gorbi_U
Где отредактировать макет RSS ленты? [РЕШЕНО]

Автор dm-krv

Ответов: 37
Просмотров: 3648
Последний ответ 24.04.2019, 21:04:02
от ProtectYourSite
Альтернативный макет в категории материалов

Автор Zelyonkin

Ответов: 7
Просмотров: 1298
Последний ответ 21.01.2019, 01:22:04
от voland
Макет в виде таблицы

Автор Папа Вовы

Ответов: 12
Просмотров: 1124
Последний ответ 05.05.2018, 00:24:45
от Папа Вовы
Макет вывода материалов К2 не режет картинки

Автор WinssLioN29

Ответов: 0
Просмотров: 573
Последний ответ 15.02.2018, 19:38:59
от WinssLioN29