@NesteA88

Как удалить или не исполнять часть кода PHP в зависимости от URL страницы?

Добрый день!

Сайт на Joomla. К примеру, есть страница с URL - https://test.ru/test.html

Макет вывода этой страницы:

<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

$user = JFactory::getUser();

if($this->params->get('showletternavigation')){
  echo MusColHelper::letter_navigation($this->artist->letter);
}

$using_album_image = false;

if(!$this->artist->picture){
  $artist_image = MusColHelper::getArtistDefaultImage($this->artist->id) ;
  $artist_image_url = JRoute::_('images/albums/'.$artist_image);
  $using_album_image = true;
  $this->artist->picture = $artist_image;
}
else {
  $artist_image = $this->artist->picture ;
  $artist_image_url = JRoute::_('images/artists/'.$this->artist->picture);
}

if(!$this->artist->cover){
  $artist_cover = $artist_image ;
  $artist_cover_url = JRoute::_('images/artists/'.$artist_cover);
  if($using_album_image) $artist_cover_url = JRoute::_('images/albums/'.$artist_cover);
}
else{
  $artist_cover = $this->artist->cover ;
  $artist_cover_url = JRoute::_('images/artists/'.$artist_cover);
}

$this->assignRef('artist_image_url', $artist_image_url);
$this->assignRef('artist_cover_url', $artist_cover_url);

?>

<div itemscope itemtype="http://schema.org/MusicGroup" class="main">

  <?php echo $this->loadTemplate('header'); ?>

<div class="row-fluid row noMarginBs2 artistmain">
      <div class="span4 col-sm-4 artist-left-column">
        <?php
        //new plugin access
        $dispatcher = JEventDispatcher::getInstance();
        $plugin_ok = JPluginHelper::importPlugin('muscol');
        $results = $dispatcher->trigger('onDisplayArtist', array ($this->artist->id));
        ?>

        <?php if($this->artist->picture || $this->artist->city || $this->artist->country || isset($this->artist->genre_name) || $this->artist->years_active || $this->artist->url ){ ?>

        <div class="row-fluid row info">

          <div class="span12 col-sm-12 ">

          <?php echo $this->loadTemplate('details'); ?>

          </div>

        </div>

        <?php } ?>

        <?php if($this->params->get('showartistbookmarks', 1) ){ // show the bookmark system ?>

        <?php echo $this->loadTemplate('bookmark'); ?>

        <?php } ?>

        <?php echo $this->loadTemplate('comments'); ?>
          
      </div>
      <div class="span8 col-sm-8 noMarginBs2">
		
      <?php if( $this->artist->review ): ?>

        <?php echo $this->loadTemplate('review'); ?>

        <?php endif; ?>

        <?php if($this->params->get('showartistalbums', 1) && $this->params->get('showartistsongs', 1)){ ?>
          
        <!-- Nav tabs -->
         
        <ul class="nav nav-tabs" role="tablist">
            <li role="presentation" class="active"><a href="#songs" onclick="show_song = true; show_album = false;" aria-controls="songs" role="tab" data-toggle="tab"><?php echo JText::_('SONGS'); ?></a></li>
            <li role="presentation"><a href="#albums" onclick="show_album = true; show_song = false;" aria-controls="albums" role="tab" data-toggle="tab"><?php echo JText::_('ALBUMS'); ?></a></li>
        </ul>
        <?php } ?>

        <?php if ($user->authorise('muscol.displayplayer', 'com_muscol') ) {
          echo $this->player;
        } ?>

        <!-- Tab panes -->
        <div class="tab-content">
            <?php if($this->params->get('showartistsongs', 1)){ ?>
          <div role="tabpanel" class="tab-pane active" id="songs">

            <?php echo $this->loadTemplate('songs'); ?>

          </div>
          <?php } ?>
            
          <?php if($this->params->get('showartistalbums', 1)){ ?>
          <div role="tabpanel" class="tab-pane <?php if(!$this->params->get('showartistalbums', 1)){ ?>active<?php } ?>" id="albums">

            <?php echo $this->loadTemplate('albums'); ?>

          </div>
          <?php } ?>
          </div>

          
          <?php if( $this->artist->review2 ): ?>

        <?php echo $this->loadTemplate('review2'); ?>

        <?php endif; ?>
          
          <?php echo $this->loadTemplate('related'); ?>
          
