Поддержка Темы и шаблоны Есть ли такое в WP, чтобы тему собирать из готовых функций и инклюдов?

  • Здраствуйте!

    подскажите, может быть гдето есть такая разработка тем для WordPress,
    чтобы все важные функции темы выносились в отдельные папки CMS.

    Это нужно чтобы при создании новых тем не писать код для новой темы с нуля, а инклюдить нужные PHP-файлы из библиотеки.
    Чтобы для каждого php-файла темы был выбор из набора файлов инклюд или функций.
    Например:
    = вывод кратких новостей в категории
    = устройство выпадающего меню с адаптивностью.
    = боковое меню с адаптивностью.
    = футер с адаптивностью.
    и так далее.

    Чтобы допустим для footer.php в папке /footer/ были файлы с 1, 2 ,3, 4-колоночным адаптивным футером. И их можно было бы выбрать, просто раскоментировав одну из строк в footer.php.
    CSS классы HTML-тэгов можно задать как аргументы таких функций (если они нужны разные для разных тем).

    и подскажите как это официально могло бы называться на русском и английском языке (чтобы я знал что мне поискать)

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Yui

    (@fierevere)

    ゆい

    принципиально такое возможно, на практике такого видеть не приходилось.
    В сложных ( и обычно премиум ) темах такое обычно настраивается не комментированием в коде, а в настройках темы, в стандартном интерфейсе настроек темы (или специальном, для некоторых старых премиум тем)

    • Ответ изменён 2 недели, 4 дня назад пользователем Yui.

    обычные настройки темы (как в премиумных темах) вряд ли пригодятся, так как количество файлов инклюдов может быть большим от разных разработчиков, но в одних и тех же папках.
    то есть нужен либо выбор файла с помощью select (создаём всех список файлов), либо инклюд в php. для нубасиков выбор удобнее выбор файла.

    я могу и сам написать, но не хочу создавать велосипед если он уже гдето создан. вдруг ктото создал професиональнее.

    функции такие у меня есть.

    // Create a list of files or folders and store them in an array
    function makefilelist($folder, $filter, $sort=true, $type="files") {
    	$res = array();
    	$filter = explode("|", $filter); 
    	$temp = opendir($folder);
    	while ($file = readdir($temp)) {
    		if ($type == "files" && !in_array($file, $filter)) {
    			if (!is_dir($folder.$file)) { $res[] = $file; }
    		} elseif ($type == "folders" && !in_array($file, $filter)) {
    			if (is_dir($folder.$file)) { $res[] = $file; }
    		}
    	}
    	closedir($temp);
    	if ($sort) { sort($res); }
    	return $res;
    }
    
    // Create a selection list from an array created by makefilelist()
    function makefileopts($files, $selected = "") {
    	$res = "";
    	for ($i = 0; $i < count($files); $i++) {
    		$sel = ($selected == $files[$i] ? " selected='selected'" : "");
    		$res .= "<option value='".$files[$i]."'$sel>".$files[$i]."</option>\n";
    	}
    	return $res;
    }
    
    // ТОЛЬКО МАЛЕНЬКИМИ БУКВАМИ  $ext_filter = array(".gif", ".jpeg", ".jpg", ".png") или $ext_filter = array("gif", "jpeg", "jpg", "png")
    // Create a list of files or folders and store them in an array
    // You may filter out extensions by adding them to $extfilter as:
    // $ext_filter = "gif|jpg"
    function typefilelist($filelist = array(), $ext_filter = array(".gif", ".jpg", ".png") ) {
    	$res = array();
    	if (!empty($ext_filter)) {
    		foreach ($filelist as $file) {
    			// if (!in_array(substr(strtolower(stristr($file, '.')), +1), $ext_filter)) // $ext_filter = array("gif", "jpg", "png")
    
    			// http://php.net/manual/ru/function.strrchr.php
    			// strrchr() - Находит последнее вхождение символа в строке
    			// http://php.net/manual/ru/function.strrpos.php
    			// strrpos() - Возвращает позицию последнего вхождения подстроки в строке
    
    			$s1 = strtolower(substr($file, (strrpos($file, '.')+1))); // БЕЗ ТОЧКИ 
    			$s = strtolower(substr($file, strrpos($file, '.'))); // $s = substr($file, strrchr($file, '.'));
    			// echo "<h4>file=$file s=$s s1=$s1</h4>";
    
    			 if (in_array($s1, $ext_filter) or in_array($s, $ext_filter)) 
    				$res[] = $file;
    		}
    	} else 
    		$res = $filelist;
    	return $res;
    }

    примеры использования:

    $image_files = makefilelist(IMAGES."smiley/", ".|..|index.php", true);
    
    $image_list = "<option value=''></option>\n"; // делаем список всех смайлов в папке
    $image_list .= makefileopts($image_files, $smiley_image); // делаем <options> // $smiley_image - выбранная картинка, по умочанию $smiley_image=""; 
    
    echo "<select name='smiley_image' id='smiley_image' >".$image_list."</select>\n";

    как их внедрить в настройки темы я пока не вникал ещё

    • Ответ изменён 2 недели, 3 дня назад пользователем v0van.
    • Ответ изменён 2 недели, 3 дня назад пользователем v0van.
    • Ответ изменён 2 недели, 3 дня назад пользователем v0van.
Просмотр 2 ответов — с 1 по 2 (всего 2)