Dátum magyar formátum PHP-val

Van, hogy igény mutatkozik egy tartalomnál dátum megjelenítésére. Egyeszerű megoldás, és univerzális, ha csak számokat használunk. Azonban talán jobban mutat, ha egy magyar nyelvű oldalon a dátum magyarul, a hónap neveket kiírva jelenik meg.

Az alábbi egyszerű PHP kóddoal magyarra állíthatjuk a megjelenést:

setlocale(LC_TIME, "hu_HU");
echo utf8_encode(strftime('%Y. %B %d.', strtotime($datumforras)));

Ahol a $datumforras változónak azt az értéket adhatjuk meg, amit formázni akarunk. Ha ez adatbázisból jön akkor azt, ha épp az aktuális dátum kell akkor helyette egyszerűen írjuk ezt: time()

 

Joomla oldal title felülírása cikk sablonból

Volt rá igény, úgyhogy lássuk a megoldást.

Egy oldalon nem minden tartalom rendelkezik önálló menüponttal. Azonban ilyenkor az oldal title szövege a cikk címe lesz. Ha szeretnénk ezt egyedileg megadni, két dolgot kell megtennünk.

Fel kell venni egy egyedi mezőt (field) ami típusát tekintve vagy sima text vagy nem beállított.

A field-nek elérhetőnek kell lenni az adott cikkeknél.

Ha ez megtörtént, akkor a cikk nézet (com_content > article view) sablon felülírásának elejére tegyük be a következő kódot:

JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); 
foreach($this->item->jcfields as $jcfield)
{
$item->jcFields[$jcfield->name] = $jcfield;
}
$browserbar = $item->jcFields['fieldneve']->rawvalue;
$document = JFactory::getDocument();
$document->setTitle($browserbar);

Természetesen a 'fieldneve' az általunk megadott field név legyen (az alias, nem pedig a megadott, akár ékezetes elnevezés, ami a label!)

Szöveg átalakítása URL-kompatiblisre Joomlában

A minap volt olyan problémám, hogy egy adminban választó mező értékéhez kellett egyedi class-t adni, hogy frontenden a megjelenésnél lehessen a színnel "játszani".

A legegyszerűbbnek az tűnt, ha a kódot kiegészítem és a választott értéknek megfelelő elnevezésű class-t adom hozzá. Igen ám, de az érték elnevezése tartalmazhat ékezetet, szünetet és speciális írásjeleket is, ezért át kellett alakítani, hogy ezek a karakterek ne kerüljenek bele.

Számos megoldást lehet találni, ahol pl. preg_replace vagy foreach megadással mennek végig a tartalmakon, ami feltehetően itt is működne, de ha a Joomla alapból tudja miért ne azt használjam?

Csupán ennyi kellett:

jimport('joomla.filter.output');
$class = JFilterOutput::stringURLSafe($label);

Több változót tartalmazó tömbből érték kinyerés

Belefutottam a minap egy olyan problémába, hogy egy kiegészítő csak akkor jelenített meg képet, ha volt megadott. Viszont nem lehetett helyetteítő vagy dummy képet megadni, így ha nem volt feltöltve, az oldal megjelenés nem volt egységes, némileg szétcsúszott.

Erre született ez a megoldás:

preg_match('/custom_img="(.*?)"/', $element['attributes'], $dummyimage);

$image['link'] = $image['link'] ==''?$dummyimage:'';

Az alábbi kód a Yootheme Pro sablonhoz született, segítségével az "attribútumok" mezőben meg lehet adni a dummy image linkjét, amit ha nincs beállított kép, behelyettesít .

Virtuemart termék csatolt file egyedi mezővel

Egy munka során merült fel igény termékekhez tájékoztató dokumentum feltöltés, amit azután a vásárló korlátozás nélkül le tud tölteni. A neten található mindenféle megoldás, amik általában többet tudnak mint ami minimálisan szükséges, viszont cseréve jellemzően 19-49$ áron érhető el, néhány esetben még tesztelni sem lehet.

Az alábbi megoldás J 3.x és VM 3.x pároson működik. Továbbfejleszthető...

Egyedi mező felvitele

A Custom fileds (egyedi mezők) menüben vegyünk fel egy új egyedi mezőt: 

  • Típus: String
  • Title (cím): File / Letöltés / stb. (ez lesz a mező csoport elnevezése)
  • Layout position: file

Egyedi mező létrehozás, felülírás sablonból

Ha ez meg van, készítsünk sablon felülírást erről a fileról (ha még nincs):

components > com_virtuemart > views > productdetails > default.php

ide:

templates > [saját sablon neve] > html > com_virtuemart > productdetails > default.php

Egyes sablonoknál előfordul, hogy a VM fájlok felül vannak írva, ezek esetében meg kell keresnünk a legjobb helyet a letölthető fájl(ok)nak.

Egyedi mező beillesztés

<?php// custom file
$product = $this->product;
$position = 'file';$class = 'product-fields';  
if (!empty($product->customfieldsSorted[$position]))  {   
   $custom_title = null;
   foreach ($product->customfieldsSorted[$position] as $field)  {       
      if ( $field->is_hidden )   continue;  ?>
      <div class="product-field product-field-type-<?php echo $field->field_type ?>">           
      <?php if (!$customTitle and $field->custom_title != $custom_title and $field->show_title) { ?>
          <span class="product-fields-title-wrapper"><span class="product-fields-title"><strong><?php echo vmText::_ ($field->custom_title) ?></strong></span>
          <?php if ($field->custom_tip) {
                        echo JHtml::tooltip ($field->custom_tip, vmText::_ ($field->custom_title), 'tooltip.png');
                    } ?></span>
         <?php }
            if (!empty($field->display)){
                  $filestring = $field->display;
                  if (!strpos($filestring,'|')) { 
             ?>
               <div class="product-field-display"><a href="/images/stories/virtuemart/pdf/<?php echo $field->display; ?>">file download</a></div>
            <?php
} else {
                $file = array();
                $file = explode("|",$filestring);?>
               <div class="product-field-display">
               <a href="/images/stories/virtuemart/pdf/<?php echo $file[1] ?>"><?php echo $file[0]; ?></a>
               </div><?php
>                }}
          if (!empty($field->custom_desc)) {
               ?>
         <div class="product-field-desc"><?php echo vmText::_($field->custom_desc) ?></div>
          <?php   }  ?>
        </div>   
<?php    }} // custom file end ?>

A kódot értelem szerint oda tegyük, ahol a tartalmat meg szeretnénk jeleníteni. A kód alapvető formázáshoz szükséges osztályokkal is rendelkezik, amik kiolvashatók.

Működés

A letölthető állományokat a "images/stories/virtuemart/pdf/" könyvtárba kell helyezni. 

 Termék oldalon hozzá adjuk a létrehozott egyedi mezőt.

A mező értéke egyszerű esetben a fájlnév. Ebben az esetben a "Download file" felirat jelenik meg. (Nyelvi változóval helyettesíthető)

Ha szeretnénk egyedi címet adni, azt ilyen formában tehetjük:

állomány cím|filenev.file

Azaz a név és a fájlnév közé tegyünk egy | (pipe) jelet.