</div>

</div>
</div>

<?php include(JPATH_SITE.DS.'components'.DS.'com_muscol'.DS.'templates'); ?>

<script type="text/javascript">

var artist_id = <?php echo $this->artist->id; ?>

var lastPlaylists = <?php echo json_encode($this->lastPlaylists); ?>;

var isloading_album;
var isloading_song;

var start = 0;
var start_album = 0;
var start_song = 0;
var pagination_step = 20;
var more_items = true;

var more_items_album = true;
var more_items_song = true;

var show_album = false;
var show_song = true;
<?php if($this->params->get('showartistsongs', 1) && !$this->params->get('showartistalbums', 1)){ ?>
show_song = true;
<?php } ?>

var noMoreEntriesText = "<?php echo JText::_('NO_MORE_ENTRIES'); ?>";
var showSongsText = "<?php echo JText::_('SHOW_SONGS'); ?>";
var hideSongsText = "<?php echo JText::_('HIDE_SONGS'); ?>";

</script>
<div align="center"><?php echo MusColHelper::showMusColFooter(); ?></div>


Задача: надо, чтобы при нахождении на странице https://test.ru/test.html удалялась или не исполнялась часть кода (ниже).

<!-- Nav tabs -->
         
        <ul class="nav nav-tabs" role="tablist">
            <li role="presentation" class="active"><a href="#songs" onclick="show_song = true; show_album = false;" aria-controls="songs" role="tab" data-toggle="tab"><?php echo JText::_('SONGS'); ?></a></li>
            <li role="presentation"><a href="#albums" onclick="show_album = true; show_song = false;" aria-controls="albums" role="tab" data-toggle="tab"><?php echo JText::_('ALBUMS'); ?></a></li>
        </ul>
        <?php } ?>

        <?php if ($user->authorise('muscol.displayplayer', 'com_muscol') ) {
          echo $this->player;
        } ?>

        <!-- Tab panes -->
        <div class="tab-content">
            <?php if($this->params->get('showartistsongs', 1)){ ?>
          <div role="tabpanel" class="tab-pane active" id="songs">

            <?php echo $this->loadTemplate('songs'); ?>

          </div>
          <?php } ?>
            
          <?php if($this->params->get('showartistalbums', 1)){ ?>
          <div role="tabpanel" class="tab-pane <?php if(!$this->params->get('showartistalbums', 1)){ ?>active<?php } ?>" id="albums">

            <?php echo $this->loadTemplate('albums'); ?>

          </div>
          <?php } ?>
          </div>
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
sergeytolkachyov
@sergeytolkachyov
https://web-tolk.ru
Судя по наличию хелпера MusColHelper - у Вас там кастомный какой-то компонент - com_muscol. Если он написан по канонам джумлы, то можно попробовать сделать переопределение макета и в сущности уже выбрать этот макет. Если нет, то сделать костыль, конечно, можно. Но как только изменится URL этой страницы (алиас поменяют, например), оно перестанет работать.
Какая джумла у вас там: 2.5.28 или 3.х? Bootstrap 2 (CSS фреймворк) давненько уже устарел, лет этак 10 уже
Чтобы правильно определить исключаемый адрес, нужно отключить SEF в настройках и посмотреть на адрес нужной страницы вида index.php?option=com_muscol&view=artist&artist_id=123 и т.д.
В файле макета нужно брать GET-параметры из URL и сравнивать нужные:

$input = JFactory::getApplication()->input; // объект для получения данных из суперглобальных массивов в joomla
$option = $input->getCmd('option', ''); // мы в нашем компоненте muscol
$view = $input->getCmd('view', ''); // view=artist - на странице просмотра артиста
$artist_id= $input->getInt('artist_id', ''); // id артиста

А дальше смотрим, что для артиста с конкретным id мы что-то не показываем:
<?php if($option == 'com,_muscol' && $view == 'artist' && $artist_id != '999999') : ?>
 Тут помещаем HTML, который нужно показывать для ВСЕХ артистов КРОМЕ артиста с ID = 999999
<?php endif; ?>

А вообще приходите в телеграм чат Joomla-сообщества, там быстрее подскажут.
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
if($_SERVER['REQUEST_URI'] === '/test.html') {
    //
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы