- www.ghsvs.de, 2019-08-21
- https://www.ghsvs.de/programmierer-schnipsel/spezielles-ghsvs-internes/138-uebersicht-eigener-less-variablen-template
- Übersicht eigener Bootstrap-3-LESS-Variablen aus Template - GHSVS-Dein Web mit Mehr

SpeziellSchnipsel

Eine Liste eigener LESS-Variablen des aktiven Templates, die Bootstrap 3 nicht kennt. In LESS kann man Variablen vordefinieren. Farbwerte, Paddings und mehr. Hilfreich z.B., will man mal einen Grauton etwas heller stellen, Man muss nicht in diversen Dateien die color-Werte anpassen, sondern kann das an 1 Stelle erledigen. Man kann zusätzlich eigene (custom) definieren oder z.B. in Bootstrap 3 Variable aus Bootstrap 2 weiterverwenden und nach und nach umstellen. 

Custom Bootstrap-3-Variable des aktuellen Templates dynamisch ausgelesen

Datei /media/plg_system_bs3ghsvs/less/variables.less nicht gefunden. ICOMOONCLASSES_APOLOGISE

<?php
/*
2015-10-31
custom-bootstrap-3-variables.php
Variablen und Werte aus BS3-variables.less (Orig.) auslesen.
Anschließend Abgleich mit variables.less aus Template.
Anzeige nur der eigenen Variablen.
*/
?>
<?php
defined('_JEXEC') or die;
$selector = 'custom-bootstrap-3-variables';

$html = array();
$link = '';
$countCollect = 0;
$app = JFactory::getApplication();

// Relevant für FooTable, wenn paging enabled
if (!($maxentries = $app->input->get->getInt('maxentries')))
{
 $maxentries = 50;
}

$apologise = JText::_('ICOMOONCLASSES_APOLOGISE');

$file = '/media/plg_system_bs3ghsvs/less/variables.less';
$fileAbs = JPATH_SITE . $file;

$template = $app->getTemplate();
$fileCustom = '/templates/' . $template . '/less/variables.less';
$fileCustomAbs = JPATH_SITE . $fileCustom;

