Welkom, Gasten
Gebruikersnaam: Wachtwoord: Onthoud mij
12 jan 2019
Diverse hosters zijn van PHP 5.x.x en PHP 7.x.x automatisch overgeschakeld naar PHP 7.3.x. Als je Joomla website en de gebruikte extensies (componenten, plugins en modules) niet up-to-date zijn kan hierdoor je website niet meer werken.
Lees meer...
  • Pagina:
  • 1

Onderwerp: Een override maken

Een override maken 6 jaren 3 maanden geleden #1

  • Arjan
  • Arjan's Profielfoto Onderwerp Auteur
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Berichten: 1459
  • Ontvangen bedankjes 5
Naar aanleiding van een opmerking van mij over een override kreeg ik de vraag; Waar heb jij het over?

Nou ik heb het er over dat Joomla een heel mooi systeem/programma is om iets, tekst, afbeeldingen, hyperlinken, enzovoort, in een database te stoppen maar dat het wel is gemaakt voor iedereen die er gebruik van zou willen maken.
Omdat niet bekend is wat Pietje in Amsterdam en Kim in Hongkong nu precies met Joomla willen gaan doen staat er heel veel code in die meestal niet eens gebruikt word. En code die je graag wilt hebben staat er juist niet in.

Voor de ontbrekende code kan je een module, plugin of component installeren maar je kan ook de originele bestanden van Joomla aanpassen. Dat aanpassen word een override genoemd.

Op mijn eigen site probeer ik zo min mogelijk code te gebruiken met in mijn achterhoofd de gedachten dat hoe minder er in de browser geladen moet worden des te sneller staat het in beeld. Waarschijnlijk komt dat door dat mijn eerste kennismaking met internet via een telefoonlijntje ging en iedere tik er weer één was. Behalve dat miste ik ook een "Ga 1 pagina terug knopje".

Om nu beide te realiseren kwam ik uit in de volgende map components\com_content\views\article\tmpl en dan het bestand default.php
Het volgende staat in dit bestand,
<?php
/**
 * @package    Joomla.Site
 * @subpackage com_content
 * @copyright  Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

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

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

// Create shortcuts to some parameters.
$params     = $this->item->params;
$images = json_decode($this->item->images);
$urls = json_decode($this->item->urls);
$canEdit = $this->item->params->get('access-edit');
$user    = JFactory::getUser();

?>
<div class="item-page<?php echo $this->pageclass_sfx?>">
<?php if ($this->params->get('show_page_heading')) : ?>
   <h1>
   <?php echo $this->escape($this->params->get('page_heading')); ?>
   </h1>
<?php endif; ?>
<?php
if (!empty($this->item->pagination) AND $this->item->pagination && !$this->item->paginationposition && $this->item->paginationrelative)
{
 echo $this->item->pagination;
}
 ?>

<?php if ($params->get('show_title')) : ?>
   <h2>
   <?php if ($params->get('link_titles') && !empty($this->item->readmore_link)) : ?>
      <a href="<?php echo $this->item->readmore_link; ?>">
      <?php echo $this->escape($this->item->title); ?></a>
   <?php else : ?>
      <?php echo $this->escape($this->item->title); ?>
   <?php endif; ?>
   </h2>
<?php endif; ?>

<?php if ($canEdit ||  $params->get('show_print_icon') || $params->get('show_email_icon')) : ?>
   <ul class="actions">
   <?php if (!$this->print) : ?>
      <?php if ($params->get('show_print_icon')) : ?>
         <li class="print-icon">
         <?php echo JHtml::_('icon.print_popup',  $this->item, $params); ?>
         </li>
      <?php endif; ?>

      <?php if ($params->get('show_email_icon')) : ?>
         <li class="email-icon">
         <?php echo JHtml::_('icon.email',  $this->item, $params); ?>
         </li>
      <?php endif; ?>

      <?php if ($canEdit) : ?>
         <li class="edit-icon">
         <?php echo JHtml::_('icon.edit', $this->item, $params); ?>
         </li>
      <?php endif; ?>

   <?php else : ?>
      <li>
      <?php echo JHtml::_('icon.print_screen',  $this->item, $params); ?>
      </li>
   <?php endif; ?>

   </ul>
<?php endif; ?>

<?php  if (!$params->get('show_intro')) :
   echo $this->item->event->afterDisplayTitle;
endif; ?>

<?php echo $this->item->event->beforeDisplayContent; ?>

<?php $useDefList = (($params->get('show_author')) or ($params->get('show_category')) or ($params->get('show_parent_category'))
   or ($params->get('show_create_date')) or ($params->get('show_modify_date')) or ($params->get('show_publish_date'))
   or ($params->get('show_hits'))); ?>

<?php if ($useDefList) : ?>
   <dl class="article-info">
   <dt class="article-info-term"><?php  echo JText::_('COM_CONTENT_ARTICLE_INFO'); ?></dt>
<?php endif; ?>
<?php if ($params->get('show_parent_category') && $this->item->parent_slug != '1:root') : ?>
   <dd class="parent-category-name">
   <?php $title = $this->escape($this->item->parent_title);
   $url = '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->parent_slug)).'">'.$title.'</a>';?>
   <?php if ($params->get('link_parent_category') and $this->item->parent_slug) : ?>
      <?php echo JText::sprintf('COM_CONTENT_PARENT', $url); ?>
   <?php else : ?>
      <?php echo JText::sprintf('COM_CONTENT_PARENT', $title); ?>
   <?php endif; ?>
   </dd>
<?php endif; ?>
<?php if ($params->get('show_category')) : ?>
   <dd class="category-name">
   <?php    $title = $this->escape($this->item->category_title);
   $url = '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catslug)).'">'.$title.'</a>';?>
   <?php if ($params->get('link_category') and $this->item->catslug) : ?>
      <?php echo JText::sprintf('COM_CONTENT_CATEGORY', $url); ?>
   <?php else : ?>
      <?php echo JText::sprintf('COM_CONTENT_CATEGORY', $title); ?>
   <?php endif; ?>
   </dd>
<?php endif; ?>
<?php if ($params->get('show_create_date')) : ?>
   <dd class="create">
   <?php echo JText::sprintf('COM_CONTENT_CREATED_DATE_ON', JHtml::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2'))); ?>
   </dd>
<?php endif; ?>
<?php if ($params->get('show_modify_date')) : ?>
   <dd class="modified">
   <?php echo JText::sprintf('COM_CONTENT_LAST_UPDATED', JHtml::_('date', $this->item->modified, JText::_('DATE_FORMAT_LC2'))); ?>
   </dd>
<?php endif; ?>
<?php if ($params->get('show_publish_date')) : ?>
   <dd class="published">
   <?php echo JText::sprintf('COM_CONTENT_PUBLISHED_DATE_ON', JHtml::_('date', $this->item->publish_up, JText::_('DATE_FORMAT_LC2'))); ?>
   </dd>
<?php endif; ?>
<?php if ($params->get('show_author') && !empty($this->item->author )) : ?>
   <dd class="createdby">
   <?php $author = $this->item->created_by_alias ? $this->item->created_by_alias : $this->item->author; ?>
   <?php if (!empty($this->item->contactid) && $params->get('link_author') == true): ?>
   <?php
      $needle = 'index.php?option=com_contact&view=contact&id=' . $this->item->contactid;
      $menu = JFactory::getApplication()->getMenu();
      $item = $menu->getItems('link', $needle, true);
      $cntlink = !empty($item) ? $needle . '&Itemid=' . $item->id : $needle;
   ?>
      <?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', JHtml::_('link', JRoute::_($cntlink), $author)); ?>
   <?php else: ?>
      <?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', $author); ?>
   <?php endif; ?>
   </dd>
<?php endif; ?>
<?php if ($params->get('show_hits')) : ?>
   <dd class="hits">
   <?php echo JText::sprintf('COM_CONTENT_ARTICLE_HITS', $this->item->hits); ?>
   </dd>
<?php endif; ?>
<?php if ($useDefList) : ?>
   </dl>
<?php endif; ?>

<?php if (isset ($this->item->toc)) : ?>
   <?php echo $this->item->toc; ?>
<?php endif; ?>

<?php if (isset($urls) AND ((!empty($urls->urls_position) AND ($urls->urls_position=='0')) OR  ($params->get('urls_position')=='0' AND empty($urls->urls_position) ))
      OR (empty($urls->urls_position) AND (!$params->get('urls_position')))): ?>
<?php echo $this->loadTemplate('links'); ?>
<?php endif; ?>

<?php if ($params->get('access-view')):?>
<?php  if (isset($images->image_fulltext) and !empty($images->image_fulltext)) : ?>
<?php $imgfloat = (empty($images->float_fulltext)) ? $params->get('float_fulltext') : $images->float_fulltext; ?>
<div class="img-fulltext-<?php echo htmlspecialchars($imgfloat); ?>">
<img
   <?php if ($images->image_fulltext_caption):
      echo 'class="caption"'.' title="' .htmlspecialchars($images->image_fulltext_caption) .'"';
   endif; ?>
   src="<?php echo htmlspecialchars($images->image_fulltext); ?>" alt="<?php echo htmlspecialchars($images->image_fulltext_alt); ?>"/>
</div>
<?php endif; ?>
<?php
if (!empty($this->item->pagination) AND $this->item->pagination AND !$this->item->paginationposition AND !$this->item->paginationrelative):
   echo $this->item->pagination;
 endif;
?>
<?php echo $this->item->text; ?>
<?php
if (!empty($this->item->pagination) AND $this->item->pagination AND $this->item->paginationposition AND!$this->item->paginationrelative):
    echo $this->item->pagination;?>
<?php endif; ?>

<?php if (isset($urls) AND ((!empty($urls->urls_position)  AND ($urls->urls_position=='1')) OR ( $params->get('urls_position')=='1') )): ?>
<?php echo $this->loadTemplate('links'); ?>
<?php endif; ?>
   <?php //optional teaser intro text for guests ?>
<?php elseif ($params->get('show_noauth') == true and  $user->get('guest') ) : ?>
   <?php echo $this->item->introtext; ?>
   <?php //Optional link to let them register to see the whole article. ?>
   <?php if ($params->get('show_readmore') && $this->item->fulltext != null) :
      $link1 = JRoute::_('index.php?option=com_users&view=login');
      $link = new JURI($link1);?>
      <p class="readmore">
      <a href="<?php echo $link; ?>">
      <?php $attribs = json_decode($this->item->attribs);  ?>
      <?php
      if ($attribs->alternative_readmore == null) :
         echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
      elseif ($readmore = $this->item->alternative_readmore) :
         echo $readmore;
         if ($params->get('show_readmore_title', 0) != 0) :
             echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
         endif;
      elseif ($params->get('show_readmore_title', 0) == 0) :
         echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
      else :
         echo JText::_('COM_CONTENT_READ_MORE');
         echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
      endif; ?></a>
      </p>
   <?php endif; ?>
<?php endif; ?>
<?php
if (!empty($this->item->pagination) AND $this->item->pagination AND $this->item->paginationposition AND $this->item->paginationrelative):
    echo $this->item->pagination;?>
<?php endif; ?>

<?php echo $this->item->event->afterDisplayContent; ?>
</div>
en telt in totaal 219 regels. Vele daar van gebruik ik niet en ik mis hier in ook het html5 wat uiteindelijk de nieuwe standaard gaat worden.
Dus ik heb het aangepast naar dit,
<?php
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
// De tooltip in alle pagina's verwerkt!
JHtml::_('behavior.tooltip');
// Parameters.
$params     = $this->item->params;
$canEdit = $this->item->params->get('access-edit');
$user    = JFactory::getUser();
?>
<article class="artikel"><h1><?php echo $this->escape($this->item->title); ?> geschreven door Arjan Roosemalen</h1>
   <header id="artikel_hoofd"><h1>Hoofd van <?php echo $this->escape($this->item->title); ?></h1>
      <div id="h2">
         <h2><?php echo $this->escape($this->item->title); ?></h2>
      </div>
      <div id="iconen">
         <ul class="actions">
            <?php if ($params->get('show_print_icon')) : ?>
            <li class="print-icon">
               <?php echo JHtml::_('icon.print_popup', $this->item, $params); ?>
            </li>
            <?php endif; ?>
            <?php if ($params->get('show_email_icon')) : ?>
            <li class="email-icon">
               <?php echo JHtml::_('icon.email', $this->item, $params); ?>
            </li>
            <?php endif; ?>
            <?php if ($canEdit) : ?>
            <li class="edit-icon">
               <?php echo JHtml::_('icon.edit', $this->item, $params); ?>
            </li>
            <?php endif; ?>
            <li class="ga_terug_knop">
              <a href="javascript:history.go(-1)">
              <img src="http://www.roosemalen.nl/templates/dekjam/images/terug.png" alt="Vorige pagina" title="Vorige pagina" />
              </a>
            </li>
         </ul>
      </div>
   </header>
   <section id="artikel_tekst"><h1><?php echo $this->escape($this->item->title); ?> tekst</h1>
      <?php echo $this->item->text; ?>
   </section>
   <footer id="artikel_eind"><h1><?php echo $this->escape($this->item->title); ?> voettekst</h1>
      <div id="datum"><?php echo JText::sprintf('COM_CONTENT_PUBLISHED_DATE_ON', JHtml::_('date', $this->item->publish_up, JText::_('DATE_FORMAT_LC2'))); ?></div>
      <?php echo $this->item->event->afterDisplayContent; ?>
   </footer>
</article>
wat nog maar 48 regels zijn en alles heeft wat ik nodig vind. Zelfs het "Ga 1 pagina terug knopje"
Kijk hier maar!

Als je nu het bestand default.php verandert in de map components\com_content\views\article\tmpl en er komt een update van Joomla die iets doet met dat bestand dan ben je weer bij af en mag je opnieuw de code induiken.

Daarom plaatsen we dit bestand in een aparte map in je templatemap. Misschien heb je die map al wel eens gezien want hij komt bij meerdere tempates voor.

De map heet html en daarin plaatsen we de map com_content. Daar plaatsen we weer de map article in en daar gaat dan de aangepaste default .php in. Joomla kijkt eerst of er een map html is in je template en kijkt dan wat er in staat. Alles wat daar instaat heeft voorrang op de orginele bestanden van Joomla. Joomla updates hebben op die map geen invloed.
Lekker ontspannen mensen helpen met hun website problemen.

Gelieve Inloggen of een account aanmaken om deel te nemen aan het gesprek.

Re: Een override maken 6 jaren 3 maanden geleden #2

  • Cristina
  • Cristina's Profielfoto
  • Offline
  • Gold Boarder
  • Gold Boarder
  • Berichten: 192
  • Ontvangen bedankjes 0
ok! dank je voor je mooie uitleg !!
Maar... ik ben altijd bang dat ik iets weghaalt wat niet weg moet, ik zal er aandacht naar kijken en ook proberen te "verkleinen".
Misschien een stomme vragen maar:
geldt dit alleen voor de default of voor meerdere bestanden??
en als ik die map in de template plaats moet die andere weg???


Met honing bereik je meer dan met azijn :)

Gelieve Inloggen of een account aanmaken om deel te nemen aan het gesprek.

Extra uitleg 6 jaren 3 maanden geleden #3

  • Arjan
  • Arjan's Profielfoto Onderwerp Auteur
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Berichten: 1459
  • Ontvangen bedankjes 5

Maar... ik ben altijd bang dat ik iets weghaalt wat niet weg moet

Als jij eerst het bestand in de map html\com_content\article in je templatemap zet dan gebeurt er niets met het originele bestand. En kan je dus naar hartenlust weggooien en zo.

geldt dit alleen voor de default of voor meerdere bestanden??

Haalt als het goed is niet uit welk component je wilt aanpassen of welk bestand. Let alleen wel op hoe je hem dan plaatst in de map html. het gedeelte com_contact kan je ook aanpassen maar hoort niet in com_content te staan.

en als ik die map in de template plaats moet die andere weg???

Zo als ik al zij zit er in de meeste templates al een map html. Nu weet ik niet wat daar bij jouw instaat maar misschien hebben hun ook al de com_content aangepast. Plaats de mappen waar de bestanden in staan waar je mee wilt gaan "spelen" even buiten de map html (kopieeren) en ga dan naar hartenlust bezig. Je kan dan altijd de originele bestanden weer terug plaatsen!

Overigens is het volgende misschien een handige tip tijdens het spelen/zoeken
<?php if ($params->get('show_title')) : ?>
   <h2>
   <?php if ($params->get('link_titles') && !empty($this->item->readmore_link)) : ?>
      <a href="<?php echo $this->item->readmore_link; ?>">
      <?php echo $this->escape($this->item->title); ?></a>
   <?php else : ?>
      <?php echo $this->escape($this->item->title); ?>
   <?php endif; ?>
   </h2>
<?php endif; ?>
Hier staat een stukje wat zegt hoe er een titel getoond moet worden als hij getoond moet worden. Je ziet daar ook de code <h2> staan en die word weer afgesloten met </h2>
Als je nu net na die <h2> een een tekst zet, lekker ding of zo, en het verschijn in beeld als je de webpagina ververst dan weet je dat je in het goede stukje aan het zoeken bent.

Succes
Lekker ontspannen mensen helpen met hun website problemen.

Gelieve Inloggen of een account aanmaken om deel te nemen aan het gesprek.

  • Pagina:
  • 1
Tijd voor maken pagina: 0.485 seconden
Gemaakt door Kunena
logo mijnjoomlaforum colored puzzle2

MijnJoomlaForum.nl is niet verbonden aan en is geen onderdeel van Open Source Matters, Inc, of het Joomla! project!

Hosted by Otto
Webdesign by Renata
Sitemap

Donatie Knop