if (!file_exists($fileAbs))
{
 $html[] = '<p class="alert alert-error">Datei ';
 $html[] = $file;
 $html[] = ' nicht gefunden.';
 $html[] = $apologise;
 $html[] = '</p>';
}
elseif (!file_exists($fileCustomAbs))
{
 $html[] = '<p class="alert alert-error">Datei ';
 $html[] = $fileCustom;
 $html[] = ' nicht gefunden.';
 $html[] = $apologise;
 $html[] = '</p>';
}
else
{
 $link = '<p><a href="' . JUri::root(true) . $fileCustom . '" target="_blank">' . $fileCustom . '</a></p>';
 $link .= '<p><a href="' . JUri::root(true) . $file . '" target="_blank">' . $file . '</a></p>';
 $collect = collectLessVariablesGhsvs($fileAbs);
 $nl = "\n";
 if (count($collect))
 {
  $collectCustom = collectLessVariablesGhsvs($fileCustomAbs);
  $countCollect = count($collectCustom);
  if ($countCollect)
  {
   $i = 0;
   $html[] = '<h4>Eigene Template-Variablen (' . $template . ')</h4>';
   #$html[] = '<div class="table-responsive">';
   $html[] = '<table class="table table-condensed table-bordered" id="' . $selector . '">';
   $html[] = '<thead>';
   $html[] = '<tr>';
   $html[] = '<th>Variable</th>';
   $html[] = '<th data-breakpoints="xxs">Wert</th>';
   $html[] = '<th data-type="number">#</th>';
   $html[] = '</tr>';
   $html[] = '</thead>';
   $html[] = '<tbody>';
   foreach ($collectCustom as $k => $v)
   {
    if (isset($collect[$k])){
					--$countCollect;
					continue;
				}

    $html[] = '<tr>';
    $html[] = '<td data-ghsvs="toggle">' . $k . '</td>';
    $html[] = '<td>' . $v . '</td>';
    $html[] = '<td data-ghsvs="number">' . (++$i) . '</td>';
    $html[] = '</tr>';
   }
   $html[] = '</tbody>';
   $html[] = '</table>';
   #$html[] = '</div><!--/table-responsive-->';
  }
 }
}
if (!count($html))
{
 $html[] = '<p class="alert alert-error">Da ist wohl was schief gelaufen. ';
 $html[] = $apologise;
 $html[] = '</p>';
}
else
{
 // Mehr Einträge in Tabelle anzeigen?
 $uri = JUri::getInstance();
 if ($countCollect > $maxentries)
 {
  $uri->setVar('maxentries', $countCollect);
  $link .= '<p class=" btn btn-default text-fett" style="font-size:1.3em;"><a rel="nofollow" href="'.$uri.'#BELOWHEADER">Alle '.$countCollect.' Einträge auf 1 Seite  anzeigen</a></p>';
 }

 ########### FooTable 3 START ###########
 // Speziell. Wir haben Footable auf unserem Server via Plugin installiert.
 // Ggf. Zeilen entfernen
 $options = array(
  'empty' => JText::_('GHSVS_MODULES_FOOTABLE_EMPTY'),
  'sorting' => array(
   'enabled' => true
  ),
  'filtering' => array(
   'enabled' => true
  ),
  'paging' => array(
   'enabled' => ($countCollect > $maxentries) ? true : false,
   'size' => $maxentries,
   'countFormat' => JText::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', '{CP}', '{TP}'),
   'current' => 1,
   'limit' => 10,
   'position' => 'center'
  ),
  'state' => array(
   'enabled' => true,
   'filtering' => true,
   'paging' => true,
   'sorting' => true,
   'key' => $selector
  ),
  // Erster geöffnet. Auch nach Sortieren wird erster geöffnet.
  'expandFirst' => false,
  //'useParentWidth' => true,
  'stopPropagation' => false,
  // Leichteres Handling der Breakpoints. Nehmen drunter liegende mit.
  'cascade' => true,
  'breakpoints' => array(
  // Du muss xxs eingeben, damit Spalte bei *xs* *verschwindet*!
  'xxs' => 480,
  'xs' => 620,
  'sm' => 768,
  'md' => 992,
  'lg' => 1200,
  ),
 );
 JHtml::_('bs3ghsvs.footable', '#' . $selector, $options);
 ########### FooTable 3 ENDE ###########

 echo '<style>table{
 word-wrap: normal
 -webkit-hyphens: none;
 -moz-hyphens: none;
 -ms-hyphens: none;
 -o-hyphens: none;
 hyphens: none;
 }
 @-moz-document url-prefix() {
 fieldset { display: table-cell; }
 }
 [data-ghsvs="toggle"]{
  font-weight: bold;
  background-color: #fafafa;
  cursor:pointer;
 }
 [data-ghsvs="number"]{
  text-align: right;
 }
 </style>';

}

echo $link . implode("\n", $html);

function collectLessVariablesGhsvs($fileAbs)
{
 $lines = file($fileAbs);
	
 $collect = array();

 foreach ($lines as $i => $line){
  $line = trim($line);
  if (strpos($line, '@') !== 0 || strpos($line, ':') === false)
  {
   continue;
  }
  // Fix 2015-10-17.
  // Derzeit verwendet BS3 nur "//" als Kommentarzeichen
  if (strpos($line, '//') !== false)
  {
   $line = explode('//', $line, 2);
   $line = $line[0];
  }

  $line = explode(':', $line, 2);
  if (count($line) != 2){
   continue;
  }
  
  // Vorsicht! Derzeit geht das noch mit Semikolon.
  // Es sind aber auch Semikolons statt Komma zwischen
  // Funktions-Parametern erlaubt.
  // Siehe "Fix 2015-10-17"
  // $parts = explode(';', $line[1], 2);
  // $line[1] = trim($parts[0]);
  
  $collect[trim($line[0])] = trim($line[1], ' ;');
 }
		
 return $collect;
}

Verbesserungsvorschläge und Feature-Wünsche sind willkommen.

Alle nicht explizit als fertige Erweiterung markierten Skripte und Codes von www.ghsvs.de dienen als Ansätze / Ideen für eigene Ausarbeitung. GHSVS bzw. die jeweiligen Autoren übernehmen keinerlei Garantien beim Einsatz Ihrer kostenlosen Erweiterungen, Programme, Codes und Skripte, helfen aber gerne bei Rückfragen, soweit zeitlich möglich.

CSS Konfiguration LESS Template Bootstrap